diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
deleted file mode 100644
index c78502f4..00000000
--- a/.github/FUNDING.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-# These are supported funding model platforms
-
-github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
-patreon: # Replace with a single Patreon username
-open_collective: # Replace with a single Open Collective username
-ko_fi: alshedivat
-tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
-community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
-liberapay: # Replace with a single Liberapay username
-issuehunt: # Replace with a single IssueHunt username
-otechie: # Replace with a single Otechie username
-custom: # ['https://www.buymeacoffee.com/TkFxuKo']
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
deleted file mode 100644
index 511f5851..00000000
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-name: Bug report
-about: Create a report to help us improve
-title: ''
-labels: bug
-assignees: ''
-
----
-
-**Acknowledge the following**
-- [ ] I carefully read and followed the [Getting Started](https://github.com/alshedivat/al-folio#getting-started) guide.
-- [ ] I read through [FAQ](https://github.com/alshedivat/al-folio#faq) and searched through the [past issues](https://github.com/alshedivat/al-folio/issues), none of which addressed my issue.
-- [ ] The issue I am raising is a potential bug in al-folio and not just a usage question. [For usage questions, please post in the [Discussions](https://github.com/alshedivat/al-folio/discussions) instead of raising an issue.]
-
-**Describe the bug**
-A clear and concise description of what the bug is.
-
-**To Reproduce**
-Steps to reproduce the behavior:
-1. Go to '...'
-2. Click on '....'
-3. Scroll down to '....'
-4. See error
-
-**Expected behavior**
-A clear and concise description of what you expected to happen.
-
-**Screenshots**
-If applicable, add screenshots to help explain your problem.
-
-**System (please complete the following information):**
- - OS: [e.g. iOS]
- - Browser (and its version) [e.g. chrome, safari]
- - Jekyll version [e.g. 3.8.7]
-- Ruby version [e.g. 2.6.5]
-
-**Additional context**
-Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
deleted file mode 100644
index 11fc491e..00000000
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-name: Feature request
-about: Suggest an idea for this project
-title: ''
-labels: enhancement
-assignees: ''
-
----
-
-**Is your feature request related to a problem? Please describe.**
-A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
-
-**Describe the solution you'd like**
-A clear and concise description of what you want to happen.
-
-**Describe alternatives you've considered**
-A clear and concise description of any alternative solutions or features you've considered.
-
-**Additional context**
-Add any other context or screenshots about the feature request here.
diff --git a/.github/stale.yml b/.github/stale.yml
deleted file mode 100644
index 8ec2004d..00000000
--- a/.github/stale.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-# Number of days of inactivity before an issue becomes stale
-daysUntilStale: 60
-# Number of days of inactivity before a stale issue is closed
-daysUntilClose: 7
-# Issues with these labels will never be considered stale
-exemptLabels:
- - pinned
- - security
- - enhancement
-# Label to use when marking an issue as stale
-staleLabel: wontfix
-# Comment to post when marking an issue as stale. Set to `false` to disable
-markComment: >
- This issue has been automatically marked as stale because it has not had
- recent activity. It will be closed if no further activity occurs. Thank you
- for your contributions.
-# Comment to post when closing a stale issue. Set to `false` to disable
-closeComment: false
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
deleted file mode 100644
index 0fc24dcd..00000000
--- a/.github/workflows/deploy.yml
+++ /dev/null
@@ -1,51 +0,0 @@
-name: Deploy
-
-on:
- push:
- branches:
- - master
- - main
- pull_request:
- branches:
- - master
- - main
-
-jobs:
- deploy:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout code
- uses: actions/checkout@v2
- - name: Setup Ruby
- uses: ruby/setup-ruby@v1
- with:
- ruby-version: '3.0.2'
- - name: Enable bundler cache
- uses: actions/cache@v2
- with:
- path: vendor/bundle
- key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
- restore-keys: |
- ${{ runner.os }}-gems-
- - name: Install deps
- run: |
- gem install bundler
- bundle config path vendor/bundle
- bundle install --jobs 4 --retry 3
- npm install -g mermaid.cli
- - name: Setup deploy options
- id: setup
- run: |
- git config --global user.name "GitHub Action"
- git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
- if [[ ${GITHUB_REF} = refs/pull/*/merge ]]; then # pull request
- echo "::set-output name=SRC_BRANCH::${GITHUB_HEAD_REF}"
- echo "::set-output name=NO_PUSH::--no-push"
- elif [[ ${GITHUB_REF} = refs/heads/* ]]; then # branch, e.g. master, source etc
- echo "::set-output name=SRC_BRANCH::${GITHUB_REF#refs/heads/}"
- fi
- echo "::set-output name=DEPLOY_BRANCH::gh-pages"
- - name: Deploy website
- run: yes | bin/deploy --verbose ${{ steps.setup.outputs.NO_PUSH }}
- --src ${{ steps.setup.outputs.SRC_BRANCH }}
- --deploy ${{ steps.setup.outputs.DEPLOY_BRANCH }}
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 328023ab..00000000
--- a/.travis.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-language: ruby
-rvm:
- - 2.4.1
-
-# Assume bundler is being used, therefore
-# the `install` step will run `bundle install` by default.
-script: ./bin/cibuild
-
-env:
- global:
- - NOKOGIRI_USE_SYSTEM_LIBRARIES=true # speeds up installation of html-proofer
-
-sudo: false # route your build to the container-based infrastructure for a faster build
-
-cache: bundler # caching bundler gem packages will speed up build
-
-# Optional: disable email notifications about the outcome of your builds
-notifications:
- email: false
diff --git a/404.html b/404.html
index 929fc572..4805a7bb 100644
--- a/404.html
+++ b/404.html
@@ -1,9 +1,160 @@
----
-layout: page
-permalink: /404.html
-title: "Page not found"
-description: "Looks like there has been a mistake. Nothing exists here."
-redirect: true
----
-
-
You will be redirected to the main page within 3 seconds. If not redirected, please click here.
diff --git a/_news/announcement_1.md b/_news/announcement_1.md
deleted file mode 100644
index 98e5af5c..00000000
--- a/_news/announcement_1.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: post
-date: 2015-10-22 15:59:00-0400
-inline: true
----
-
-A simple inline announcement.
diff --git a/_news/announcement_10.md b/_news/announcement_10.md
deleted file mode 100644
index be886ef0..00000000
--- a/_news/announcement_10.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: post
-date: 2021-11-01 00:00:00-0400
-inline: true
----
-
-Our paper ***Shape-morphing Mechanical Metamaterials*** has been published in CAD.
diff --git a/_news/announcement_11.md b/_news/announcement_11.md
deleted file mode 100644
index f00601d3..00000000
--- a/_news/announcement_11.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: post
-date: 2021-12-01 00:00:00-0400
-inline: true
----
-
-My Phd thesis ***Construction of Meshes and Smooth Surfaces in Architectural Geometry*** wins the Outstanding Doctoral Dissertation Award 2020 in DUT.
diff --git a/_news/announcement_12.md b/_news/announcement_12.md
deleted file mode 100644
index d49080a6..00000000
--- a/_news/announcement_12.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: post
-date: 2022-03-01 00:00:00-0400
-inline: true
----
-
-Our paper ***Characteristic parameterizations of surfaces with a constant ratio of principal curvatures*** has been published in CAGD.
diff --git a/_news/announcement_13.md b/_news/announcement_13.md
deleted file mode 100644
index cf1c82a6..00000000
--- a/_news/announcement_13.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: post
-date: 2022-06-23 00:00:00-0400
-inline: true
----
-
-I gave a talk about ***Designing Asymptotic Geodesic Hybrid Gridshells*** in the ***Curves and Surfaces 2022*** live conference in Arcachon, France.
diff --git a/_news/announcement_14.md b/_news/announcement_14.md
deleted file mode 100644
index d5823a13..00000000
--- a/_news/announcement_14.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: post
-date: 2022-07-30 00:00:00-0400
-inline: true
----
-
-Our paper ***Designing asymptotic geodesic hybrid gridshells*** has been published in Computer-Aided Design (CAD).
diff --git a/_news/announcement_15.md b/_news/announcement_15.md
deleted file mode 100644
index c65c5cdf..00000000
--- a/_news/announcement_15.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: post
-date: 2022-12-24 00:00:00-0400
-inline: true
----
-
-Our paper ***On Helical Surfaces with a Constant Ratio of Principal Curvatures*** has been published in Beiträge zur Algebra und Geometrie.
diff --git a/_news/announcement_16.md b/_news/announcement_16.md
deleted file mode 100644
index 4612124b..00000000
--- a/_news/announcement_16.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: post
-date: 2022-12-21 00:00:00-0400
-inline: true
----
-
-Our paper ***Architectural Structures from Quad Meshes with Planar Parameter Lines*** has been published in Computer-Aided Design (CAD).
diff --git a/_news/announcement_17.md b/_news/announcement_17.md
deleted file mode 100644
index 3c7065ee..00000000
--- a/_news/announcement_17.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: post
-date: 2023-04-21 00:00:00-0400
-inline: true
----
-
-Our paper ***Asymptotic Geodesic Hybrid Timber Gridshell*** has been accepted by the Advances in Architectural Geometry (AAG 2023) conference, which will take place from Oct. 4th to 7th in Stuttgart, Germany.
diff --git a/_news/announcement_18.md b/_news/announcement_18.md
deleted file mode 100644
index d18b5ea5..00000000
--- a/_news/announcement_18.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: post
-date: 2023-05-31 00:00:00-0400
-inline: true
----
-
-Our paper ***Discrete Orthogonal Structures*** has been accepted by the Shape Modeling International (SMI 2023) conference, which will take place from July 4th to 6th in Genova, Italy.
diff --git a/_news/announcement_19.md b/_news/announcement_19.md
deleted file mode 100644
index c8ea6449..00000000
--- a/_news/announcement_19.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: post
-date: 2023-12-01 00:00:00-0400
-inline: true
----
-
-Our paper ***Rectifying Strip Patterns*** has been accepted by the SIGGRAPH Asia 2023 conference, which will take place in Sydney, Australia during Dec.12-15.
diff --git a/_news/announcement_2.md b/_news/announcement_2.md
deleted file mode 100644
index dbd4b4d4..00000000
--- a/_news/announcement_2.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-layout: post
-title: A long announcement with details
-date: 2015-11-07 16:11:00-0400
-inline: false
----
-
-Announcements and news can be much longer than just quick inline posts. In fact, they can have all the features available for the standard blog posts. See below.
-
-***
-
-Jean shorts raw denim Vice normcore, art party High Life PBR skateboard stumptown vinyl kitsch. Four loko meh 8-bit, tousled banh mi tilde forage Schlitz dreamcatcher twee 3 wolf moon. Chambray asymmetrical paleo salvia, sartorial umami four loko master cleanse drinking vinegar brunch. Pinterest DIY authentic Schlitz, hoodie Intelligentsia butcher trust fund brunch shabby chic Kickstarter forage flexitarian. Direct trade cold-pressed meggings stumptown plaid, pop-up taxidermy. Hoodie XOXO fingerstache scenester Echo Park. Plaid ugh Wes Anderson, freegan pug selvage fanny pack leggings pickled food truck DIY irony Banksy.
-
-#### Hipster list
-
-
brunch
-
fixie
-
raybans
-
messenger bag
-
-
-Hoodie Thundercats retro, tote bag 8-bit Godard craft beer gastropub. Truffaut Tumblr taxidermy, raw denim Kickstarter sartorial dreamcatcher. Quinoa chambray slow-carb salvia readymade, bicycle rights 90's yr typewriter selfies letterpress cardigan vegan.
-
-***
-
-Pug heirloom High Life vinyl swag, single-origin coffee four dollar toast taxidermy reprehenderit fap distillery master cleanse locavore. Est anim sapiente leggings Brooklyn ea. Thundercats locavore excepteur veniam eiusmod. Raw denim Truffaut Schlitz, migas sapiente Portland VHS twee Bushwick Marfa typewriter retro id keytar.
-
-> We do not grow absolutely, chronologically. We grow sometimes in one dimension, and not in another, unevenly. We grow partially. We are relative. We are mature in one realm, childish in another.
-> —Anais Nin
-
-Fap aliqua qui, scenester pug Echo Park polaroid irony shabby chic ex cardigan church-key Odd Future accusamus. Blog stumptown sartorial squid, gastropub duis aesthetic Truffaut vero. Pinterest tilde twee, odio mumblecore jean shorts lumbersexual.
diff --git a/_news/announcement_3.md b/_news/announcement_3.md
deleted file mode 100644
index d9072191..00000000
--- a/_news/announcement_3.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: post
-date: 2016-01-15 07:59:00-0400
-inline: true
----
-
-A simple inline announcement with Markdown emoji! :sparkles: :smile:
diff --git a/_news/announcement_4.md b/_news/announcement_4.md
deleted file mode 100644
index bf8bf9c1..00000000
--- a/_news/announcement_4.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: post
-date: 2019-08-28 00:00:00-0400
-inline: true
----
-
-Our paper ***Discrete Geodesic Parallel Coordinates*** has been accepted by ACM SIGGRAPH Asia 2019.
diff --git a/_news/announcement_5.md b/_news/announcement_5.md
deleted file mode 100644
index be96ec24..00000000
--- a/_news/announcement_5.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: post
-date: 2019-11-18 00:00:00-0400
-inline: true
----
-
-I gave a presentation together with Davide Pellis about ***Discrete Geodesic Parallel Coordinates*** in SIGGRAPH Asia 2019 in Brisbane.
diff --git a/_news/announcement_6.md b/_news/announcement_6.md
deleted file mode 100644
index 37e42155..00000000
--- a/_news/announcement_6.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: post
-date: 2020-03-18 00:00:00-0400
-inline: true
----
-
-I successfully defended my thesis titled ***Construction of Mesh and Smooth Surfaces in Architectural Geometry*** online.
diff --git a/_news/announcement_7.md b/_news/announcement_7.md
deleted file mode 100644
index 9be37f24..00000000
--- a/_news/announcement_7.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: post
-date: 2020-05-01 00:00:00-0400
-inline: true
----
-
-Our paper ***Principal Symmetric Meshes*** has been accepted by ACM SIGGRAPH 2020.
diff --git a/_news/announcement_8.md b/_news/announcement_8.md
deleted file mode 100644
index 72bfce98..00000000
--- a/_news/announcement_8.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-layout: post
-date: 2020-06-01 00:00:00-0400
-inline: true
----
-Our paper ***Architectural freeform surfaces designed for cost-effective paneling through mold re-use*** has been accepted by AAG 2020.
diff --git a/_news/announcement_9.md b/_news/announcement_9.md
deleted file mode 100644
index b7cd32e6..00000000
--- a/_news/announcement_9.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: post
-date: 2021-08-01 00:00:00-0400
-inline: true
----
-
-Our paper ***Using isometries for computational design and fabrication*** has been presented in SIGGRAPH 2021.
diff --git a/_pages/about.md b/_pages/about.md
deleted file mode 100644
index d7bd0cba..00000000
--- a/_pages/about.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-layout: about
-title: Hui Wang (王慧)
-permalink: /
-subtitle:
diff --git a/_pages/repositories.md b/_pages/repositories.md
deleted file mode 100644
index 9b9ad3a4..00000000
--- a/_pages/repositories.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-layout: page
-permalink: /repositories/
-title: repositories
-description: #Edit the `_data/repositories.yml` and change the `github_users` and `github_repos` lists to include your own GitHub profile and repositories.
-nav: false
-nav_order: 3
----
-
-## GitHub users
-
-{% if site.data.repositories.github_users %}
-
- {% for user in site.data.repositories.github_users %}
- {% include repository/repo_user.html username=user %}
- {% endfor %}
-
-
----
-
-{% if site.repo_trophies.enabled %}
-{% for user in site.data.repositories.github_users %}
- {% if site.data.repositories.github_users.size > 1 %}
-
{{ user }}
- {% endif %}
-
- {% include repository/repo_trophies.html username=user %}
-
- 水桥的特点是无论是否有船通过,以及无论船只大小,桥面感受到的压力几乎不变.
- 这里有简单的物理原理分析['Physics and the Magdeburg Water Bridge'](https://www.wired.com/2011/10/physics-and-the-magdeburg-water-bridge/)
-
-
-
-------
-
-
-- #### 《影响力》
-
- > 喜欢或信赖某个人的理由: 外表魅力, 相似性, 恭维, 接触和合作.
-
- > 头衔除了能让陌生人表现更恭顺, 还能让有头衔的人在旁人眼里显得更高大.
-
- > 我们对权威人士的下意识反应有一很重要的特性: 一旦处于“按一下就播放”的模式, 只要拿出权威的象征符号就能将我们降服了. (失去辨别能力的毫无抵抗力了.)
-
- > 社会认同原理: 95%的人都爱模仿别人, 只有 5%的人能首先发起行动, 所以想要把人说服, 我们提供任何证据的效果都比不上别人的行动.
-
- > 对那些在特定环境下感到不熟悉, 不肯定的人来说, 社会认同最有说服力,因为这些人必须观察周围,寻找自己该怎么做的证据.
-
-- #### 《两京十五日》
-
- > 车船店脚牙, 无罪也该杀.
-
- > 民为贵, 社稷次之, 君为轻.
-
-- #### 《大学 中庸 论语 孟子说》
-
- > 仁, 人心也; 义, 人路也. 舍其路而弗由, 放其心而不知求, 哀哉! 人有鸡犬放,而知求之; 有放心而不知求. 学问之道无他, 求其放心而已矣.
- >
- > Benevolence is a person’s heart, and righteousness is a person’s path. What a pitiful thing to abandon your path and not follow it or lose your heart and not search for it. If a person loses a chicken or dog, he knows enough to search for it. But people who lose their hearts don't know the same. The principle behind learning is none other than searching for one's lost heart.
-
-- #### 《史记,世说新语》
-
- > 天下熙熙皆为利来, 天下攘攘皆为利往.
-
-- #### 《庄子说》
-
- > 人世的生活在庄子看来是“无生命的秩序”, 他追求的是“有生命的无秩序”.
-
-- #### 《Interstellar 星际穿越》
-
- > Murphy’s Law — whatever can happen will happen.
-
- > Love means social utility, child rearing, social bonding. 爱意味着社会效用, 生儿育女, 人际往来.
-
- > Love is the one thing we’re capable of perceiving that transcends dimensions of time and space. 爱是一种力量,我们能够穿越时空的维度感受到它的存在.
-
- > Love, like gravity, which could move across time and dimensions. 爱,如重力一样, 能贯穿时空.
-
-------
-
-
Miscellaneous其他
-
-- #### [Mathematics for the Liberal Arts 针对文科生的数学](https://courses.lumenlearning.com/waymakermath4libarts/)
-
- 由12 个模块组成, 有分数, 统计, 概率等内容及应用介绍.
-
-- #### [线性代数课本](http://joshua.smcvt.edu/linearalgebra/#current_version)
-
- 美国本科生线性代数免费课本.
-
-- #### [计算机科学(CS)专业课程](https://github.com/mbinary/USTC-CS-Courses-Resource)
-
-- #### [Python3 入门讲解](https://www.tutorialdocs.com/tutorial/python3/home.html)
-
-- #### [Python入门练习题](http://www.practicepython.org/)
-
-- #### [Computer Graphics from Scratch](https://gabrielgambetta.com/computer-graphics-from-scratch/)
-
- 计算机图形学入门介绍.
-
-- #### [Code Beautifya](https://codebeautify.org/)
-
- 美化各种代码.
-
-- #### [AIArtists.org](https://aiartists.org/ai-generated-art-tools)
-
- AI 生成文字, 图形, 数据, 音乐等软件平台介绍.
-
-- #### [肌肉Wiki](https://musclewiki.com/)
-
- 认识每块肌肉, 提供其锻炼方法,有视频讲解.
-
-------
-
-> 在别人眼里, 数学对于数学家是很容易的.
->
-> 错了, 那是一场斗争, 艰苦而孤独,不确定能得到成果,而且需要很长时间的奋斗.
->
-> 数学家是热爱斗争的人.
->
-> —— John Urschel
-
diff --git a/_posts/2021-03-31-issue3.md b/_posts/2021-03-31-issue3.md
deleted file mode 100644
index b31b01db..00000000
--- a/_posts/2021-03-31-issue3.md
+++ /dev/null
@@ -1,240 +0,0 @@
----
-layout: post
-title: ArchGeo建筑几何(第 3 期)
-date: 2021-03-31 21:01:00
-description: 未来超高建筑
-tags: images
-categories: ArchGeo
----
-
-##### Images from the internet. If there is any copyright infringement, please notify me at once and I'll delete it.
-
-------
-
-
-
-
-#### 《Born a crime (生而有罪)》 --- Trevor Noah
-
- > The triumph of democracy over apartheid is sometimes called the Bloodless Revolution. It is called that because very little white blood was spilled. Black blood ran in the streets.
-
- > The first thing I learned about having money was that it gives you choices. People don’t want to be rich. They want to be able to choose. The richer you are, the more choices you have. That is the freedom of money.
-
- > We spend so much time being afraid of failure, afraid of rejection. But regret is the thing we should fear most. Failure is an answer. Rejection is an answer. Regret is an eternal question you will never have the answer to. “What if…” “If only…” “I wonder what would have…” You will never, never know, and it will haunt you for the rest of your days.
-
-------
-
Miscellaneous其他
-
-1. #### [改变图片的dpi值](https://convert.town/image-dpi)
-
- 免费在线修改图片dpi值.
-
-2. #### [Parametric House](https://parametrichouse.com/)
-
- Grasshopper实现参数化设计非常众多,相对全面的视频介绍,部分免费.
-
-3. #### [Controlmad](https://online.controlmad.com/users/sign_in)
-
- Rhino, Grasshopper,及Python入门介绍, 部分免费.
-
-4. #### [Parametric Design](https://bimcorner.com/parametric-design/)
-
- Grasshopper常用命令,快捷键,小技巧等视频免费介绍.
-
-
-------
-
-
-
diff --git a/_posts/2021-10-31-issue10.md b/_posts/2021-10-31-issue10.md
deleted file mode 100644
index e6830de0..00000000
--- a/_posts/2021-10-31-issue10.md
+++ /dev/null
@@ -1,130 +0,0 @@
----
-layout: post
-title: ArchGeo建筑几何(第 10 期)
-date: 2021-10-31 21:01:00
-description: 鱿鱼游戏
-tags: images
-categories: ArchGeo
----
-##### Images from the internet. If there is any copyright infringement, please notify me at once and I'll delete it.
-------
-
-
-
-#### 《Born a crime (生而有罪)》 --- Trevor Noah
-
- > "Learn from your past and be better because of your past," she would say, "but don't cry about your past. Life is fully of pain. Let the pain sharpen you, but don't hold on to it. Don't be bitter."
-
- > Revenge truly is sweet. It takes you to a dark place, but, man, it satisfies a thirst.
-
- > People always lecture the poor: "Take responsibility for yourself! Make something of yourself!" But with what raw materials are the poor to make something of themselves.
-
- > People love to say,"Give a man a fish, and he'll eat for a day. Teach a man to fish, and he'll eat for a lifetime." What they don't say is,"And it would be nice if you gave him a fishing rod."That's the part of the analogy that's missing.
-
-------
-
-
-
-
Miscellaneous其他
-
-1. #### [唐诗三百首的英文信息](https://tingsong-ou.github.io/300-Tang-Poems/)
-
-2. #### [唐诗宋词英文翻译](https://28utscprojects.wordpress.com/)
-
-------
-
-
-
diff --git a/_posts/2021-11-30-issue11.md b/_posts/2021-11-30-issue11.md
deleted file mode 100644
index ede21f02..00000000
--- a/_posts/2021-11-30-issue11.md
+++ /dev/null
@@ -1,109 +0,0 @@
----
-layout: post
-title: ArchGeo建筑几何(第 11 期)
-date: 2021-11-30 21:01:00
-description: 熊猫基地瞭望塔
-tags: images
-categories: ArchGeo
----
-##### Images from the internet. If there is any copyright infringement, please notify me at once and I'll delete it.
-------
-
-
-
-- #### 《Born a crime (生而有罪)》 --- Trevor Noah
-
- > Nothing feels like it was there yesterday, and nothing feels like it will be there tomorrow, but every day it looks exactly the same.
-
- > Hustling is to work what surfing the Internet is to reading.If you add up how much you read in a year on the Internet --tweets, Facebook posts, lists-- you've read the equivalent of a shit ton of books, but in fact you've read no books in a year. When I look back on it, that's what hustling was, It's maximal effort put into minimal gain. It's a hamster weel. If I'd put all that energy into studying I'd have earned an MBA. Instead I was majoring in hustling, something no universtiy would give me a degree for.
-
-- #### 《Dune(沙丘)》 --- Frank Herbert
-
- > .."作为统治者, 必须学会说服而不是迫人屈服, 统治者必须拿出最好的咖啡炉, 吸引最优秀的人才."
-
- > 想通过中止一个过程来理解它,那是不可能的事. 理解必须与过程的发展同步, 必须融入其中, 与其一同发展.
-
- > 我绝不能害怕. 恐惧会扼杀思维能力,是潜伏的死神,会彻底毁灭一个人. 我要容忍它,让它掠过我的心头,穿越我的身心. 当这一切过去之后,我将睁开心灵深处的眼睛,审视它的轨迹. 恐惧如风,风过无痕,惟有我依然屹立.
-
-------
-
-
diff --git a/_posts/2021-12-31-issue12.md b/_posts/2021-12-31-issue12.md
deleted file mode 100644
index 6622a6ca..00000000
--- a/_posts/2021-12-31-issue12.md
+++ /dev/null
@@ -1,205 +0,0 @@
----
-layout: post
-title: ArchGeo建筑几何(第 12 期)
-date: 2021-12-31 21:01:00
-description: 年终分享
-tags: images
-categories: ArchGeo
----
-##### Images from the internet. If there is any copyright infringement, please notify me at once and I'll delete it.
-------
-
-
-
-2021年 第 4 期:[AAG 会议](https://www.huiwang.me/blog/2021/issue4/)
diff --git a/_posts/2022-05-28-issue17.md b/_posts/2022-05-28-issue17.md
deleted file mode 100644
index 408e188a..00000000
--- a/_posts/2022-05-28-issue17.md
+++ /dev/null
@@ -1,143 +0,0 @@
----
-layout: post
-title: ArchGeo建筑几何(第 17 期)
-date: 2022-05-28 00:01:00
-description: 土耳其建筑
-tags: images
-categories: ArchGeo
----
-
-
-Part images from the internet. If there is any copyright infringement, please notify me at once and I'll delete it.
-
-
-
-2021年 第 5 期:[迪拜世博会2020](https://www.huiwang.me/blog/2021/issue5/)
diff --git a/_posts/2022-06-28-issue18.md b/_posts/2022-06-28-issue18.md
deleted file mode 100644
index edb8045a..00000000
--- a/_posts/2022-06-28-issue18.md
+++ /dev/null
@@ -1,132 +0,0 @@
----
-layout: post
-title: ArchGeo建筑几何(第 18 期)
-date: 2022-06-28 00:01:00
-description: 波尔多葡萄酒博物馆
-tags: images
-categories: ArchGeo
----
-
-
-Part images from the internet. If there is any copyright infringement, please notify me at once and I'll delete it.
-
-
-
-2021年 第 7 期:[东京奥运会](https://www.huiwang.me/blog/2021/issue7/)
diff --git a/_posts/2022-08-31-issue20.md b/_posts/2022-08-31-issue20.md
deleted file mode 100644
index 9337a239..00000000
--- a/_posts/2022-08-31-issue20.md
+++ /dev/null
@@ -1,134 +0,0 @@
----
-layout: post
-title: ArchGeo建筑几何(第 20 期)
-date: 2022-08-31 00:01:00
-description: SIGGRAPH 会议
-tags: images
-categories: ArchGeo
----
-
-Part of images from the internet. If there is any copyright infringement, please notify me at once and I'll delete it.
-
-
-
-
-2021年 第 8 期:[SIGGRAPH会议](https://www.huiwang.me/blog/2021/issue8/)
\ No newline at end of file
diff --git a/_posts/2022-09-04-issue21.md b/_posts/2022-09-04-issue21.md
deleted file mode 100644
index 6b3da734..00000000
--- a/_posts/2022-09-04-issue21.md
+++ /dev/null
@@ -1,145 +0,0 @@
----
-layout: post
-title: ArchGeo建筑几何(第 21 期)
-date: 2022-09-04 00:01:00
-description: 温哥华建筑
-tags: images
-categories: ArchGeo
----
-
-Parts of images from the internet. If there is any copyright infringement, please notify me at once and I'll delete it.
-
-
-
-2021年 第 9 期:[景观雕塑](https://www.huiwang.me/blog/2021/issue9/)
diff --git a/_posts/2022-10-30-issue22.md b/_posts/2022-10-30-issue22.md
deleted file mode 100644
index e4bc6b16..00000000
--- a/_posts/2022-10-30-issue22.md
+++ /dev/null
@@ -1,136 +0,0 @@
----
-layout: post
-title: ArchGeo建筑几何(第 22 期)
-date: 2022-10-30 00:01:00
-description: 利雅得建筑
-tags: images
-categories: ArchGeo
----
-
-Parts of images from the internet. If there is any copyright infringement, please notify me at once and I'll delete it.
-
-
-
-Very happy to attend the one-week (29th Jan. - 2nd Feb.) Computational Architecture workshop held by VCC, KAUST. 5 experts(Eike Schling, Dominik L. Michels, Florian Rist, Helmut Pottmann and Peter Wonka)from architecture, geometry and computer science gave related talks about the reasonable and scientific ways to design things. I attended it together with 13 other architectural undergraduates selected from Saudi Arabia. It was my first time attending an architectural workshop, very interesting and fruitful! Not only I learnt how are the differences between theory, optimization results and the actual constructed model, but I also learnt some new experiences from the 10 girls and 3 boys, how they came up with their design ideas, how they handled construction details, and how they caught up with time to gave attractive presentations successfully.
-
- This model was made together with Xinye Li and Bolun Wang.
- We bent 12 straight congruent strips and fixed them with 36 joints at computed positions to construct.
- We tried to get an asymptotic net as orthogonal as possible, which is corresponding to a minimal net.
- It is a trivial result, but it took us two days to finish it (in fact, we replaced the first day's plan and only took one day to finish together with the presentation).
- During the construction time, we met many small problems, like how to choose good joints, how to bend the strips against with its resilience, how to bear the small pins from the FRP strips, how to group the 12 strips into a near rotational shape, how to make the intersection angle as 90 degree as possible...
- Thanksfully, the result was not bad.
-
- After we tested with three kinds of different joints, the final one can even make the two families of strips rotate, which forms the kinetic behavior of the asymptotic shell (left).
- This deformed progress can be simulated by Kangoroo in Grasshoppper.
- The two families of strips can be unrolled into flat rectangular shape in plane.
-
-
-
-
-##### Presentation
-
-I gave the around 10mins' presentation together with Xinye, here is the pdf
-
-
diff --git a/_posts/2023-10-12-issue25.md b/_posts/2023-10-12-issue25.md
deleted file mode 100644
index 07a9b7f6..00000000
--- a/_posts/2023-10-12-issue25.md
+++ /dev/null
@@ -1,65 +0,0 @@
----
-layout: post
-title: Curved folding shell
-date: 2023-10-12 00:01:00
-description: AAG2023/Origami workshop in University of Stuttgart
-tags: workshop
-categories: ArchGeo
----
-
-
-During the first two days of the [Advances in Architectural Geometry (AAG2023)](http://aag2023.com) conference held from October 4-7 in Stuggart, I attended the Structural Origami workshop led by Tomohiro Tachi, Rupert Maleczek and Yves Klett.
-
-
- Left: The flat patterns reveal the 'periodic' trends of the curves. When folded along these curved creases, the model takes on montains and valleys in the convex '凸' and concave '凹' ways, which showcases more interesting characteristics compared to the common Curved Pleat Structures.
- Right: There are multiple degrees of freedom to transform the model isometrically. This particular state demonstrates higher stiffness and stability.
-
- The 2D pattern is designed using a parametric approach. We begin with two scaled ellipses, and then adjust the position and size of the central ellipse. As a result, the corresponding curved patterns are designed accordingly. To export the file, we use Rhino and save it as a .svg file.
-
- The curved folding process can be simulated using the online algorithm 'Origami Simulator'. The results of the simulation are similar to the physical model.
-
-
-
-A research paper on this topic will be discussed in the near future.
-
diff --git a/_projects/10_fun.md b/_projects/10_fun.md
deleted file mode 100644
index 6281126d..00000000
--- a/_projects/10_fun.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-layout: page
-title: Trefoil Knot
-description: Rhino(Grasshopper)
-img: assets/img/fun/knot.png
-importance: 6
-category: fun
----
-
-
-
-------
-##### **Downloads**
-See the [Parametric House](https://parametrichouse.com/trefoil-knot/).
-Rhino file in [Google Drive](https://drive.google.com/file/d/1xtiewe6DK7VV_WmT_YKMW4tCtO2-R1zM/view?usp=sharing).
\ No newline at end of file
diff --git a/_projects/10_project.md b/_projects/10_project.md
deleted file mode 100644
index 9b022752..00000000
--- a/_projects/10_project.md
+++ /dev/null
@@ -1,100 +0,0 @@
----
-layout: page
-title: Discrete Orthogonal Structures
-description: Orthogonal multi-nets, Principal meshes, Developable surfaces, CMC surfaces, Principal stress net
-img: assets/img/proj10/smi_minishell.png
-importance: 1
-category: work
----
-
-------
-
-##### **Publication**
-It was accepted by the **Shape Modeling International (SMI2023)** conference, and presented during the **International Geometry Summit (IGS2023)** from July 3rd to 7th in Genova, Italy.
-This paper won the **$${\color{red}Best Paper (Honourable Mention)}$$** out of the 20 accepted papers (63 submissions).
-It has been published in the [Computers & Graphics journal](https://doi.org/10.1016/j.cag.2023.05.024).
-
- Circular gridshell structure, whose underlying net is an orthogonal principal symmetric net (S-net) with a constant radius, i.e. constant mean curvature net (CMC-net).
-
-
-------
-##### **Downloads**
-See another tutorial in [Parametric House](https://parametrichouse.com/twisting-fractal-2/).
-Grasshopper file in [Google Drive](https://drive.google.com/file/d/1QPhaHug9jG35POq5b6NGiX1DeSSabP12/view?usp=sharing)
\ No newline at end of file
diff --git a/_projects/11_project.md b/_projects/11_project.md
deleted file mode 100644
index 6252c7c9..00000000
--- a/_projects/11_project.md
+++ /dev/null
@@ -1,150 +0,0 @@
----
-layout: page
-title: Rectifying Strip Patterns
-description: Computational design and fabrication, Shading system, Gridshell,Pseudo-geodesic, Developable strips
-
-img: assets/img/proj11/teaser.png
-importance: 1
-category: work
----
-
-------
-##### **Publication**
-ACM Transactions on Graphics;
-Accepted by the **SIGGRAPH Asia 2023** conference (Dec.12-15, Sydney, Australia).
-
-##### **Authors**
-Bolun Wang, Hui Wang, Eike Schling, Helmut Pottmann
-
-##### **Abstract**
-Straight flat strips of inextensible material can be bent into curved strips aligned with arbitrary space curves. The large shape variety of these socalled rectifying strips makes them candidates for shape modeling, especially in applications such as architecture where simple elements are preferred for the fabrication of complex shapes. In this paper, we provide computational tools for the design of shapes from rectifying strips. They can form various patterns and fulfill constraints which are required for specific applications such as gridshells or shading systems. The methodology is based on discrete models of rectifying strips, a discrete level-set formulation and optimization-based constrained mesh design and editing. We also analyse the geometry at nodes and present remarkable quadrilateral arrangements of rectifying strips with torsion-free nodes.
-
-##### **PDF**
-[paper](/assets/pdf/2023SIGA.pdf)
-
-
-
-------
-
-##### **Figures**
-
-Pseudo-geodesic curves of a surface was first studied by Walter Wunderlich in 1950. They are the curves whose osculating planes have a constant angle \\(\theta\\) with the tangent planes of the surface.
-When \\(\theta=90^o\\), they are geodesic;
-when \\(\theta=0^o\\), they are asymptotic curves.
-
-
-
-
-
-
- A smooth pseugo-geodesic on a rotational cylinder can be explicitly represented by $x = \cos(t); y= \sin(t); z = \tan(\theta) ch(t/\tan(\theta))$ with parameter $t$.
- Left: changing interval $t$. Right: changing tilt angle $\theta$.
-
- A family of pseudo-geodesics on a mesh. Left: A family of pseudo-geodesic with $\theta=60^o$ are constructed as level-sets from a triangle mesh. Right: A family of pseudo-geodesics with $\theta=45^o$ are optimized from geodesics ($\theta=90^o$) of the quad mesh, where the binormals along the pseudo-geodesics form the so-called **Rectifying Strips** that are developable.
-
- The rectifying strips, materialized by metal or wodden sheets, along the designed pseudo-geodesics on a free-form surface can be functioned as shading facades.
- Light and shadow effects with time changing from morning to afteroon. Left: outside. Right: inside view with focal lenth 10.
-
- Four facades of an architecture function differently. Left: lighting and shading effects with changing sunlight directions at different time. Center-Right: turn-table views.
-
- Lunchbox provides the Enneper surface models with changable numbers of 'branches'.
-
-
-------
-##### **Downloads**
-See the [Parametric House](https://parametrichouse.com/lunchbox-enneper-surface/).
-Grasshopper file in [Google Drive](https://drive.google.com/file/d/1pudc3s2CmtzmuLIM1DTydb1UY7o6GXPn/view?usp=sharing)
\ No newline at end of file
diff --git a/_projects/12_project.md b/_projects/12_project.md
deleted file mode 100644
index e0dc99bf..00000000
--- a/_projects/12_project.md
+++ /dev/null
@@ -1,54 +0,0 @@
----
-layout: page
-title: Origami shell
-description: Origami model built in AAG2023 workshop
-img: assets/img/proj12/3.png
-importance: 2
-category: work
----
-
-------
-
-During the first two days of the [Advances in Architectural Geometry (AAG2023)](http://aag2023.com) conference held from October 4-7 in Stuggart, I attended the Structural Origami workshop led by Tomohiro Tachi, Rupert Maleczek and Yves Klett. I completed an Origami shell model together with Xinye Li during the workshop.
-
-
-
- Left: The flat patterns reveal the 'periodic' trends of the curves. When folded along these curved creases, the model takes on montains and valleys in the convex '凸' and concave '凹' ways, which showcases more interesting characteristics compared to the common Curved Pleat Structures.
- Right: There are multiple degrees of freedom to transform the model isometrically. This particular state demonstrates higher stiffness and stability.
-
- The 2D pattern is designed using a parametric approach. We begin with two scaled ellipses, and then adjust the position and size of the central ellipse. As a result, the corresponding curved patterns are designed accordingly. To export the file, we use Rhino and save it as a .svg file.
-
- The curved folding process can be simulated using the online algorithm 'Origami Simulator'. The results of the simulation are similar to the physical model.
-
-
-
-A research paper on this topic will be discussed in the near future.
diff --git a/_projects/13_fun.md b/_projects/13_fun.md
deleted file mode 100644
index ee066522..00000000
--- a/_projects/13_fun.md
+++ /dev/null
@@ -1,22 +0,0 @@
----
-layout: page
-title: Voronoi
-description: Rhino(Grasshopper)
-img: assets/img/fun/spiral_voronoi.png
-importance: 7
-category: fun
----
-
-
- I followed a tutorial to design the
- Boiler Suit façade
- by Thomas Heatherwick.
-
-
-
-------
-##### **Downloads**
-See the [Parametric House](https://parametrichouse.com/boiler-suit/).
-Rhino file in [Google Drive](https://drive.google.com/file/d/1fAuhEW_VU8LTB_nf6XUOaykNiADkXmHF/view?usp=sharing).
\ No newline at end of file
diff --git a/_projects/1_project.md b/_projects/1_project.md
deleted file mode 100644
index afb82a6f..00000000
--- a/_projects/1_project.md
+++ /dev/null
@@ -1,85 +0,0 @@
----
-layout: page
-title: Surfaces with a constant ratio of principal curvatures
-description: Discrete differential geometry, Architectural geometry, Weingarten surface, Characteristic parameterization, Constant ratio of principal curvatures, Principal symmetric net
-img: assets/img/paper_2021CRPC.jpg
-importance: 1
-category: work
----
-
-------
-##### **Publication**
-Computer Aided Geometric Design (CAGD)
-
-##### **Authors**
-Hui Wang, Helmut Pottmann
-
-##### **PDF**
-[paper](/assets/pdf/2022_crpc.pdf)
-
-
-
-##### **Abstract**
-Motivated by applications in architectural geometry, we study and compute surfaces with a constant ratio of principal curvatures (CRPC surfaces) based on their characteristic parameterizations. For negative Gaussian curvature K, these parameterizations are asymptotic. For positive K they are conjugate and symmetric with respect to the principal curvature directions. CRPC surfaces are described by characteristic parameterizations whose parameter lines form a constant angle. We use them to derive characteristic parameterizations of rotational CRPC surfaces in a simple geometric way. Pairs of such surfaces with principal curvature ratio k1/k2=±a can be seen as equilibrium shapes and reciprocal force diagrams of each other. We then introduce discrete CRPC surfaces, expressed via discrete isogonal characteristic nets, and show how to efficiently compute them through numerical optimization. In particular, we derive discrete helical and spiral CRPC surfaces. We provide various ways how these and other special types of CRPC surfaces can serve as a basis for computational design of more general CRPC surfaces. Our computational tools may also serve as an experimental basis for mathematical studies of the largely unexplored class of CRPC surfaces.
-
-------
-
-##### **Figures**
-
-
-Fig.1: Architectural design study exhibiting a structure from planar panels based on a discrete CRPC surface with a = 0.45. The constant node angle (≠π/2) and the principal symmetric arrangement lead to a more interesting visual appearance than a mesh aligned with principal curvature directions would have.
-
-
-
-Optimization for the CRPC surface starting from a periodically connected Costa surface with several cuts.
\ No newline at end of file
diff --git a/_projects/20_fun.md b/_projects/20_fun.md
deleted file mode 100644
index ee3256a6..00000000
--- a/_projects/20_fun.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-layout: page
-title: Grass
-description: Blender
-img: assets/img/fun/blender_grass.png
-importance: 10
-category: fun
----
-
-
- I followed a tutorial to make an Earth (spherical one) with texture in Blender. Then I came up with the idea to generate it to torus. I really found some images online... Then I made one like this.
-
-
-------
-##### **Downloads**
-Sphere Earth Blender file in [Google Drive](https://drive.google.com/file/d/110Tmdbw5EfMRT3BOMUh6-e--o_1FjtJB/view?usp=sharing).
-
-Torus Earth Blender file in [Google Drive](https://drive.google.com/file/d/1Yn5dt6StcQZoZgraUNiJgWI6ZXZuTQvk/view?usp=sharing).
-
-See a very very short [video](https://www.bilibili.com/video/BV1iE411E7am?spm_id_from=333.999.0.0) with background sound.
\ No newline at end of file
diff --git a/_projects/23_fun.md b/_projects/23_fun.md
deleted file mode 100644
index da66bf3b..00000000
--- a/_projects/23_fun.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-layout: page
-title: Football
-description: Blender
-img: assets/img/fun/blender_football.png
-importance: 12
-category: fun
----
-
-
- I followed a tutorial to design the
- Phoenix Center
- in Beijing.
-
-
-------
-##### **Downloads**
-Rhino file in [Google Drive](https://drive.google.com/file/d/1xNIVdN0f7_Y_JRzOmx9IerbfhQefUJsK/view?usp=sharing).
\ No newline at end of file
diff --git a/_projects/2_project.md b/_projects/2_project.md
deleted file mode 100644
index 9c8573d5..00000000
--- a/_projects/2_project.md
+++ /dev/null
@@ -1,149 +0,0 @@
----
-layout: page
-title: Isometries for computational design and fabrication
-description: Discrete differential geometry, Computeraided design, Computational fabrication, Architectural geometry, Discrete isometry, Isometric registration, Killing vector field
-img: assets/img/paper_2021SIG.png
-importance: 3
-category: work
----
-
-------
-##### **Publication**
-ACM Transactions on Graphics
-
-##### **Authors**
-Caigui Jiang, Hui Wang, Victor Ceballos Inza, Felix Dellinger, Florian Rist, Johannes Wallner, Helmut Pottmann
-
-##### **PDF**
-[paper](https://www.geometrie.tuwien.ac.at/geom/ig/publications/isoforfab/isoforfab.pdf)
-
-
-
-##### **Abstract**
-We solve the task of representing free forms by an arrangement of panels
-that are manufacturable by precise isometric bending of surfaces made from
-a small number of molds. In fact we manage to solve the paneling task with
-surfaces of constant Gaussian curvature alone. This includes the case of
-developable surfaces which exhibit zero curvature. Our computations are
-based on an existing discrete model of isometric mappings between surfaces
-which for this occasion has been refined to obtain higher numerical accuracy.
-Further topics are interesting connections of the paneling problem with the
-geometry of Killing vector fields, designing and actuating isometries, curved
-folding in the double-curved case, and quad meshes with rigid faces that are
-nevertheless flexible
-
-------
-
-##### **Figures**
-
-
-Fig.: Smooth freeform skins from flexible panels. It turns out that constant
-Gaussian curvature surfaces, i.e., spheres and pseudospheres, provide almost
-universal molds for the manufacturing of panels bending isometrically. Here
-a design by Zaha Hadid Architects is covered by panels struck from a small
-number of spherical molds (red) and pseudospherical molds (blue), as well
-as single-curved panels that are intrinsically flat (white).
-
-
-
-
-Fig.1: Infinitesimal isometries tangential to surfaces (Killing fields) exist on
-surfaces isometric to rotational surfaces (above surfaces all isometric to rotational ones, deformed used the method in ["Discrete Geodesic Parallel Coordinates"](https://www.huiwang.me/projects/5_project) paper). Otherwise
-vector fields that are as Killing as possible yield information on paneling.
-The color coding is according to Gaussian curvature — true Killing fields
-must follow its level sets.
-
-
-
- During the AAG2020 conference workshop, I made and rendered this Asymptotic Gridshell model with rectangular steel slats. Its underlying surface is helicoid, which works well to have nice two families of straight developments.
-
-
-------
-##### **Downloads**
-See [Bowerbird](https://github.com/oberbichler/Bowerbird)
\ No newline at end of file
diff --git a/_projects/31_fun.md b/_projects/31_fun.md
deleted file mode 100644
index 7e72d21f..00000000
--- a/_projects/31_fun.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-layout: page
-title: Subdivision
-description: Rhino(Grasshopper->Weaverbird)
-img: assets/img/fun/para_ex_half_torus1.png
-importance: 5
-category: fun
----
-
-
- Followed a tutorial to design the spherical packings on the subdivided Dodecahedron (top), Icosahedron (center), and Dipyramid (bottom). This is optimized by the Sphere Packing component in Kangaroo Solver.
- However, these packings are not really complete sphere packings. The spheres are NEARLY tangent or intersected to each other, which can be seen from the gaps or overlaps between the circle disks on the right column.
-
-
-
-
-------
-##### **Downloads**
-See the tutorial in [Parametric House](https://parametrichouse.com/sphere-packing/).
-
-Grasshopper file in [Google Drive](https://drive.google.com/file/d/1wtxFjOwZUdkpqSjU8vlVt7k8jrBuO7SV/view?usp=sharing).
\ No newline at end of file
diff --git a/_projects/38_fun.md b/_projects/38_fun.md
deleted file mode 100644
index c29a772d..00000000
--- a/_projects/38_fun.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-layout: page
-title: KAUST Beacon
-description: Rhino
-img: assets/img/fun/beacon_kaust.png
-importance: 2
-category: fun
----
-
-
- Breakwater Beacon is a landmark building of KAUST. It was completed in 2009. The design information can be found
- here . This
- free-download .stl file model in GrabCAD was designed by a 3D printer tutor in KAUST in 2015.
-
-
-
-------
-
-##### **Downloads**
-See an extra [Rhino tutorial](https://www.youtube.com/watch?v=8FaWKGNOAlI).
-
-More details of the [real architecture](https://www.designrulz.com/architecture/2012/12/kaust-beacon/).
-
-A blog shows the process of modeling [Beacon model](http://www.metawati.com/structural-model-kaust-beacon-ii/) by the Architecture Department of Cornell University.
\ No newline at end of file
diff --git a/_projects/39_fun.md b/_projects/39_fun.md
deleted file mode 100644
index 7cd9fb99..00000000
--- a/_projects/39_fun.md
+++ /dev/null
@@ -1,42 +0,0 @@
----
-layout: page
-title: velocity
-description: VisIt
-img: assets/img/fun/visit_flow1.gif
-importance: 3
-category: fun
----
-
-
- VisIt
- is an open-source scientific visualization application, especially for large datasets.
- It's based on VTK, similar to mayavi.
- Above are two velocity flows learned from the
- workshop.
-
- I followed a tutorial to design the
- 春花天桥
- in Shenzhen.
-
-
-------
-##### **Downloads**
-Rhino file in [Google Drive](https://drive.google.com/file/d/1H-mbhU3lD3obkZYuD61CqBaKh1YUTBlY/view?usp=sharing)
\ No newline at end of file
diff --git a/_projects/3_project.md b/_projects/3_project.md
deleted file mode 100644
index 758b5600..00000000
--- a/_projects/3_project.md
+++ /dev/null
@@ -1,107 +0,0 @@
----
-layout: page
-title: Shape-morphing mechanical metamaterials
-description: Kirigami, Auxetic materials, Metamaterials, Shape morphing, Computational fabrication
-img: assets/img/paper_2021CAD.png
-importance: 3
-category: work
----
-
-------
-##### **Publication**
-Computer-Aided Design (CAD)
-
-##### **Authors**
-Caigui Jiang, Florian Rist, Hui Wang, Johannes Wallner, Helmut Pottmann
-
-##### **PDF**
-[paper](https://www.geometrie.tuwien.ac.at/geom/ig/publications/geommaterials/geommaterials.pdf)
-
-
-
-
-##### **Abstract**
-Small-scale cut and fold patterns imposed on sheet material enable its morphing into three-dimensional shapes. This manufacturing paradigm has been receiving much attention in recent years and poses challenges in both fabrication and computation. It is intimately connected with the interpretation of patterned sheets as mechanical metamaterials, typically of negative Poisson ratio. We here present an affirmative solution to a fundamental geometric question, namely the targeted programming of a shape morph. We use optimization to compute kirigami patterns that realize a morph between shapes, in particular between a flat sheet and a surface in space. The shapes involved can be arbitrary; in fact we are able to approximate any mapping between shapes whose principal distortions do not exceed certain bounds. This amounts to a solution of the so-called inverse problem for kirigami cut and fold patterns. The methods we employ include a differential–geometric interpretation of the morph, besides drawing on recent progress in geometric computing.
-
-------
-
-##### **Figures**
-
-
-Fig.: Example of a quad-based metamaterial where a planar closed state morphs to a maximally open spatial state. The computation according to stages 1–3 involves a constant mean stretch mapping from a planar domain to the given design surface at right.
-
-
-Fig.1: Auxetic behavior of regular squares can be considered by square corners gliding on the frame with same speed (the sizes of squares get scaled here).
-
-
-
-Fig.2: Joint optimization of quad-based metamaterials in closed state and fully open spatial state. "Fully open quads" means that all the hole quards are circular.
-
-
-
- Paraview
- is an open-source scientific visualization application.
- Topology Toolkit, short as TTK, as a plugin in ParaView helps to do some calculations and visualization, like getting the critical point, contour curves and segmentation of the shape.
- Above examples learned from the
- workshop.
- ParaView itself also has some special geometry models, like minimal surface, Boy's surface, spiral surfaces et. al.
-
- Referring to the real shell ( Bamboo Structure Project / Pouya Khazaeli Parsa ) in Iran and a recent research project ( Kinetic Structure by Elastic Strips ) by Prof.Yimin Xie's Lab, I designed this twisting shell with twisting strips. Note: during the rotation, the strips get changed from straight ones (i.e. strips with straight boundary) to curved ones (i.e. curved boundary with inflection), they are not isometric to the beginning ones. It's just a imaginary simulation.
-
-
-
-------
-
-##### **Downloads**
-
-See the tutorial in [Parametric House](https://parametrichouse.com/rotating-arcs/).
-
-Download the Rhino file in [Google Drive](https://drive.google.com/file/d/1IRkrH5q5gq3xmhSQoFYoZkFThNtOzbHq/view?usp=sharing).
-
diff --git a/_projects/43_fun.md b/_projects/43_fun.md
deleted file mode 100644
index 0adc7b38..00000000
--- a/_projects/43_fun.md
+++ /dev/null
@@ -1,27 +0,0 @@
----
-layout: page
-title: repetitive pentagonal shell
-description: Rhino(Grasshopper)
-img: assets/img/fun/confluence_park.png
-importance: 5
-category: fun
----
-
-
- Referred to KnitCandela designed by Zaha Hadid Architects. The resulting meshes are regular quad meshes (without singularities), since they are topologically in annulus shape.
-
-
-
-------
-
-##### **Downloads**
-
-See the tutorial in [YouTube](https://www.youtube.com/watch?v=U8ey32KJrGU&list=RDCMUCpJFDcvGuDMVE7GoAvkrGmw&start_radio=1&rv=U8ey32KJrGU&t=1047).
\ No newline at end of file
diff --git a/_projects/45_fun.md b/_projects/45_fun.md
deleted file mode 100644
index 81c9a407..00000000
--- a/_projects/45_fun.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-layout: page
-title: curved-pleated structure
-description: Rhino
-img: assets/img/fun/zahametro.gif
-importance: 1
-category: fun
----
-
-
- Zaha Hadid Architects designed this Metro Station in Ukraine. There are two different structures according to their rendering pictures, one is with 3 curved pleated shells and the other is with 5 curved pleated shells. Here I modeled the later one by Rhino and animated it using Keyshot. Hoping they can come to be constructed one day.
-
- A very simple curved pleated structure from given two boundary curves. Firstly, set two freeform 3D curves as initial boundaries. Secondly, tween the two curves to produce a series of internal curves between them. Thirdly, move up-down the curves. Finally, loft the curves to get the surface.
-
-
-------
-
-##### **Downloads**
-
-See the simple tutorial in YouTube: [Tween curves](https://www.youtube.com/watch?v=YOnwrLFjUSI&t=762s).
\ No newline at end of file
diff --git a/_projects/47_fun.md b/_projects/47_fun.md
deleted file mode 100644
index 9af04b46..00000000
--- a/_projects/47_fun.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-layout: page
-title: Parametric Ruled Bridge
-description: Rhino(Grasshopper)
-img: assets/img/fun/twist_bamboo_bridge.gif
-importance: 2
-category: fun
----
-
-
- I like designer Marc Fornes' colorful and cheerful sculptures, one of his famouse design is a pleated shell for a French school (left). I similarly did this simple pleated shell (center).
- There are several steps to do: 1. get some random points inside a rectangular region. 2. get a Voronoi diagram from the points. 3. do the offset of the polygon and union the region. 4. loft offsets to get a simple mesh and then refine it. 5. float the mesh with some fixed boundary points by Kangaroo optimization. 6. get individual connected strips by the plugin Stripper (right).
- This simple test integrates the modeling and fabrication process: the first 5 steps are for the modeling, and the last step is for fabrication.
-
-
-------
-
-##### **Downloads**
-
-See the tutorial in YouTube: [Mesh Topology](https://www.youtube.com/watch?v=ZNPKYTstQX0&list=RDCMUCwImuwbI4lKk544-FS7A2Yw&start_radio=1&rv=ZNPKYTstQX0&t=367).
\ No newline at end of file
diff --git a/_projects/49_fun.md b/_projects/49_fun.md
deleted file mode 100644
index 49bbc8fa..00000000
--- a/_projects/49_fun.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-layout: page
-title: auxetic quads
-description: Rhino(Grasshopper->Linketix)
-img: assets/img/fun/auxetic_linketix.gif
-importance: 3
-category: fun
----
-
-
- I followed a tutorial to design the weaving pattern pavillion.
-
-
-------
-##### **Downloads**
-See the [Parametric House](https://parametrichouse.com/wavy-pattern/).
-Rhino file in [Google Drive](https://drive.google.com/file/d/1i5IrIUac3fGejbT-pjpQRyDz8tUcs3HZ/view?usp=sharing)
\ No newline at end of file
diff --git a/_projects/4_project.md b/_projects/4_project.md
deleted file mode 100644
index 051130b3..00000000
--- a/_projects/4_project.md
+++ /dev/null
@@ -1,77 +0,0 @@
----
-layout: page
-title: Principal Symmetric Meshes (S-nets)
-description: Discrete differential geometry, Architectural geometry, Computational fabrication, Paneling, Sphere geometries, Curvature adaptive milling
-img: assets/img/paper_2020SIG.png
-importance: 4
-category: work
----
-
-------
-##### **Publication**
-ACM Transactions on Graphics
-
-##### **Authors**
-Davide Pellis∗, Hui Wang∗, Florian Rist, Kilian Martin, Helmut Pottmann, Christian Müller
-(∗Joint first authors)
-
-##### **PDF**
-[paper](https://www.geometrie.tuwien.ac.at/geom/ig/publications/snets/snets.pdf)
-
-
-
-
-
-##### **Abstract**
-The isolines of principal symmetric surface parametrizations run symmetrically to the principal directions. We describe two discrete versions of these
-special nets/quad meshes which are dual to each other and show their usefulness for various applications in the context of fabrication and architectural
-design. Our discretization of a principal symmetric mesh comes naturally
-with a family of spheres, the so-called Meusnier and Mannheim spheres. In
-our representation of principal symmetric meshes, we have direct control
-over the radii of theses spheres and the intersection angles of the parameter
-lines. This facilitates tasks such as generating Weingarten surfaces including constant mean curvature surfaces and minimal surfaces. We illustrate
-the potential of Weingarten surfaces for paneling doubly curved freeform facades by significantly reducing the number of necessary molds. Moreover,
-we have direct access to curvature adaptive tool paths for cylindrical CNC
-milling with circular edges as well as flank milling with rotational cones.
-Furthermore, the construction of curved support structures from congruent
-circular strips is easily managed by constant sphere radii. The underlying
-families of spheres are in a natural way discrete curvature spheres in analogy
-to smooth Möbius and Laguerre geometry which further leads to a novel
-discrete curvature theory for principal symmetric meshes.
-
-
-------
-
-##### **Figures**
-
-Fig.: Architectural design of a modern mountain leisure and tourism center. The geometric shape of the hull is a discrete principal symmetric parametrization
-(an S-net) of a Weingarten surface of type aκ1 + bκ2 = c. The big advantage lies in the fabrication of its doubly curved panels by a substantial
-reduction of necessary molds, as the same mold can be used along curves of constant curvature illustrated by isolines (b). Panels with identical molds are
-clustered together and highlighted by the same color (a). The network of this S-net assumes constant intersection angles which contributes to its aesthetic.
-
-
- I followed a tutorial to design the truss structure.
-
-
-------
-##### **Downloads**
-Rhino file in [Google Drive](https://drive.google.com/file/d/1zgajVwjZzD3qc9vwp4p9aNZ-AFmPeXv3/view?usp=sharing)
\ No newline at end of file
diff --git a/_projects/5_project.md b/_projects/5_project.md
deleted file mode 100644
index 431cdb1b..00000000
--- a/_projects/5_project.md
+++ /dev/null
@@ -1,108 +0,0 @@
----
-layout: page
-title: Discrete Geodesic Parallel Coordinates
-description: Discrete differential geometry, Architectural geometry, Computational fabrication, Paneling, Geodesic, Geodesic strip, Isometry, Geodesic parallel coordinates
-img: assets/img/paper_DGPC.jpg
-importance: 5
-category: work
----
-
-------
-##### **Publication**
-ACM Transactions on Graphics
-
-##### **Authors**
-Hui Wang, Davide Pellis, Florian Rist, Helmut Pottmann, Christian Müller
-
-##### **PDF**
-[paper](https://www.geometrie.tuwien.ac.at/geom/ig/publications/geodesic/geodesic.pdf)
-
-
-
-##### **Abstract**
-Geodesic parallel coordinates are orthogonal nets on surfaces where one
-of the two families of parameter lines are geodesic curves. We describe a
-discrete version of these special surface parameterizations and show that
-they are very useful for specific applications, most of which are related to
-the design and fabrication of surfaces in architecture. With the new discrete surface model, it is easy to control strip widths between neighboring
-geodesics. This facilitates tasks such as cladding a surface with strips of
-originally straight flat material or designing geodesic gridshells and timber
-rib shells. It is also possible to model nearly developable surfaces. These are
-characterized by geodesic strips with almost constant strip widths and are
-used for generating shapes that can be manufactured from materials which
-allow for some stretching or shrinking like felt, leather, or thin wooden
-boards. Most importantly, we show how to constrain the strip width parameters to model a class of intrinsically symmetric surfaces. These surfaces are
-isometric to surfaces of revolution and can be covered with doubly-curved
-panels that are produced with only a few molds when working with flexible
-materials like metal sheets.
-
-
-
-
-------
-
-##### **Figures**
-
-Fig.: Architectural design in reference to designs by architect Frank Gehry. In our case the four surface patches are not developable, but are isometric to the
-same surface of revolution. The rectangular metal sheets covering the surface can be produced using just one comparably small sector between two meridian
-curves of the corresponding surface of revolution as a mold (left and Figure 16). The long vertical strip (left; gray) of the surface of revolution is either one big
-mold or can be segmented into smaller molds if necessary. Metal sheets covering surface areas with almost vanishing Gaussian curvature can be produced
-without a special mold, i.e., as developable surface patches.
-
-
-Fig.1: In this paper, we model a geodesic parallel mesh with a regular quad grid by choosing a geodesic direction and asking for the geodesic parallel angles constraint. We furthermore ask for equal edge lengths along parallel polylines to get a discrete surface isometric to a surface of revolution. Instead, with angle constraint, equal edge lengths along geodesic polylines, and the discrete Jacobi equation, we can model discrete developable surfaces.
-
-
-Fig.4: Geodesic parallel meshes can approximate a nearly developable surface like for instance a folded felt. The process is the following. We first scanned a folded felt to get a mesh model. We start then from a planar quad mesh. With geodesic parallel and developability constraints on, we optimize for closeness with the scanned mesh. We observe a good approximation, and the corresponding surface of revolution is an almost right cylinder. On bottom right, the nearly developable surface has been developed into the plane. Also here we can observe small distortions.
-
-
-Fig.5: Geodesic parallel meshes very naturally leads to real-world applications. First of all, geodesics on a surface can be easily materialized with thin elongated quadrilateral timber strips(straight strips). Moreover, parallel geodesics are fairly distributed over a surface. Geodesic parallel meshes are then well suited for the design of architectural geodesic gridshells. A design procedure can be the following. Given a freeform reference surface, we can cover the surface with a geodesic parallel mesh. In this way, we get a first family of geodesic curves on the surface. A second mesh with different orientation can be used for a second family of geodesic curves to get a network. If a reference surface is not given, a generic geodesic parallel mesh can be used as a reference for the second one. To test our design procedure, we built a small scale model made of straight wooden strips, shown on the left. Here we can see how well the model match our geodesic parallel mesh on the right.
-
-------
-
-#### GIF
-
-
-------
-##### **Downloads**
-Rhino file in [Google Drive](https://drive.google.com/file/d/1fNO5wBcINJ8VF5Kj7dtASXfvHytYnalU/view?usp=sharing)
\ No newline at end of file
diff --git a/_projects/6_project.md b/_projects/6_project.md
deleted file mode 100644
index 243f6dd7..00000000
--- a/_projects/6_project.md
+++ /dev/null
@@ -1,149 +0,0 @@
----
-layout: page
-title: Designing Asymptotic Geodesic Hybrid Gridshells
-description: mesh optimization, asymptotic curves, geodesic curves, construction-aware design, elastic gridshells
-img: assets/img/paper_2022AGG.png
-importance: 2
-category: work
----
-
-------
-##### **Publication**
-Computer-Aided Design (CAD)
-
-##### **Authors**
-Eike Schling∗, Hui Wang∗, Sebastian Hoyer, Helmut Pottmann
-(∗Joint first authors)
-
-##### **Abstract**
-Fabrication and assembly of freeform shells can be simplified significantly when controlling the curvature of structural elements during the design phase. This approach has produced fundamental insights to bending-active construction, using the elastic property of elements to form efficient load-bearing structures. This paper is focused on gridshells that are built from straight and flat slats. The slats are combined in two orientations, tangential and normal to the design surface, to create robust and versatile triangulated grids. For this purpose, we generate hybrid webs of asymptotic and geodesic paths on freeform surfaces. The research combines geometric computing with architectural building practice. We present a computational workflow for the design and interactive modification of hybrid asymptotic geodesic webs. At its core are discrete models that are based on concepts of differential geometry and allow to compute constrained structures within an optimization framework. The resulting webs are tested for architectural applications. We derive a strategy for the elastic erection process, in which geodesic lamellas are used as a guide and bracing of the spatial structure. Two architectural scenarios, a timber roof and a steel facade are presented. Their feasibility for construction is verified through prototypical joints and physical models. The research introduces a new class of networks and related surfaces and offers insights into the practical challenges of freeform construction from elastic slats.
-
-------
-
-##### **Paper**
-[paper](https://www.geometrie.tuwien.ac.at/geom/ig/publications/asymgeogridshell/asymgeogridshell.pdf)
-
-
-
-##### **Slide**
-
-
-------
-
-##### **Figures**
-
-
-Fig.2: Discussions in Fig.1 are confined to nets and webs of regular combinatorics, which limits the shape variety. For such meshes with a singularity of valence 6 or valence 8, we divide the web into 6 or 8 regular quad patches. Each patch is an AAG-web. Right column are two designs.
-
-
-###### **Applications**
-
-
-Fig.3: We designed and built a timber roof structure from straight lamellas.
-The Top and bottom mesh boundaries of the computed rotational AAG gridshell have square and circular shapes, respectively. The real model is one-quarter of it.
-
-
-
-Fig.4: We redesigned the Emporia shopping center façade and successfully built a small-scaled steel AAG gridshell from straight rectangular steel slats. The original façade has obvious unsmooth supporting structures.
-Our optimized AAG-web approximates the shape with 4 original planar boundaries, the shell improves the structure’s appearance.
-
-
-
-Fig.5: We roughly approximated the negatively curved part of the Soumaya Museum Model by an AAG web. This web results from the carefully-controlled optimization.
-Given any negatively curved mesh, we cannot directly approximate it to be an AGG or AAG-web. Only special shapes are possible.
-How to approximate a given curved shape is still an open question.
-A promising way to investigate the generation of webs is by using a level set approach.
-It will be our future work.
-
-
-
-
-Fig.6: During the Winter Olympic Games Beijing 2022, many steel landscape sculptures called [Xuerong Stars](http://city.cri.cn/20220221/5011d6ff-c7ac-ca90-7db1-e44a3e98ca2b.html)(namely Edelweiss Stars) appeared in front of the National Stadium and Ice Cube. They were designed by Prof. Weixin Huang's team from Tsinghua University. These steel models are designed based on the regular icosahedron, where 6 pairs of triangular faces are used to form the congruent curved patches and the other 8 left triangular faces are deleted.
-
-Fig.7: Still based on a regular icosahedron, I redesigned another AAG-gridshell with 20 patches congruent to each other. The red strips are tangent along the geodesic curves of each simple negatively-curved patch, and the other two families of diagonal strips are orthogonal along the asymptotic curves of the patch.
-
-------
-
-#### GIF
-
-A user-friendly design tool has been realized by integrating the optimization into the CAD system Rhinoceros3D. Our plugin allows the user to define the main inputs to the optimization, the initial mesh, the web type, strip width and optimization parameters like the number of iterations and weights. The results, namely the optimized mesh,
-strip boundaries in piecewise quintic Bezier form, ruling vectors, the developable strips as well as their developments are returned as Rhinoceros3D geometry objects. The optimization is implemented in CPython and called from Grasshopper, Rhinoceros’ parametric design extension, using the [Hops component](https://developer.rhino3d.com/guides/compute/hops-component/). This allows the user to offload the actual computation to a more powerful remote machine, if desired. We will make our plugin available to the architectural community in the near future.
\ No newline at end of file
diff --git a/_projects/7_fun.md b/_projects/7_fun.md
deleted file mode 100644
index 70047050..00000000
--- a/_projects/7_fun.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-layout: page
-title: O-14 Tower
-description: Rhino(Grasshopper)
-img: assets/img/fun/cheese.png
-importance: 4
-category: fun
----
-
-
- Left: O-14 (Cheese) Tower in Dubai.
- Right: After I came back from Dubai EXPO2020, I designed it based on the design idea of the Borisov Arena.
-
-
-------
-##### **Downloads**
-Rhino file in [Google Drive](https://drive.google.com/file/d/1VKlOMytSzuy3m4-riNrvbYVEz02Md883/view?usp=sharing)
\ No newline at end of file
diff --git a/_projects/7_project.md b/_projects/7_project.md
deleted file mode 100644
index 1005e80c..00000000
--- a/_projects/7_project.md
+++ /dev/null
@@ -1,114 +0,0 @@
----
-layout: page
-title: Quad Meshes with Planar Parameter Lines
-description: architectural geometry, computational design, planar parameter lines, static equilibrium
-img: assets/img/paper_2022PPQ.png
-importance: 7
-category: work
----
-
-------
-##### **Publication**
-Computer-Aided Design (CAD)
-
-##### **Authors**
-Cheng Wang, Caigui Jiang, Hui Wang, Xavier Tellier, Helmut Pottmann
-
-##### **Abstract**
-We address the computational design of architectural structures which are based on a frame of intersecting beams that are
-aligned with the parameter lines of a quad mesh. While previous work mainly put a planarity constraint onto the faces of
-the mesh, we focus on the planarity of long-range supporting beams which follow selected polylines in the underlying mesh.
-In addition to that, we impose further constraints including planarity of faces, right node angles and static equilibrium, and
-discuss in which way these may be combined. Some of the studied meshes are discrete counterparts of certain well-known
-surfaces in classical geometry, whose knowledge is helpful for initializing the proposed optimization algorithms.
-
-##### **Paper**
-[paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4144321)
-
-
-------
-
-##### **Figures**
-
-
-Fig.1: Inspired by the glass roof of [Chadstone Shopping Centre](https://seele.com/references/chadstone-shopping-centre) in Melbourne, I designed a quad mesh with planar faces and one family of planar polylines (P+PQ type).
-
-
-Fig.3: Left: MAD Architects-designed [Harbin Opera House](https://www.archdaily.cn/cn/778981/ha-er-bin-ge-ju-yuan-madjian-zhu-shi-wu-suo) in China. Right-two: Inspired by it, I designed a supporting structure with two families of orthogonal planar polylines (PP+90 type).
-
-
-Fig.4: Left: Zaha Hadid Architects-designed [Changsha Meixihu International Culture and Art Centre](https://www.dezeen.com/2019/05/03/zaha-hadid-architects-changsha-meixihu-jnternational-culture-art-centre/) in China.
-Right-two: Based on the left corner one, I designed another supporting structure with two families of orthogonal planar polylines (PP+90 type).
-
-
-Fig.5: Left: A quad mesh with planar faces and one family of piecewise planar polylines (in colors) approximating the surface on the top of the Lilium Tower model by Zaha Hadid Architects.
-Right: A quad mesh in static equilibrium rationalized with planar faces and one family of piecewise planar polylines (in colors).
-
-
-Fig.6: A P+PQ mesh with its support structure generates different shading patterns during a day at 9:00, 12:00 and 15:00. When the light is parallel to those planar polylines, the respective parts in the shading pattern are lighter. The base curve comes from the Ryue Nishizawa-designed [Jining Art Museum](https://www.archdaily.cn/cn/964365/ji-zhu-mei-zhu-guan-xi-ze-li-wei?ad_source=search&ad_medium=projects_tab&ad_source=search&ad_medium=search_result_all) in China.
diff --git a/_projects/8_fun.md b/_projects/8_fun.md
deleted file mode 100644
index 99557bd5..00000000
--- a/_projects/8_fun.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-layout: page
-title: Paneum center
-description: Rhino(Grasshopper)
-img: assets/img/fun/paneum.png
-importance: 5
-category: fun
----
-
-
- Left: Paneum center by Coop Himmelb(l)au in Austria.
- Right: a roughly approximated model by me.
-
-
-------
-##### **Downloads**
-Rhino file in [Google Drive](https://drive.google.com/file/d/1o1TT66RaNbsNk2lGqvK5OGrikH4l-Jq-/view?usp=sharing), Grasshopper files in [Google Drive1](https://drive.google.com/file/d/18TSV-vHOfrdbgu6KuIWc0_3qwHB4RunU/view?usp=sharing) and [Google Drive2](https://drive.google.com/file/d/17iRGHK6LJtjJphZuqud8aP2OPYF4Bv42/view?usp=sharing).
\ No newline at end of file
diff --git a/_projects/8_project.md b/_projects/8_project.md
deleted file mode 100644
index 743ce04d..00000000
--- a/_projects/8_project.md
+++ /dev/null
@@ -1,75 +0,0 @@
----
-layout: page
-title: AAG-Shell
-description: real wooden shell structure in Munich, Germany
-img: assets/img/proj8/AG_vault.png
-importance: 2
-category: work
----
-
-
-------
-
-Very happy that a triply symmetric wooden shell structure designed by my numerical optimization result has been built in real life. More construction details see [Asymptotic Geodesic Timber Vault](https://eikeschling.com/2022/11/08/asymptotic-geodesic-timber-vault/) by Prof.Eike Schling et al.
-
-Check the Deutch report in [News@Campus](https://www.baunetz-campus.de/news/asymptotic-geodesic-timber-vault-gitterschalen-mal-einfach-8117275).
-
-
-##### **Publication**
-Our research paper [***Asymptotic Geodesic Hybrid Timber Gridshell***](https://www.aag2023.com/#section2) has been accepted in Advances in Architectural Geometry (AAG) 2023 conference, which will be held in Stuttgart, Germany.
-
-##### **Authors**
-Eike Schling, Zongshuai Wan, Hui Wang, Pierluigi DAcunto
-
-##### **PDF**
-[paper](/assets/pdf/2023AAG23-HW.pdf)
-
-
-
-##### Final Result
-
-
- Compared with the later construction pipeline, what I did seems the most basic and easier one, since I only handled with scripts in the computer. It's a great chance for me to learn how an even simple project could be built in real life and to know how many steps to be followed into the final stage. Cheers for all the people involved!
-
- Animations. Numerical results that can be transferred into real life, touched, shared, and enjoyed by people is a great honor for the person sitting in front of the computer all day. It shows how well the algorithm and the construction are compatible with each other.
-
- Although this structure looks not so complex with many symmetries, it took me longer time to finally get the constructable mesh, since it satisfies so many constraints for a single mesh patch as seen above.
-
- Here is the final AAG-web with orthogonal straight strips along the asymptotic curves and tangent straight strips along the geodesics, which was optimized as discussed in this project .
-
-
-Very happy to attend the one-week (29th Jan. - 2nd Feb.) Computational Architecture workshop held by VCC, KAUST. 5 experts(Eike Schling, Dominik L. Michels, Florian Rist, Helmut Pottmann and Peter Wonka)from architecture, geometry and computer science gave related talks about the reasonable and scientific ways to design things. I attended it together with 13 other architectural undergraduates selected from Saudi Arabia. It was my first time attending an architectural workshop, very interesting and fruitful! Not only I learnt how are the differences between theory, optimization results and the actual constructed model, but I also learnt some new experiences from the 10 girls and 3 boys, how they came up with their design ideas, how they handled construction details, and how they caught up with time to gave attractive presentations successfully.
-
- This model was made together with Xinye Li and Bolun Wang.
- We bent 12 straight congruent strips and fixed them with 36 joints at computed positions to construct.
- We tried to get an asymptotic net as orthogonal as possible, which is corresponding to a minimal net.
- It is a trivial result, but it took us two days to finish it (in fact, we replaced the first day's plan and only took one day to finish together with the presentation).
- During the construction time, we met many small problems, like how to choose good joints, how to bend the strips against with its resilience, how to bear the small pins from the FRP strips, how to group the 12 strips into a near rotational shape, how to make the intersection angle as 90 degree as possible...
- Thanksfully, the result was not bad.
-
- After we tested with three kinds of different joints, the final one can even make the two families of strips rotate, which forms the kinetic behavior of the asymptotic shell (left).
- This deformed progress can be simulated by Kangoroo in Grasshoppper.
- The two families of strips can be unrolled into flat rectangular shape in plane.
-
-
-
-
-##### Presentation
-
-I gave the around 10mins' presentation together with Xinye, here is the pdf
-
-
-
diff --git a/_sass/_base.scss b/_sass/_base.scss
deleted file mode 100644
index 83a971c0..00000000
--- a/_sass/_base.scss
+++ /dev/null
@@ -1,1078 +0,0 @@
-/*******************************************************************************
- * Styles for the base elements of the theme.
- ******************************************************************************/
-
-// Typography
-
-p,
-h1,
-h2,
-h3,
-h4,
-h5,
-h6,
-em,
-div,
-li,
-span,
-strong {
- color: var(--global-text-color);
-}
-
-hr {
- border-top: 1px solid var(--global-divider-color);
-}
-
-table {
- td,
- th {
- font-size: 1rem;
- }
-
- th {
- font-weight: bold;
- }
-}
-
-a,
-table.table a {
- color: var(--global-theme-color);
-
- &:hover {
- color: var(--global-theme-color);
- text-decoration: underline;
- }
-
- &:hover:after :not(.nav-item.dropdown) {
- width: 100%;
- }
-}
-
-.table-dark {
- background-color: transparent;
-}
-
-figure,
-img {
- max-width: 90vw;
-}
-
-blockquote {
- background: var(--global-bg-color);
- border-left: 2px solid var(--global-theme-color);
- margin: 1.5em 10px;
- padding: 0.5em 10px;
- font-size: 1.2rem;
-}
-
-// Math
-
-.equation {
- margin-bottom: 1rem;
- text-align: center;
-}
-
-// Caption
-
-.caption {
- font-size: 0.875rem;
- margin-top: 0.75rem;
- margin-bottom: 1.5rem;
- text-align: center;
-}
-
-// Card
-
-.card {
- background-color: var(--global-card-bg-color);
-
- img {
- width: 100%;
- }
-
- .card-title {
- color: var(--global-text-color);
- }
-
- .card-item {
- width: auto;
- margin-bottom: 10px;
-
- .row {
- display: flex;
- align-items: center;
- }
- }
-}
-
-// Citation
-
-.citation,
-.citation-number {
- color: var(--global-theme-color);
-}
-
-// Profile
-
-.profile {
- width: 100%;
-
- .address {
- margin-bottom: 5px;
- margin-top: 5px;
- font-family: monospace;
-
- p {
- display: inline-block;
- margin: 0;
- }
- }
-}
-
-.profile.float-right {
- margin-left: 1rem;
-}
-
-.profile.float-left {
- margin-right: 1rem;
-}
-
-@media (min-width: 576px) {
- .profile {
- width: 30%;
-
- .address {
- p {
- display: block;
- }
- }
- }
-}
-
-.post-description {
- margin-bottom: 2rem;
- font-size: 0.875rem;
-
- a {
- color: inherit;
-
- &:hover {
- color: var(--global-theme-color);
- text-decoration: none;
- }
- }
-}
-
-
-// Navbar customization
-
-.navbar {
- box-shadow: none;
- border-bottom: 1px solid var(--global-divider-color);
- background-color: var(--global-bg-color);
- opacity: 0.95;
-}
-
-.navbar .dropdown-menu {
- background-color: var(--global-bg-color);
- border: 1px solid var(--global-divider-color);
-
- a:not(.active) {
- color: var(--global-text-color);
- }
-
- a:hover {
- color: var(--global-hover-color);
- }
-
- .dropdown-divider {
- border-top: 1px solid var(--global-divider-color) !important;
- }
-}
-
-.dropdown-item {
- color: var(--global-text-color);
-
- &:hover {
- color: var(--global-hover-color);
- background-color: var(--global-bg-color);
- }
-}
-
-.navbar.navbar-light {
- a {
- &:hover {
- text-decoration: none;
- }
- }
-
- .navbar-brand {
- color: var(--global-text-color);
- }
-
- .navbar-nav .nav-item .nav-link {
- color: var(--global-text-color);
-
- &:hover {
- color: var(--global-hover-color);
- }
- }
-
- .navbar-nav .nav-item.active>.nav-link {
- background-color: inherit;
- font-weight: bolder;
- color: var(--global-theme-color);
-
- &:hover {
- color: var(--global-hover-color);
- }
- }
-
- .navbar-brand.social {
- padding-bottom: 0;
- padding-top: 0;
- font-size: 1.7rem;
-
- a {
- i::before {
- color: var(--global-text-color);
- transition-property: all 0.2s ease-in-out;
- }
-
- &:hover {
- i::before {
- color: var(--global-theme-color);
- }
- }
- }
- }
-}
-
-.navbar-toggler {
- .icon-bar {
- display: block;
- width: 22px;
- height: 2px;
- background-color: var(--global-text-color);
- border-radius: 1px;
- margin-bottom: 4px;
- transition: all 0.2s;
- }
-
- .top-bar {
- transform: rotate(45deg);
- transform-origin: 10% 10%;
- }
-
- .middle-bar {
- opacity: 0;
- }
-
- .bottom-bar {
- transform: rotate(-45deg);
- transform-origin: 10% 90%;
- }
-}
-
-.navbar-toggler.collapsed {
- .top-bar {
- transform: rotate(0);
- }
-
- .middle-bar {
- opacity: 1;
- }
-
- .bottom-bar {
- transform: rotate(0);
- }
-}
-
-#light-toggle {
- padding: 0;
- border: 0;
- background-color: inherit;
- color: var(--global-text-color);
-
- &:hover {
- color: var(--global-hover-color);
- }
-}
-
-
-// News
-
-.news table td {
- font-size: 1rem;
- color: var(--global-text-color);
-}
-
-.news table th {
- color: var(--global-text-color);
-}
-
-// Social (bottom)
-
-.social {
- text-align: center;
-
- .contact-icons {
- font-size: 4rem;
-
- a {
- i::before {
- color: var(--global-text-color);
- transition-property: all 0.2s ease-in-out;
- }
-
- &:hover {
- i::before {
- color: var(--global-theme-color);
- }
- }
- }
- }
-
- .contact-note {
- font-size: 0.8rem;
- }
-}
-
-.wechat-modal {
- display: none;
- position: fixed;
- z-index: 1;
- padding-top: 100px;
- left: 0;
- top: 0;
- width: 100%;
- height: 100%;
- overflow: auto;
- background-color: rgb(0,0,0);
- background-color: rgba(0,0,0,0.8);
-}
-
-.wechat-modal > img {
- display: block;
- position: relative;
- top: 50%;
- left: 50%;
- width: 33%;
- max-width: 400px;
- transform: translate(-50%, -50%);
-}
-
-@media only screen and (max-width: 400px){
- .wechat-modal > img {
- width: 100%;
- }
-}
-
-
-// Footer
-footer.fixed-bottom {
- background-color: var(--global-footer-bg-color);
- font-size: 0.75rem;
-
- .container {
- color: var(--global-footer-text-color);
- padding-top: 9px;
- padding-bottom: 8px;
- }
-
- a {
- color: var(--global-footer-link-color);
-
- &:hover {
- color: var(--global-theme-color);
- text-decoration: none;
- }
- }
-}
-
-footer.sticky-bottom {
- border-top: 1px solid var(--global-divider-color);
- padding-top: 40px;
- padding-bottom: 40px;
- font-size: 0.9rem;
-}
-
-// CV
-
-.cv {
- margin-bottom: 40px;
-
- .card {
- background-color: var(--global-card-bg-color);
- border: 1px solid var(--global-divider-color);
-
- .list-group-item {
- background-color: inherit;
- border-color: var(--global-divider-color);
-
- .badge {
- color: var(--global-card-bg-color) !important;
- background-color: var(--global-theme-color) !important;
- }
- }
- }
-}
-
-.table-cv-map {
- background-color: transparent;
- border: none;
- color: var(--global-text-color);
-}
-
-// Repositories
-
-@media (min-width: 768px) {
- .repo {
- max-width: 50%;
- }
-}
-
-// Blog
-
-.header-bar {
- border-bottom: 1px solid var(--global-divider-color);
- text-align: center;
- padding-top: 2rem;
- padding-bottom: 3rem;
-
- h1 {
- color: var(--global-theme-color);
- font-size: 5rem;
- }
-}
-
-.tag-category-list {
- border-bottom: 1px solid var(--global-divider-color);
- text-align: center;
- padding-top: 1rem;
-
- ul {
- justify-content: center;
- display: flow-root;
-
- p,
- li {
- list-style: none;
- display: inline-block;
- padding: 1rem 0.5rem;
- color: var(--global-text-color-light);
- }
- }
-}
-
-.post-title {
- mjx-container[jax="CHTML"][display="true"] {
- display: unset;
- }
-}
-
-.post-list {
- margin: 0;
- margin-bottom: 40px;
- padding: 0;
-
- li {
- border-bottom: 1px solid var(--global-divider-color);
- list-style: none;
- padding-top: 2rem;
- padding-bottom: 2rem;
-
- .post-meta {
- color: var(--global-text-color-light);
- font-size: 0.875rem;
- margin-bottom: 0;
- }
-
- .post-tags {
- color: var(--global-text-color-light);
- font-size: 0.875rem;
- padding-top: 0.25rem;
- padding-bottom: 0;
- }
-
- a {
- color: var(--global-text-color);
- text-decoration: none;
-
- &:hover {
- color: var(--global-theme-color);
- }
- }
-
- mjx-container[jax="CHTML"][display="true"] {
- display: unset;
- }
- }
-}
-
-.pagination {
- .page-item {
- .page-link {
- color: var(--global-text-color);
-
- &:hover {
- color: $black-color;
- }
- }
-
- &.active .page-link {
- color: $white-color;
- background-color: var(--global-theme-color);
-
- &:hover {
- background-color: var(--global-theme-color);
- }
- }
- }
-}
-
-
-// Distill
-
-.distill {
- a:hover {
- border-bottom-color: var(--global-theme-color);
- text-decoration: none;
- }
-}
-
-
-// Projects
-
-.projects {
- a {
- text-decoration: none;
-
- &:hover {
- .card-title {
- color: var(--global-theme-color);
- }
- }
- }
-
- .card {
- img {
- width: 100%;
- }
- }
-
- .card-item {
- width: auto;
- margin-bottom: 10px;
-
- .row {
- display: flex;
- align-items: center;
- }
- }
-
- .grid-sizer,
- .grid-item {
- width: 250px;
- margin-bottom: 10px;
- }
-
- h2.category {
- color: var(--global-divider-color);
- border-bottom: 1px solid var(--global-divider-color);
- padding-top: 0.5rem;
- margin-top: 2rem;
- margin-bottom: 1rem;
- text-align: right;
- }
-}
-
-
-// Publications
-
-.publications {
- margin-top: 2rem;
-
- h1 {
- color: var(--global-theme-color);
- font-size: 2rem;
- text-align: center;
- margin-top: 1em;
- margin-bottom: 1em;
- }
-
- h2 {
- margin-bottom: 1rem;
-
- span {
- font-size: 1.5rem;
- }
- }
-
- h2.bibliography {
- color: var(--global-divider-color);
- border-top: 1px solid var(--global-divider-color);
- padding-top: 1rem;
- margin-top: 2rem;
- margin-bottom: -2rem;
- text-align: right;
- }
-
- ol.bibliography {
- list-style: none;
- padding: 0;
- margin-top: 0;
-
- li {
- margin-bottom: 1rem;
-
- .preview {
- width: 100%;
- min-width: 80px;
- max-width: 200px;
- }
-
- .abbr {
- height: 2rem;
- margin-bottom: 0.5rem;
-
- abbr {
- display: inline-block;
- background-color: var(--global-theme-color);
- padding-left: 1rem;
- padding-right: 1rem;
-
- a {
- color: white;
-
- &:hover {
- text-decoration: none;
- }
- }
- }
-
- .award {
- color: var(--global-theme-color) !important;
- border: 1px solid var(--global-theme-color);
- }
- }
-
- .title {
- font-weight: bolder;
- }
-
- .author {
- a {
- border-bottom: 1px dashed var(--global-text-color);
-
- &:hover {
- border-bottom-style: solid;
- text-decoration: none;
- }
- }
-
- >em {
- border-bottom: 1px solid;
- font-style: normal;
- }
-
- >span.more-authors {
- // color: var(--global-text-color-light);
- // border-bottom: 1px dashed var(--global-text-color-light);
- cursor: pointer;
-
- &:hover {
- color: var(--global-text-color);
- border-bottom: 1px dashed var(--global-text-color);
- }
- }
- }
-
- .links {
- a.btn {
- color: var(--global-text-color);
- border: 1px solid var(--global-text-color);
- padding-left: 1rem;
- padding-right: 1rem;
- padding-top: 0.25rem;
- padding-bottom: 0.25rem;
- margin-left: 0;
-
- &:hover {
- color: var(--global-theme-color);
- border-color: var(--global-theme-color);
- }
- }
- }
-
- .badges {
- padding-bottom: 0.5rem;
- span {
- display: inline-block;
- color: $black-color;
- height: 100%;
- padding-right: 0.5rem;
- vertical-align: middle;
-
- &:hover {
- text-decoration: underline;
- }
- }
- }
-
- .hidden {
- font-size: 0.875rem;
- max-height: 0px;
- overflow: hidden;
- text-align: justify;
- transition-property: 0.15s ease;
- -moz-transition: 0.15s ease;
- -ms-transition: 0.15s ease;
- -o-transition: 0.15s ease;
- transition: all 0.15s ease;
-
- p {
- line-height: 1.4em;
- margin: 10px;
- }
-
- pre {
- font-size: 1em;
- line-height: 1.4em;
- padding: 10px;
- }
- }
-
- .hidden.open {
- max-height: 100em;
- transition-property: 0.15s ease;
- -moz-transition: 0.15s ease;
- -ms-transition: 0.15s ease;
- -o-transition: 0.15s ease;
- transition: all 0.15s ease;
- }
-
- div.abstract.hidden {
- border: dashed 1px var(--global-bg-color);
- }
-
- div.abstract.hidden.open {
- border-color: var(--global-text-color);
- }
- }
- }
-}
-
-// Rouge Color Customization
-figure.highlight {
- margin: 0 0 1rem;
-}
-
-pre {
- color: var(--global-theme-color);
- background-color: var(--global-code-bg-color);
- border-radius: 6px;
- padding: 6px 12px;
-
- pre,
- code {
- background-color: transparent;
- border-radius: 0;
- margin-bottom: 0;
- padding: 0;
- }
-}
-
-code {
- color: var(--global-theme-color);
- background-color: var(--global-code-bg-color);
- border-radius: 3px;
- padding: 3px 3px;
-}
-
-
-// Transitioning Themes
-html.transition,
-html.transition *,
-html.transition *:before,
-html.transition *:after {
- transition: all 750ms !important;
- transition-delay: 0 !important;
-}
-
-// Extra Markdown style (post Customization)
-.post {
- .post-meta {
- color: var(--global-text-color-light);
- font-size: 0.875rem;
- margin-bottom: 0;
- }
-
- .post-tags {
- color: var(--global-text-color-light);
- font-size: 0.875rem;
- padding-top: 0.25rem;
- padding-bottom: 1rem;
-
- a {
- color: var(--global-text-color-light);
- text-decoration: none;
-
- &:hover {
- color: var(--global-theme-color);
- }
- }
- }
-
- .post-content {
- blockquote {
- border-left: 5px solid var(--global-theme-color);
- padding: 8px;
-
- p {
- margin-bottom: 0;
- }
- }
- }
-}
-
-progress {
- /* Positioning */
- position: fixed;
- left: 0;
- top: 56px;
- z-index: 10;
-
- /* Dimensions */
- width: 100%;
- height: 1px;
-
- /* Reset the appearance */
- -webkit-appearance: none;
- -moz-appearance: none;
- appearance: none;
-
- /* Get rid of the default border in Firefox/Opera. */
- border: none;
-
- /* Progress bar container for Firefox/IE10 */
- background-color: transparent;
-
- /* Progress bar value for IE10 */
- color: var(--global-theme-color);
-}
-
-progress::-webkit-progress-bar {
- background-color: transparent;
-}
-
-progress::-webkit-progress-value {
- background-color: var(--global-theme-color);
-}
-
-progress::-moz-progress-bar {
- background-color: var(--global-theme-color);
-}
-
-.progress-container {
- width: 100%;
- background-color: transparent;
- position: fixed;
- top: 56px;
- left: 0;
- height: 5px;
- display: block;
-}
-
-.progress-bar {
- background-color: var(--global-theme-color);
- width: 0%;
- display: block;
- height: inherit;
-}
-
-/* Copy button */
-.code-display-wrapper {
- position: relative;
-
- .copy {
- background: var(--global-card-bg-color);
- border-color: var(--global-bg-color);
- border-radius: .3rem;
- border-style: none;
- color: var(--global-text-color);
- font-size: medium;
- opacity: 0;
- position: absolute;
- right: .5rem;
- top: .5rem;
- }
-
- &:active .copy,
- &:focus .copy,
- &:hover .copy {
- color: var(--global-hover-color);
- opacity: 1;
- }
-}
-
-.btn-group.dropdown {
- .btn {
- box-shadow: none;
- -webkit-box-shadow: none;
- }
-
- .btn-secondary.dropdown-toggle {
- border: 1px solid var(--global-divider-color);
-
- .page-size {
- color: inherit;
- }
-
- &:not(.active) {
- background-color: var(--global-bg-color) !important;
- color: var(--global-text-color);
- }
-
- &:hover {
- background-color: var(--global-hover-color) !important;
- color: var(--global-hover-text-color) !important;
- }
- }
-
- .dropdown-menu {
- background-color: var(--global-bg-color);
- }
-
- .dropdown-item {
- background-color: var(--global-bg-color);
- color: var(--global-text-color);
-
- &:hover {
- color: var(--global-hover-color);
- }
- }
-
- .dropdown-item.active, .dropdown-item:active {
- background-color: var(--global-hover-color);
- color: var(--global-hover-text-color) !important;
-
- &:hover {
- color: var(--global-hover-text-color);
- }
- }
-}
-
-/* Table of Contents */
-nav[data-toggle="toc"] {
- top: 5rem;
-
- .nav .nav>li>a {
- font-size: .75rem;
- }
-
- .nav>li>a {
- color: var(--global-text-color);
- font-size: .75rem;
-
- &:hover {
- color: var(--global-hover-color);
- border-left-color: var(--global-hover-color);
- }
- }
-
- .nav-link.active {
- color: var(--global-theme-color);
- border-left-color: var(--global-theme-color);
- font-size: .75rem;
-
- &:hover {
- color: var(--global-hover-color);
- border-left-color: var(--global-hover-color);
- }
- }
-}
-
-/* small screens */
-@media (max-width: 576px) {
- /* override stickyness so that the navigation does not follow scrolling */
- nav[data-toggle="toc"] {
- visibility: hidden;
- height: 0;
- top: 0;
- }
-}
-
-/* Tips, warnings, and dangers blockquotes */
-.post .post-content blockquote {
- &.block-tip {
- border-color: var(--global-tip-block);
- background-color: var(--global-tip-block-bg);
-
- p {
- color: var(--global-tip-block-text);
- }
-
- h1, h2, h3, h4, h5, h6 {
- color: var(--global-tip-block-title);
- }
- }
-
- &.block-warning {
- border-color: var(--global-warning-block);
- background-color: var(--global-warning-block-bg);
-
- p {
- color: var(--global-warning-block-text);
- }
-
- h1, h2, h3, h4, h5, h6 {
- color: var(--global-warning-block-title);
- }
- }
-
- &.block-danger {
- border-color: var(--global-danger-block);
- background-color: var(--global-danger-block-bg);
-
- p {
- color: var(--global-danger-block-text);
- }
-
- h1, h2, h3, h4, h5, h6 {
- color: var(--global-danger-block-title);
- }
- }
-}
-
-.featured-posts {
- a {
- color: var(--global-text-color-light);
- text-decoration: none;
-
- .card-text {
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- }
-
- &:hover {
- color: var(--global-theme-color);
-
- .card-title {
- color: var(--global-theme-color);
- }
- }
- }
-
- .card-item {
- margin-bottom: 10px;
- }
-
- .post-meta {
- color: var(--global-text-color-light);
- font-size: 0.875rem;
- margin-bottom: 0;
- padding-top: 0.5rem;
- }
-}
diff --git a/_sass/_cv.scss b/_sass/_cv.scss
deleted file mode 100644
index cce8002b..00000000
--- a/_sass/_cv.scss
+++ /dev/null
@@ -1,215 +0,0 @@
-/*****************************
- * CV shared styles
- *****************************/
-
-div.container-link-button {
- margin-right: 0.5rem;
-}
-
-table.table-cv {
- background-color: transparent !important;
-}
-
-a.btncv {
- color: var(--global-text-color) !important;
- border: 1px solid var(--global-text-color) !important;
- border-radius: 0.125rem;
- padding-left: 1rem;
- padding-right: 1rem;
- padding-top: 0.25rem;
- padding-bottom: 0.25rem;
- text-decoration: none;
- font-weight: 400;
- font-size: .7rem;
- text-align: center;
- vertical-align: middle;
- text-transform: uppercase;
- white-space: nowrap;
-}
-
-a.btncv:hover {
- color: var(--global-theme-color) !important;
- border-color: var(--global-theme-color) !important;
- text-decoration: none !important;
-}
-
-/*****************************
- * CV TIME_TABLE styles
- *****************************/
-
-p.location {
- font-size: 0.7rem;
- white-space: nowrap;
-}
-
-i.iconlocation {
- color: var(--global-theme-color);
- font-size: 0.8rem;
-}
-
-i.iconinstitution {
- color: var(--global-theme-color);
- font-size: 0.95rem;
- margin-right: 0.3rem;
-}
-
-i.icondepartment {
- color: var(--global-theme-color);
- font-size: 0.8rem;
- margin-right: 0.3rem;
-}
-
-table.institution {
- margin-bottom: 1rem;
-}
-
-td.department {
- font-size: 0.8rem;
-}
-
-div.container-links {
- display: flex;
- flex-direction: row;
- flex-wrap: wrap;
- align-items: center;
- justify-content: flex-start;
- margin-top: 1rem;
- margin-bottom: 0.5rem;
-}
-
-/*****************************
- * CV MAP styles
- *****************************/
-
-div.container-pdf {
- display: flex;
- flex-direction: row;
- flex-wrap: wrap;
- align-items: center;
- justify-content: flex-start;
-}
-
-/*****************************
- * CV LIST_GROUPS styles
- *****************************/
-
-div.list-groups {
- display: flex;
- flex-wrap: wrap;
- justify-content: flex-start;
- flex-direction: row;
- align-content: center;
-}
-
-div.list-group {
- display: flex;
- flex-wrap: wrap;
- flex-direction: column;
- align-items: flex-start;
- margin-bottom: 2rem;
-}
-
-td.list-group-category {
- color: var(--global-theme-color);
- margin-bottom: 0.5rem;
-}
-
-td.list-group-category-icon {
- font-size: 0.8rem;
- color: var(--global-theme-color);
- width: 1.4rem;
- padding-right: 0.4rem;
-}
-
-td.list-group-name {
- font-size: 0.8rem;
-}
-
-td.list-group-level {
- font-size: 0.8rem;
- padding-left: 0.5rem;
-}
-
-td.list-group-school {
- font-size: 0.7rem;
- padding-left: 0.5rem;
- text-align: center;
-}
-
-p.list-group-time {
- font-size: 0.7rem;
- padding-left: 0.5rem;
-}
-
-td.list-group-link {
- padding-left: 0.5rem;
-}
-
-/*****************************
- * CV TOC styles
- *****************************/
-
-a.anchor {
- display: block;
- position: relative;
- top: -50px;
- visibility: hidden;
-}
-
-ul.timeline {
- margin-top: 2rem;
- margin-bottom: 2rem;
-}
-
-ul.timeline li {
- position: relative;
- min-height: 2.2rem;
- color: var(--global-text-color);
- list-style-position: inside;
-}
-
-span.badge-toc {
- color: var(--global-bg-color);
- background-color: var(--global-theme-color);
- border-radius: 0.125rem;
- padding: 0.125rem 0.5rem 0.125rem 0.5rem;
- font-weight: 700 !important;
- display: inline-block;
- inline-size: fit-content;
-}
-
-ul.timeline li::before {
- content: "";
- min-height: 2.5rem;
- width: 1px;
- background: var(--global-text-color);
- margin: 0;
- padding: 0;
- position: absolute;
- left: 2px;
- top: -0.5rem;
-}
-
-/*ul.timeline::before {
- content: "●";
- font-size: 1em;
- display: inline-block;
- margin: 0;
- padding: 0;
- position: relative;
- left: -2px;
- top: 0.4rem;
- color: var(--global-text-color);
-}
- ul.timeline::after {
- content: "●";
- font-size: 1em;
- display: inline-block;
- margin: 0;
- padding: 0;
- position: relative;
- left: -2px;
- top: -1rem;
- color: var(--global-text-color);
-}
-*/
\ No newline at end of file
diff --git a/_sass/_distill.scss b/_sass/_distill.scss
deleted file mode 100644
index e8c05f04..00000000
--- a/_sass/_distill.scss
+++ /dev/null
@@ -1,151 +0,0 @@
-/*******************************************************************************
- * Style overrides for distill blog posts.
- ******************************************************************************/
-
-d-byline {
- border-top-color: var(--global-divider-color) !important;
-}
-
-d-byline h3 {
- color: var(--global-text-color) !important;
-}
-
-d-byline a, d-article d-byline a {
- color: var(--global-text-color) !important;
- &:hover {
- color: var(--global-hover-color) !important;
- }
-}
-
-d-article {
- border-top-color: var(--global-divider-color) !important;
- p, h1, h2, h3, h4, h5, h6, li, table {
- color: var(--global-text-color) !important;
- }
- h1, h2, hr, table, table th, table td {
- border-bottom-color: var(--global-divider-color) !important;
- }
- a {
- color: var(--global-theme-color) !important;
- &:hover {
- color: var(--global-theme-color) !important;
- }
- }
- b i {
- display: inline;
- }
-
- // Style taken from code blocks
- details {
- color: var(--global-text-color);
- background-color: var(--global-code-bg-color);
- margin-top: 0;
- padding: 8px 12px;
- position: relative;
- border-radius: 6px;
- display: block;
- margin-bottom: 20px;
- grid-column: text;
- overflow: auto;
- max-width: 100%;
- summary {
- color: var(--global-theme-color);
- }
- p {
- margin-top: 0.5rem;
- margin-bottom: 0.5rem;
- }
- }
-
- d-contents {
- align-self: start;
- grid-column: 1 / 4;
- grid-row: auto / span 4;
- justify-self: end;
- margin-top: 0em;
- padding-left: 2em;
- padding-right: 3em;
- border-right: 1px solid var(--global-divider-color);
- width: calc(max(70%, 300px));
- margin-right: 0px;
- margin-top: 0em;
- display: grid;
- grid-template-columns:
- minmax(8px, 1fr) [toc] auto
- minmax(8px, 1fr) [toc-line] 1px
- minmax(32px, 2fr);
-
- nav {
- grid-column: toc;
- a {
- border-bottom: none !important;
- &:hover {
- border-bottom: 1px solid var(--global-text-color) !important;
- }
- }
- h3 {
- margin-top: 0;
- margin-bottom: 1em;
- }
- div {
- display: block;
- outline: none;
- margin-bottom: 0.8em;
- color: rgba(0, 0, 0, 0.8);
- font-weight: bold;
- }
- ul {
- padding-left: 1em;
- margin-top: 0;
- margin-bottom: 6px;
- list-style-type: none;
- li {
- margin-bottom: 0.25em;
- }
- }
- }
- .figcaption {
- line-height: 1.4em;
- }
- toc-line {
- border-right: 1px solid var(--global-divider-color);
- grid-column: toc-line;
- }
- }
-
- d-footnote {
- scroll-margin-top: 66px;
- }
-}
-
-d-appendix {
- border-top-color: var(--global-divider-color) !important;
- color: var(--global-distill-app-color) !important;
- h3, li, span {
- color: var(--global-distill-app-color) !important;
- }
- a, a.footnote-backlink {
- color: var(--global-distill-app-color) !important;
- &:hover {
- color: var(--global-hover-color) !important;
- }
- }
-}
-
-@media (max-width: 1024px) {
- d-article {
- d-contents {
- display: block;
- grid-column-start: 2;
- grid-column-end: -2;
- padding-bottom: 0.5em;
- margin-bottom: 1em;
- padding-top: 0.5em;
- width: 100%;
- border: 1px solid var(--global-divider-color);
- nav {
- grid-column: none;
- }
- }
- }
-}
diff --git a/_sass/_layout.scss b/_sass/_layout.scss
deleted file mode 100644
index 9c10cac7..00000000
--- a/_sass/_layout.scss
+++ /dev/null
@@ -1,50 +0,0 @@
-/******************************************************************************
- * Content
- ******************************************************************************/
-
-body {
- padding-bottom: 70px;
- color: var(--global-text-color);
- background-color: var(--global-bg-color);
-
- h1, h2, h3, h4, h5, h6 {
- scroll-margin-top: 66px;
- }
-}
-
-body.fixed-top-nav {
- // Add some padding for the nav-bar.
- padding-top: 56px;
-}
-
-body.sticky-bottom-footer {
- // Remove padding below footer.
- padding-bottom: 0;
-}
-
-.container {
- max-width: $max-content-width;
-}
-
-// Profile
-.profile {
- img {
- width: 100%;
- }
-}
-
-// TODO: redefine content layout.
-
-
-/******************************************************************************
- * Publications
- ******************************************************************************/
-
-// TODO: redefine publications layout.
-
-
-/*****************************************************************************
-* Projects
-*****************************************************************************/
-
-// TODO: redefine projects layout.
diff --git a/_sass/_themes.scss b/_sass/_themes.scss
deleted file mode 100644
index b9e75de1..00000000
--- a/_sass/_themes.scss
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************************************************************
- * Themes
- ******************************************************************************/
-
-:root {
- --global-bg-color: #{$white-color};
- --global-code-bg-color: #{$code-bg-color-light};
- --global-text-color: #{$black-color};
- --global-text-color-light: #{$grey-color};
- --global-theme-color: #{$green-color-dark};
- --global-hover-color: #{$green-color-dark};
- --global-hover-text-color: #{$white-color};
- --global-footer-bg-color: #{$grey-color-dark};
- --global-footer-text-color: #{$grey-color-light};
- --global-footer-link-color: #{$white-color};
- --global-distill-app-color: #{$grey-color};
- --global-divider-color: rgba(0,0,0,.1);
- --global-card-bg-color: #{$white-color};
-
- --global-tip-block: #42b983;
- --global-tip-block-bg: #e2f5ec;
- --global-tip-block-text: #215d42;
- --global-tip-block-title: #359469;
- --global-warning-block: #e7c000;
- --global-warning-block-bg: #fff8d8;
- --global-warning-block-text: #6b5900;
- --global-warning-block-title: #b29400;
- --global-danger-block: #c00;
- --global-danger-block-bg: #ffe0e0;
- --global-danger-block-text: #600;
- --global-danger-block-title: #c00;
-
- .fa-sun {
- display : none;
- }
- .fa-moon {
- padding-left: 10px;
- padding-top: 12px;
- display : block;
- }
-
- .repo-img-light {
- display: block;
- }
- .repo-img-dark {
- display: none;
- }
-}
-
-html[data-theme='dark'] {
- --global-bg-color: #{$grey-color-dark};
- --global-code-bg-color: #{$code-bg-color-dark};
- --global-text-color: #{$grey-color-light};
- --global-text-color-light: #{$grey-color-light};
- --global-theme-color: #{$cyan-color};
- --global-hover-color: #{$cyan-color};
- --global-hover-text-color: #{$white-color};
- --global-footer-bg-color: #{$grey-color-light};
- --global-footer-text-color: #{$grey-color-dark};
- --global-footer-link-color: #{$black-color};
- --global-distill-app-color: #{$grey-color-light};
- --global-divider-color: #424246;
- --global-card-bg-color: #{$grey-900};
-
- --global-tip-block: #42b983;
- --global-tip-block-bg: #e2f5ec;
- --global-tip-block-text: #215d42;
- --global-tip-block-title: #359469;
- --global-warning-block: #e7c000;
- --global-warning-block-bg: #fff8d8;
- --global-warning-block-text: #6b5900;
- --global-warning-block-title: #b29400;
- --global-danger-block: #c00;
- --global-danger-block-bg: #ffe0e0;
- --global-danger-block-text: #600;
- --global-danger-block-title: #c00;
-
- .fa-sun {
- padding-left: 10px;
- padding-top: 12px;
- display : block;
- }
- .fa-moon {
- display : none;
- }
-
- .repo-img-light {
- display: none;
- }
- .repo-img-dark {
- display: block;
- }
-}
diff --git a/_sass/_variables.scss b/_sass/_variables.scss
deleted file mode 100644
index b050aa6e..00000000
--- a/_sass/_variables.scss
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Variables used throughout the theme.
- * To adjust anything, simply edit the variables below and rebuild the theme.
- ******************************************************************************/
-
-
-// Colors
-$red-color: #FF3636 !default;
-$red-color-dark: #B71C1C !default;
-$orange-color: #F29105 !default;
-$blue-color: #0076df !default;
-$blue-color-dark: #00369f !default;
-$cyan-color: #2698BA !default;
-$light-cyan-color: lighten($cyan-color, 25%);
-$green-color: #00ab37 !default;
-$green-color-lime: #B7D12A !default;
-$green-color-dark: #009f06 !default;
-$green-color-light: #ddffdd !default;
-$green-color-bright: #11D68B !default;
-$purple-color: #B509AC !default;
-$light-purple-color: lighten($purple-color, 25%);
-$pink-color: #f92080 !default;
-$pink-color-light: #ffdddd !default;
-$yellow-color: #efcc00 !default;
-
-$grey-color: #828282 !default;
-$grey-color-light: lighten($grey-color, 40%);
-$grey-color-dark: #1C1C1D;
-$grey-900: #212529;
-
-$white-color: #ffffff !default;
-$black-color: #000000 !default;
-
-
-// Theme colors
-
-$code-bg-color-light: rgba($purple-color, 0.05);
-$code-bg-color-dark: #2c3237 !default;
diff --git a/assets/css/main.css b/assets/css/main.css
new file mode 100644
index 00000000..e188987f
--- /dev/null
+++ b/assets/css/main.css
@@ -0,0 +1,1335 @@
+@charset "UTF-8";
+/*******************************************************************************
+ * Variables used throughout the theme.
+ * To adjust anything, simply edit the variables below and rebuild the theme.
+ ******************************************************************************/
+/*******************************************************************************
+ * Themes
+ ******************************************************************************/
+:root {
+ --global-bg-color: #ffffff;
+ --global-code-bg-color: rgba(181, 9, 172, 0.05);
+ --global-text-color: #000000;
+ --global-text-color-light: #828282;
+ --global-theme-color: #009f06;
+ --global-hover-color: #009f06;
+ --global-hover-text-color: #ffffff;
+ --global-footer-bg-color: #1C1C1D;
+ --global-footer-text-color: #e8e8e8;
+ --global-footer-link-color: #ffffff;
+ --global-distill-app-color: #828282;
+ --global-divider-color: rgba(0,0,0,.1);
+ --global-card-bg-color: #ffffff;
+ --global-tip-block: #42b983;
+ --global-tip-block-bg: #e2f5ec;
+ --global-tip-block-text: #215d42;
+ --global-tip-block-title: #359469;
+ --global-warning-block: #e7c000;
+ --global-warning-block-bg: #fff8d8;
+ --global-warning-block-text: #6b5900;
+ --global-warning-block-title: #b29400;
+ --global-danger-block: #c00;
+ --global-danger-block-bg: #ffe0e0;
+ --global-danger-block-text: #600;
+ --global-danger-block-title: #c00;
+}
+:root .fa-sun {
+ display: none;
+}
+:root .fa-moon {
+ padding-left: 10px;
+ padding-top: 12px;
+ display: block;
+}
+:root .repo-img-light {
+ display: block;
+}
+:root .repo-img-dark {
+ display: none;
+}
+
+html[data-theme=dark] {
+ --global-bg-color: #1C1C1D;
+ --global-code-bg-color: #2c3237;
+ --global-text-color: #e8e8e8;
+ --global-text-color-light: #e8e8e8;
+ --global-theme-color: #2698BA;
+ --global-hover-color: #2698BA;
+ --global-hover-text-color: #ffffff;
+ --global-footer-bg-color: #e8e8e8;
+ --global-footer-text-color: #1C1C1D;
+ --global-footer-link-color: #000000;
+ --global-distill-app-color: #e8e8e8;
+ --global-divider-color: #424246;
+ --global-card-bg-color: #212529;
+ --global-tip-block: #42b983;
+ --global-tip-block-bg: #e2f5ec;
+ --global-tip-block-text: #215d42;
+ --global-tip-block-title: #359469;
+ --global-warning-block: #e7c000;
+ --global-warning-block-bg: #fff8d8;
+ --global-warning-block-text: #6b5900;
+ --global-warning-block-title: #b29400;
+ --global-danger-block: #c00;
+ --global-danger-block-bg: #ffe0e0;
+ --global-danger-block-text: #600;
+ --global-danger-block-title: #c00;
+}
+html[data-theme=dark] .fa-sun {
+ padding-left: 10px;
+ padding-top: 12px;
+ display: block;
+}
+html[data-theme=dark] .fa-moon {
+ display: none;
+}
+html[data-theme=dark] .repo-img-light {
+ display: none;
+}
+html[data-theme=dark] .repo-img-dark {
+ display: block;
+}
+
+/******************************************************************************
+ * Content
+ ******************************************************************************/
+body {
+ padding-bottom: 70px;
+ color: var(--global-text-color);
+ background-color: var(--global-bg-color);
+}
+body h1, body h2, body h3, body h4, body h5, body h6 {
+ scroll-margin-top: 66px;
+}
+
+body.fixed-top-nav {
+ padding-top: 56px;
+}
+
+body.sticky-bottom-footer {
+ padding-bottom: 0;
+}
+
+.container {
+ max-width: 800px;
+}
+
+.profile img {
+ width: 100%;
+}
+
+/******************************************************************************
+ * Publications
+ ******************************************************************************/
+/*****************************************************************************
+* Projects
+*****************************************************************************/
+/*******************************************************************************
+ * Styles for the base elements of the theme.
+ ******************************************************************************/
+p,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+em,
+div,
+li,
+span,
+strong {
+ color: var(--global-text-color);
+}
+
+hr {
+ border-top: 1px solid var(--global-divider-color);
+}
+
+table td,
+table th {
+ font-size: 1rem;
+}
+table th {
+ font-weight: bold;
+}
+
+a,
+table.table a {
+ color: var(--global-theme-color);
+}
+a:hover,
+table.table a:hover {
+ color: var(--global-theme-color);
+ text-decoration: underline;
+}
+a:hover:after :not(.nav-item.dropdown),
+table.table a:hover:after :not(.nav-item.dropdown) {
+ width: 100%;
+}
+
+.table-dark {
+ background-color: transparent;
+}
+
+figure,
+img {
+ max-width: 90vw;
+}
+
+blockquote {
+ background: var(--global-bg-color);
+ border-left: 2px solid var(--global-theme-color);
+ margin: 1.5em 10px;
+ padding: 0.5em 10px;
+ font-size: 1.2rem;
+}
+
+.equation {
+ margin-bottom: 1rem;
+ text-align: center;
+}
+
+.caption {
+ font-size: 0.875rem;
+ margin-top: 0.75rem;
+ margin-bottom: 1.5rem;
+ text-align: center;
+}
+
+.card {
+ background-color: var(--global-card-bg-color);
+}
+.card img {
+ width: 100%;
+}
+.card .card-title {
+ color: var(--global-text-color);
+}
+.card .card-item {
+ width: auto;
+ margin-bottom: 10px;
+}
+.card .card-item .row {
+ display: flex;
+ align-items: center;
+}
+
+.citation,
+.citation-number {
+ color: var(--global-theme-color);
+}
+
+.profile {
+ width: 100%;
+}
+.profile .address {
+ margin-bottom: 5px;
+ margin-top: 5px;
+ font-family: monospace;
+}
+.profile .address p {
+ display: inline-block;
+ margin: 0;
+}
+
+.profile.float-right {
+ margin-left: 1rem;
+}
+
+.profile.float-left {
+ margin-right: 1rem;
+}
+
+@media (min-width: 576px) {
+ .profile {
+ width: 30%;
+ }
+ .profile .address p {
+ display: block;
+ }
+}
+.post-description {
+ margin-bottom: 2rem;
+ font-size: 0.875rem;
+}
+.post-description a {
+ color: inherit;
+}
+.post-description a:hover {
+ color: var(--global-theme-color);
+ text-decoration: none;
+}
+
+.navbar {
+ box-shadow: none;
+ border-bottom: 1px solid var(--global-divider-color);
+ background-color: var(--global-bg-color);
+ opacity: 0.95;
+}
+
+.navbar .dropdown-menu {
+ background-color: var(--global-bg-color);
+ border: 1px solid var(--global-divider-color);
+}
+.navbar .dropdown-menu a:not(.active) {
+ color: var(--global-text-color);
+}
+.navbar .dropdown-menu a:hover {
+ color: var(--global-hover-color);
+}
+.navbar .dropdown-menu .dropdown-divider {
+ border-top: 1px solid var(--global-divider-color) !important;
+}
+
+.dropdown-item {
+ color: var(--global-text-color);
+}
+.dropdown-item:hover {
+ color: var(--global-hover-color);
+ background-color: var(--global-bg-color);
+}
+
+.navbar.navbar-light a:hover {
+ text-decoration: none;
+}
+.navbar.navbar-light .navbar-brand {
+ color: var(--global-text-color);
+}
+.navbar.navbar-light .navbar-nav .nav-item .nav-link {
+ color: var(--global-text-color);
+}
+.navbar.navbar-light .navbar-nav .nav-item .nav-link:hover {
+ color: var(--global-hover-color);
+}
+.navbar.navbar-light .navbar-nav .nav-item.active > .nav-link {
+ background-color: inherit;
+ font-weight: bolder;
+ color: var(--global-theme-color);
+}
+.navbar.navbar-light .navbar-nav .nav-item.active > .nav-link:hover {
+ color: var(--global-hover-color);
+}
+.navbar.navbar-light .navbar-brand.social {
+ padding-bottom: 0;
+ padding-top: 0;
+ font-size: 1.7rem;
+}
+.navbar.navbar-light .navbar-brand.social a i::before {
+ color: var(--global-text-color);
+ transition-property: all 0.2s ease-in-out;
+}
+.navbar.navbar-light .navbar-brand.social a:hover i::before {
+ color: var(--global-theme-color);
+}
+
+.navbar-toggler .icon-bar {
+ display: block;
+ width: 22px;
+ height: 2px;
+ background-color: var(--global-text-color);
+ border-radius: 1px;
+ margin-bottom: 4px;
+ transition: all 0.2s;
+}
+.navbar-toggler .top-bar {
+ transform: rotate(45deg);
+ transform-origin: 10% 10%;
+}
+.navbar-toggler .middle-bar {
+ opacity: 0;
+}
+.navbar-toggler .bottom-bar {
+ transform: rotate(-45deg);
+ transform-origin: 10% 90%;
+}
+
+.navbar-toggler.collapsed .top-bar {
+ transform: rotate(0);
+}
+.navbar-toggler.collapsed .middle-bar {
+ opacity: 1;
+}
+.navbar-toggler.collapsed .bottom-bar {
+ transform: rotate(0);
+}
+
+#light-toggle {
+ padding: 0;
+ border: 0;
+ background-color: inherit;
+ color: var(--global-text-color);
+}
+#light-toggle:hover {
+ color: var(--global-hover-color);
+}
+
+.news table td {
+ font-size: 1rem;
+ color: var(--global-text-color);
+}
+
+.news table th {
+ color: var(--global-text-color);
+}
+
+.social {
+ text-align: center;
+}
+.social .contact-icons {
+ font-size: 4rem;
+}
+.social .contact-icons a i::before {
+ color: var(--global-text-color);
+ transition-property: all 0.2s ease-in-out;
+}
+.social .contact-icons a:hover i::before {
+ color: var(--global-theme-color);
+}
+.social .contact-note {
+ font-size: 0.8rem;
+}
+
+.wechat-modal {
+ display: none;
+ position: fixed;
+ z-index: 1;
+ padding-top: 100px;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ overflow: auto;
+ background-color: rgb(0, 0, 0);
+ background-color: rgba(0, 0, 0, 0.8);
+}
+
+.wechat-modal > img {
+ display: block;
+ position: relative;
+ top: 50%;
+ left: 50%;
+ width: 33%;
+ max-width: 400px;
+ transform: translate(-50%, -50%);
+}
+
+@media only screen and (max-width: 400px) {
+ .wechat-modal > img {
+ width: 100%;
+ }
+}
+footer.fixed-bottom {
+ background-color: var(--global-footer-bg-color);
+ font-size: 0.75rem;
+}
+footer.fixed-bottom .container {
+ color: var(--global-footer-text-color);
+ padding-top: 9px;
+ padding-bottom: 8px;
+}
+footer.fixed-bottom a {
+ color: var(--global-footer-link-color);
+}
+footer.fixed-bottom a:hover {
+ color: var(--global-theme-color);
+ text-decoration: none;
+}
+
+footer.sticky-bottom {
+ border-top: 1px solid var(--global-divider-color);
+ padding-top: 40px;
+ padding-bottom: 40px;
+ font-size: 0.9rem;
+}
+
+.cv {
+ margin-bottom: 40px;
+}
+.cv .card {
+ background-color: var(--global-card-bg-color);
+ border: 1px solid var(--global-divider-color);
+}
+.cv .card .list-group-item {
+ background-color: inherit;
+ border-color: var(--global-divider-color);
+}
+.cv .card .list-group-item .badge {
+ color: var(--global-card-bg-color) !important;
+ background-color: var(--global-theme-color) !important;
+}
+
+.table-cv-map {
+ background-color: transparent;
+ border: none;
+ color: var(--global-text-color);
+}
+
+@media (min-width: 768px) {
+ .repo {
+ max-width: 50%;
+ }
+}
+.header-bar {
+ border-bottom: 1px solid var(--global-divider-color);
+ text-align: center;
+ padding-top: 2rem;
+ padding-bottom: 3rem;
+}
+.header-bar h1 {
+ color: var(--global-theme-color);
+ font-size: 5rem;
+}
+
+.tag-category-list {
+ border-bottom: 1px solid var(--global-divider-color);
+ text-align: center;
+ padding-top: 1rem;
+}
+.tag-category-list ul {
+ justify-content: center;
+ display: flow-root;
+}
+.tag-category-list ul p,
+.tag-category-list ul li {
+ list-style: none;
+ display: inline-block;
+ padding: 1rem 0.5rem;
+ color: var(--global-text-color-light);
+}
+
+.post-title mjx-container[jax=CHTML][display=true] {
+ display: unset;
+}
+
+.post-list {
+ margin: 0;
+ margin-bottom: 40px;
+ padding: 0;
+}
+.post-list li {
+ border-bottom: 1px solid var(--global-divider-color);
+ list-style: none;
+ padding-top: 2rem;
+ padding-bottom: 2rem;
+}
+.post-list li .post-meta {
+ color: var(--global-text-color-light);
+ font-size: 0.875rem;
+ margin-bottom: 0;
+}
+.post-list li .post-tags {
+ color: var(--global-text-color-light);
+ font-size: 0.875rem;
+ padding-top: 0.25rem;
+ padding-bottom: 0;
+}
+.post-list li a {
+ color: var(--global-text-color);
+ text-decoration: none;
+}
+.post-list li a:hover {
+ color: var(--global-theme-color);
+}
+.post-list li mjx-container[jax=CHTML][display=true] {
+ display: unset;
+}
+
+.pagination .page-item .page-link {
+ color: var(--global-text-color);
+}
+.pagination .page-item .page-link:hover {
+ color: #000000;
+}
+.pagination .page-item.active .page-link {
+ color: #ffffff;
+ background-color: var(--global-theme-color);
+}
+.pagination .page-item.active .page-link:hover {
+ background-color: var(--global-theme-color);
+}
+
+.distill a:hover {
+ border-bottom-color: var(--global-theme-color);
+ text-decoration: none;
+}
+
+.projects a {
+ text-decoration: none;
+}
+.projects a:hover .card-title {
+ color: var(--global-theme-color);
+}
+.projects .card img {
+ width: 100%;
+}
+.projects .card-item {
+ width: auto;
+ margin-bottom: 10px;
+}
+.projects .card-item .row {
+ display: flex;
+ align-items: center;
+}
+.projects .grid-sizer,
+.projects .grid-item {
+ width: 250px;
+ margin-bottom: 10px;
+}
+.projects h2.category {
+ color: var(--global-divider-color);
+ border-bottom: 1px solid var(--global-divider-color);
+ padding-top: 0.5rem;
+ margin-top: 2rem;
+ margin-bottom: 1rem;
+ text-align: right;
+}
+
+.publications {
+ margin-top: 2rem;
+}
+.publications h1 {
+ color: var(--global-theme-color);
+ font-size: 2rem;
+ text-align: center;
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+.publications h2 {
+ margin-bottom: 1rem;
+}
+.publications h2 span {
+ font-size: 1.5rem;
+}
+.publications h2.bibliography {
+ color: var(--global-divider-color);
+ border-top: 1px solid var(--global-divider-color);
+ padding-top: 1rem;
+ margin-top: 2rem;
+ margin-bottom: -2rem;
+ text-align: right;
+}
+.publications ol.bibliography {
+ list-style: none;
+ padding: 0;
+ margin-top: 0;
+}
+.publications ol.bibliography li {
+ margin-bottom: 1rem;
+}
+.publications ol.bibliography li .preview {
+ width: 100%;
+ min-width: 80px;
+ max-width: 200px;
+}
+.publications ol.bibliography li .abbr {
+ height: 2rem;
+ margin-bottom: 0.5rem;
+}
+.publications ol.bibliography li .abbr abbr {
+ display: inline-block;
+ background-color: var(--global-theme-color);
+ padding-left: 1rem;
+ padding-right: 1rem;
+}
+.publications ol.bibliography li .abbr abbr a {
+ color: white;
+}
+.publications ol.bibliography li .abbr abbr a:hover {
+ text-decoration: none;
+}
+.publications ol.bibliography li .abbr .award {
+ color: var(--global-theme-color) !important;
+ border: 1px solid var(--global-theme-color);
+}
+.publications ol.bibliography li .title {
+ font-weight: bolder;
+}
+.publications ol.bibliography li .author a {
+ border-bottom: 1px dashed var(--global-text-color);
+}
+.publications ol.bibliography li .author a:hover {
+ border-bottom-style: solid;
+ text-decoration: none;
+}
+.publications ol.bibliography li .author > em {
+ border-bottom: 1px solid;
+ font-style: normal;
+}
+.publications ol.bibliography li .author > span.more-authors {
+ cursor: pointer;
+}
+.publications ol.bibliography li .author > span.more-authors:hover {
+ color: var(--global-text-color);
+ border-bottom: 1px dashed var(--global-text-color);
+}
+.publications ol.bibliography li .links a.btn {
+ color: var(--global-text-color);
+ border: 1px solid var(--global-text-color);
+ padding-left: 1rem;
+ padding-right: 1rem;
+ padding-top: 0.25rem;
+ padding-bottom: 0.25rem;
+ margin-left: 0;
+}
+.publications ol.bibliography li .links a.btn:hover {
+ color: var(--global-theme-color);
+ border-color: var(--global-theme-color);
+}
+.publications ol.bibliography li .badges {
+ padding-bottom: 0.5rem;
+}
+.publications ol.bibliography li .badges span {
+ display: inline-block;
+ color: #000000;
+ height: 100%;
+ padding-right: 0.5rem;
+ vertical-align: middle;
+}
+.publications ol.bibliography li .badges span:hover {
+ text-decoration: underline;
+}
+.publications ol.bibliography li .hidden {
+ font-size: 0.875rem;
+ max-height: 0px;
+ overflow: hidden;
+ text-align: justify;
+ transition-property: 0.15s ease;
+ -moz-transition: 0.15s ease;
+ -ms-transition: 0.15s ease;
+ -o-transition: 0.15s ease;
+ transition: all 0.15s ease;
+}
+.publications ol.bibliography li .hidden p {
+ line-height: 1.4em;
+ margin: 10px;
+}
+.publications ol.bibliography li .hidden pre {
+ font-size: 1em;
+ line-height: 1.4em;
+ padding: 10px;
+}
+.publications ol.bibliography li .hidden.open {
+ max-height: 100em;
+ transition-property: 0.15s ease;
+ -moz-transition: 0.15s ease;
+ -ms-transition: 0.15s ease;
+ -o-transition: 0.15s ease;
+ transition: all 0.15s ease;
+}
+.publications ol.bibliography li div.abstract.hidden {
+ border: dashed 1px var(--global-bg-color);
+}
+.publications ol.bibliography li div.abstract.hidden.open {
+ border-color: var(--global-text-color);
+}
+
+figure.highlight {
+ margin: 0 0 1rem;
+}
+
+pre {
+ color: var(--global-theme-color);
+ background-color: var(--global-code-bg-color);
+ border-radius: 6px;
+ padding: 6px 12px;
+}
+pre pre,
+pre code {
+ background-color: transparent;
+ border-radius: 0;
+ margin-bottom: 0;
+ padding: 0;
+}
+
+code {
+ color: var(--global-theme-color);
+ background-color: var(--global-code-bg-color);
+ border-radius: 3px;
+ padding: 3px 3px;
+}
+
+html.transition,
+html.transition *,
+html.transition *:before,
+html.transition *:after {
+ transition: all 750ms !important;
+ transition-delay: 0 !important;
+}
+
+.post .post-meta {
+ color: var(--global-text-color-light);
+ font-size: 0.875rem;
+ margin-bottom: 0;
+}
+.post .post-tags {
+ color: var(--global-text-color-light);
+ font-size: 0.875rem;
+ padding-top: 0.25rem;
+ padding-bottom: 1rem;
+}
+.post .post-tags a {
+ color: var(--global-text-color-light);
+ text-decoration: none;
+}
+.post .post-tags a:hover {
+ color: var(--global-theme-color);
+}
+.post .post-content blockquote {
+ border-left: 5px solid var(--global-theme-color);
+ padding: 8px;
+}
+.post .post-content blockquote p {
+ margin-bottom: 0;
+}
+
+progress {
+ /* Positioning */
+ position: fixed;
+ left: 0;
+ top: 56px;
+ z-index: 10;
+ /* Dimensions */
+ width: 100%;
+ height: 1px;
+ /* Reset the appearance */
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ /* Get rid of the default border in Firefox/Opera. */
+ border: none;
+ /* Progress bar container for Firefox/IE10 */
+ background-color: transparent;
+ /* Progress bar value for IE10 */
+ color: var(--global-theme-color);
+}
+
+progress::-webkit-progress-bar {
+ background-color: transparent;
+}
+
+progress::-webkit-progress-value {
+ background-color: var(--global-theme-color);
+}
+
+progress::-moz-progress-bar {
+ background-color: var(--global-theme-color);
+}
+
+.progress-container {
+ width: 100%;
+ background-color: transparent;
+ position: fixed;
+ top: 56px;
+ left: 0;
+ height: 5px;
+ display: block;
+}
+
+.progress-bar {
+ background-color: var(--global-theme-color);
+ width: 0%;
+ display: block;
+ height: inherit;
+}
+
+/* Copy button */
+.code-display-wrapper {
+ position: relative;
+}
+.code-display-wrapper .copy {
+ background: var(--global-card-bg-color);
+ border-color: var(--global-bg-color);
+ border-radius: 0.3rem;
+ border-style: none;
+ color: var(--global-text-color);
+ font-size: medium;
+ opacity: 0;
+ position: absolute;
+ right: 0.5rem;
+ top: 0.5rem;
+}
+.code-display-wrapper:active .copy, .code-display-wrapper:focus .copy, .code-display-wrapper:hover .copy {
+ color: var(--global-hover-color);
+ opacity: 1;
+}
+
+.btn-group.dropdown .btn {
+ box-shadow: none;
+ -webkit-box-shadow: none;
+}
+.btn-group.dropdown .btn-secondary.dropdown-toggle {
+ border: 1px solid var(--global-divider-color);
+}
+.btn-group.dropdown .btn-secondary.dropdown-toggle .page-size {
+ color: inherit;
+}
+.btn-group.dropdown .btn-secondary.dropdown-toggle:not(.active) {
+ background-color: var(--global-bg-color) !important;
+ color: var(--global-text-color);
+}
+.btn-group.dropdown .btn-secondary.dropdown-toggle:hover {
+ background-color: var(--global-hover-color) !important;
+ color: var(--global-hover-text-color) !important;
+}
+.btn-group.dropdown .dropdown-menu {
+ background-color: var(--global-bg-color);
+}
+.btn-group.dropdown .dropdown-item {
+ background-color: var(--global-bg-color);
+ color: var(--global-text-color);
+}
+.btn-group.dropdown .dropdown-item:hover {
+ color: var(--global-hover-color);
+}
+.btn-group.dropdown .dropdown-item.active, .btn-group.dropdown .dropdown-item:active {
+ background-color: var(--global-hover-color);
+ color: var(--global-hover-text-color) !important;
+}
+.btn-group.dropdown .dropdown-item.active:hover, .btn-group.dropdown .dropdown-item:active:hover {
+ color: var(--global-hover-text-color);
+}
+
+/* Table of Contents */
+nav[data-toggle=toc] {
+ top: 5rem;
+}
+nav[data-toggle=toc] .nav .nav > li > a {
+ font-size: 0.75rem;
+}
+nav[data-toggle=toc] .nav > li > a {
+ color: var(--global-text-color);
+ font-size: 0.75rem;
+}
+nav[data-toggle=toc] .nav > li > a:hover {
+ color: var(--global-hover-color);
+ border-left-color: var(--global-hover-color);
+}
+nav[data-toggle=toc] .nav-link.active {
+ color: var(--global-theme-color);
+ border-left-color: var(--global-theme-color);
+ font-size: 0.75rem;
+}
+nav[data-toggle=toc] .nav-link.active:hover {
+ color: var(--global-hover-color);
+ border-left-color: var(--global-hover-color);
+}
+
+/* small screens */
+@media (max-width: 576px) {
+ /* override stickyness so that the navigation does not follow scrolling */
+ nav[data-toggle=toc] {
+ visibility: hidden;
+ height: 0;
+ top: 0;
+ }
+}
+/* Tips, warnings, and dangers blockquotes */
+.post .post-content blockquote.block-tip {
+ border-color: var(--global-tip-block);
+ background-color: var(--global-tip-block-bg);
+}
+.post .post-content blockquote.block-tip p {
+ color: var(--global-tip-block-text);
+}
+.post .post-content blockquote.block-tip h1, .post .post-content blockquote.block-tip h2, .post .post-content blockquote.block-tip h3, .post .post-content blockquote.block-tip h4, .post .post-content blockquote.block-tip h5, .post .post-content blockquote.block-tip h6 {
+ color: var(--global-tip-block-title);
+}
+.post .post-content blockquote.block-warning {
+ border-color: var(--global-warning-block);
+ background-color: var(--global-warning-block-bg);
+}
+.post .post-content blockquote.block-warning p {
+ color: var(--global-warning-block-text);
+}
+.post .post-content blockquote.block-warning h1, .post .post-content blockquote.block-warning h2, .post .post-content blockquote.block-warning h3, .post .post-content blockquote.block-warning h4, .post .post-content blockquote.block-warning h5, .post .post-content blockquote.block-warning h6 {
+ color: var(--global-warning-block-title);
+}
+.post .post-content blockquote.block-danger {
+ border-color: var(--global-danger-block);
+ background-color: var(--global-danger-block-bg);
+}
+.post .post-content blockquote.block-danger p {
+ color: var(--global-danger-block-text);
+}
+.post .post-content blockquote.block-danger h1, .post .post-content blockquote.block-danger h2, .post .post-content blockquote.block-danger h3, .post .post-content blockquote.block-danger h4, .post .post-content blockquote.block-danger h5, .post .post-content blockquote.block-danger h6 {
+ color: var(--global-danger-block-title);
+}
+
+.featured-posts a {
+ color: var(--global-text-color-light);
+ text-decoration: none;
+}
+.featured-posts a .card-text {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+.featured-posts a:hover {
+ color: var(--global-theme-color);
+}
+.featured-posts a:hover .card-title {
+ color: var(--global-theme-color);
+}
+.featured-posts .card-item {
+ margin-bottom: 10px;
+}
+.featured-posts .post-meta {
+ color: var(--global-text-color-light);
+ font-size: 0.875rem;
+ margin-bottom: 0;
+ padding-top: 0.5rem;
+}
+
+/*******************************************************************************
+ * Style overrides for distill blog posts.
+ ******************************************************************************/
+d-byline {
+ border-top-color: var(--global-divider-color) !important;
+}
+
+d-byline h3 {
+ color: var(--global-text-color) !important;
+}
+
+d-byline a, d-article d-byline a {
+ color: var(--global-text-color) !important;
+}
+d-byline a:hover, d-article d-byline a:hover {
+ color: var(--global-hover-color) !important;
+}
+
+d-article {
+ border-top-color: var(--global-divider-color) !important;
+}
+d-article p, d-article h1, d-article h2, d-article h3, d-article h4, d-article h5, d-article h6, d-article li, d-article table {
+ color: var(--global-text-color) !important;
+}
+d-article h1, d-article h2, d-article hr, d-article table, d-article table th, d-article table td {
+ border-bottom-color: var(--global-divider-color) !important;
+}
+d-article a {
+ color: var(--global-theme-color) !important;
+}
+d-article a:hover {
+ color: var(--global-theme-color) !important;
+}
+d-article b i {
+ display: inline;
+}
+d-article details {
+ color: var(--global-text-color);
+ background-color: var(--global-code-bg-color);
+ margin-top: 0;
+ padding: 8px 12px;
+ position: relative;
+ border-radius: 6px;
+ display: block;
+ margin-bottom: 20px;
+ grid-column: text;
+ overflow: auto;
+ max-width: 100%;
+}
+d-article details summary {
+ color: var(--global-theme-color);
+}
+d-article details p {
+ margin-top: 0.5rem;
+ margin-bottom: 0.5rem;
+}
+d-article d-contents {
+ align-self: start;
+ grid-column: 1/4;
+ grid-row: auto/span 4;
+ justify-self: end;
+ margin-top: 0em;
+ padding-left: 2em;
+ padding-right: 3em;
+ border-right: 1px solid var(--global-divider-color);
+ width: max(70%, 300px);
+ margin-right: 0px;
+ margin-top: 0em;
+ display: grid;
+ grid-template-columns: minmax(8px, 1fr) [toc] auto minmax(8px, 1fr) [toc-line] 1px minmax(32px, 2fr);
+}
+d-article d-contents nav {
+ grid-column: toc;
+}
+d-article d-contents nav a {
+ border-bottom: none !important;
+}
+d-article d-contents nav a:hover {
+ border-bottom: 1px solid var(--global-text-color) !important;
+}
+d-article d-contents nav h3 {
+ margin-top: 0;
+ margin-bottom: 1em;
+}
+d-article d-contents nav div {
+ display: block;
+ outline: none;
+ margin-bottom: 0.8em;
+ color: rgba(0, 0, 0, 0.8);
+ font-weight: bold;
+}
+d-article d-contents nav ul {
+ padding-left: 1em;
+ margin-top: 0;
+ margin-bottom: 6px;
+ list-style-type: none;
+}
+d-article d-contents nav ul li {
+ margin-bottom: 0.25em;
+}
+d-article d-contents .figcaption {
+ line-height: 1.4em;
+}
+d-article d-contents toc-line {
+ border-right: 1px solid var(--global-divider-color);
+ grid-column: toc-line;
+}
+d-article d-footnote {
+ scroll-margin-top: 66px;
+}
+
+d-appendix {
+ border-top-color: var(--global-divider-color) !important;
+ color: var(--global-distill-app-color) !important;
+}
+d-appendix h3, d-appendix li, d-appendix span {
+ color: var(--global-distill-app-color) !important;
+}
+d-appendix a, d-appendix a.footnote-backlink {
+ color: var(--global-distill-app-color) !important;
+}
+d-appendix a:hover, d-appendix a.footnote-backlink:hover {
+ color: var(--global-hover-color) !important;
+}
+
+@media (max-width: 1024px) {
+ d-article d-contents {
+ display: block;
+ grid-column-start: 2;
+ grid-column-end: -2;
+ padding-bottom: 0.5em;
+ margin-bottom: 1em;
+ padding-top: 0.5em;
+ width: 100%;
+ border: 1px solid var(--global-divider-color);
+ }
+ d-article d-contents nav {
+ grid-column: none;
+ }
+}
+/*****************************
+ * CV shared styles
+ *****************************/
+div.container-link-button {
+ margin-right: 0.5rem;
+}
+
+table.table-cv {
+ background-color: transparent !important;
+}
+
+a.btncv {
+ color: var(--global-text-color) !important;
+ border: 1px solid var(--global-text-color) !important;
+ border-radius: 0.125rem;
+ padding-left: 1rem;
+ padding-right: 1rem;
+ padding-top: 0.25rem;
+ padding-bottom: 0.25rem;
+ text-decoration: none;
+ font-weight: 400;
+ font-size: 0.7rem;
+ text-align: center;
+ vertical-align: middle;
+ text-transform: uppercase;
+ white-space: nowrap;
+}
+
+a.btncv:hover {
+ color: var(--global-theme-color) !important;
+ border-color: var(--global-theme-color) !important;
+ text-decoration: none !important;
+}
+
+/*****************************
+ * CV TIME_TABLE styles
+ *****************************/
+p.location {
+ font-size: 0.7rem;
+ white-space: nowrap;
+}
+
+i.iconlocation {
+ color: var(--global-theme-color);
+ font-size: 0.8rem;
+}
+
+i.iconinstitution {
+ color: var(--global-theme-color);
+ font-size: 0.95rem;
+ margin-right: 0.3rem;
+}
+
+i.icondepartment {
+ color: var(--global-theme-color);
+ font-size: 0.8rem;
+ margin-right: 0.3rem;
+}
+
+table.institution {
+ margin-bottom: 1rem;
+}
+
+td.department {
+ font-size: 0.8rem;
+}
+
+div.container-links {
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: flex-start;
+ margin-top: 1rem;
+ margin-bottom: 0.5rem;
+}
+
+/*****************************
+ * CV MAP styles
+ *****************************/
+div.container-pdf {
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: flex-start;
+}
+
+/*****************************
+ * CV LIST_GROUPS styles
+ *****************************/
+div.list-groups {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: flex-start;
+ flex-direction: row;
+ align-content: center;
+}
+
+div.list-group {
+ display: flex;
+ flex-wrap: wrap;
+ flex-direction: column;
+ align-items: flex-start;
+ margin-bottom: 2rem;
+}
+
+td.list-group-category {
+ color: var(--global-theme-color);
+ margin-bottom: 0.5rem;
+}
+
+td.list-group-category-icon {
+ font-size: 0.8rem;
+ color: var(--global-theme-color);
+ width: 1.4rem;
+ padding-right: 0.4rem;
+}
+
+td.list-group-name {
+ font-size: 0.8rem;
+}
+
+td.list-group-level {
+ font-size: 0.8rem;
+ padding-left: 0.5rem;
+}
+
+td.list-group-school {
+ font-size: 0.7rem;
+ padding-left: 0.5rem;
+ text-align: center;
+}
+
+p.list-group-time {
+ font-size: 0.7rem;
+ padding-left: 0.5rem;
+}
+
+td.list-group-link {
+ padding-left: 0.5rem;
+}
+
+/*****************************
+ * CV TOC styles
+ *****************************/
+a.anchor {
+ display: block;
+ position: relative;
+ top: -50px;
+ visibility: hidden;
+}
+
+ul.timeline {
+ margin-top: 2rem;
+ margin-bottom: 2rem;
+}
+
+ul.timeline li {
+ position: relative;
+ min-height: 2.2rem;
+ color: var(--global-text-color);
+ list-style-position: inside;
+}
+
+span.badge-toc {
+ color: var(--global-bg-color);
+ background-color: var(--global-theme-color);
+ border-radius: 0.125rem;
+ padding: 0.125rem 0.5rem 0.125rem 0.5rem;
+ font-weight: 700 !important;
+ display: inline-block;
+ inline-size: fit-content;
+}
+
+ul.timeline li::before {
+ content: "";
+ min-height: 2.5rem;
+ width: 1px;
+ background: var(--global-text-color);
+ margin: 0;
+ padding: 0;
+ position: absolute;
+ left: 2px;
+ top: -0.5rem;
+}
+
+/*ul.timeline::before {
+ content: "●";
+ font-size: 1em;
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ position: relative;
+ left: -2px;
+ top: 0.4rem;
+ color: var(--global-text-color);
+}
+ ul.timeline::after {
+ content: "●";
+ font-size: 1em;
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ position: relative;
+ left: -2px;
+ top: -1rem;
+ color: var(--global-text-color);
+}
+*/
+
+/*# sourceMappingURL=main.css.map */
\ No newline at end of file
diff --git a/assets/css/main.css.map b/assets/css/main.css.map
new file mode 100644
index 00000000..c0913eb0
--- /dev/null
+++ b/assets/css/main.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["../../_sass/_variables.scss","../../_sass/_themes.scss","../../_sass/_layout.scss","main.scss","../../_sass/_base.scss","../../_sass/_distill.scss","../../_sass/_cv.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAIA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEF;EACE;EACA;EACA;;AAGF;EACE;;AAEF;EACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEF;EACE;;AAGF;EACE;;AAEF;EACE;;;AC1FJ;AAAA;AAAA;AAIA;EACE;EACA;EACA;;AAEA;EACE;;;AAIJ;EAEE;;;AAGF;EAEE;;;AAGF;EACE,WCtBkB;;;AD2BlB;EACE;;;AAOJ;AAAA;AAAA;AAOA;AAAA;AAAA;AE7CA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAYE;;;AAGF;EACE;;;AAIA;AAAA;EAEE;;AAGF;EACE;;;AAIJ;AAAA;EAEE;;AAEA;AAAA;EACE;EACA;;AAGF;AAAA;EACE;;;AAIJ;EACE;;;AAGF;AAAA;EAEE;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAKF;EACE;EACA;;;AAKF;EACE;EACA;EACA;EACA;;;AAKF;EACE;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;EACA;;AAEA;EACE;EACA;;;AAON;AAAA;EAEE;;;AAKF;EACE;;AAEA;EACE;EACA;EACA;;AAEA;EACE;EACA;;;AAKN;EACE;;;AAGF;EACE;;;AAGF;EACE;IACE;;EAGE;IACE;;;AAMR;EACE;EACA;;AAEA;EACE;;AAEA;EACE;EACA;;;AAQN;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;;;AAIJ;EACE;;AAEA;EACE;EACA;;;AAMA;EACE;;AAIJ;EACE;;AAGF;EACE;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;AAGE;EACE;EACA;;AAIA;EACE;;;AAQR;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;;AAKF;EACE;;AAGF;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;EACA;EACA;;AAEA;EACE;;;AAOJ;EACE;EACA;;;AAGF;EACE;;;AAKF;EACE;;AAEA;EACE;;AAGE;EACE;EACA;;AAIA;EACE;;AAMR;EACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;IACE;;;AAMJ;EACE;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;;AAEA;EACE;EACA;;;AAKN;EACE;EACA;EACA;EACA;;;AAKF;EACE;;AAEA;EACE;EACA;;AAEA;EACE;EACA;;AAEA;EACE;EACA;;;AAMR;EACE;EACA;EACA;;;AAKF;EACE;IACE;;;AAMJ;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAEA;AAAA;EAEE;EACA;EACA;EACA;;;AAMJ;EACE;;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAEA;EACE;;AAIJ;EACE;;;AAOF;EACE;;AAEA;EACE,OJveM;;AI2eV;EACE,OJ7eQ;EI8eR;;AAEA;EACE;;;AAUN;EACE;EACA;;;AAQF;EACE;;AAGE;EACE;;AAMJ;EACE;;AAIJ;EACE;EACA;;AAEA;EACE;EACA;;AAIJ;AAAA;EAEE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAOJ;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;;AAKN;EACE;EACA;;AAIJ;EACE;;AAIA;EACE;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;;AAGF;EAGE;;AAEA;EACE;EACA;;AAMJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAKN;EACE;;AACA;EACE;EACA,OJxqBI;EIyqBJ;EACA;EACA;;AAEA;EACE;;AAKN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;;AAOR;EACE;;;AAGF;EACE;EACA;EACA;EACA;;AAEA;AAAA;EAEE;EACA;EACA;EACA;;;AAIJ;EACE;EACA;EACA;EACA;;;AAKF;AAAA;AAAA;AAAA;EAIE;EACA;;;AAKA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAEA;EACE;;AAMJ;EACE;EACA;;AAEA;EACE;;;AAMR;AACE;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;AAEA;EACA;EACA;EACA;AAEA;EACA;AAEA;EACA;AAEA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;AACA;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EAGE;EACA;;;AAKF;EACE;EACA;;AAGF;EACE;;AAEA;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAIJ;EACE;;AAGF;EACE;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;;AAEA;EACE;;;AAKN;AACA;EACE;;AAEA;EACE;;AAGF;EACE;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;EACA;;;AAKN;AACA;AACE;EACA;IACE;IACA;IACA;;;AAIJ;AAEE;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAMJ;EACE;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;;AAEA;EACE;;AAKN;EACE;;AAGF;EACE;EACA;EACA;EACA;;;ACnjCJ;AAAA;AAAA;AAIA;EACE;;;AAGF;EACE;;;AAGF;EACE;;AACA;EACE;;;AAIJ;EACE;;AACA;EACE;;AAEF;EACE;;AAEF;EACE;;AACA;EACE;;AAGJ;EACE;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACE;;AAEF;EACI;EACA;;AAIN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,uBACE;;AAIF;EACE;;AACA;EACE;;AACA;EACE;;AAGJ;EACE;EACA;;AAEF;EACE;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;EACA;;AACA;EACE;;AAIN;EACE;;AAEF;EACE;EACA;;AAIJ;EACE;;;AAIJ;EACE;EACA;;AACA;EACE;;AAEF;EACE;;AACA;EACE;;;AAKN;EAEI;IACE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EACA;IACE;;;AClJR;AAAA;AAAA;AAIA;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;AAAA;AAAA;AAIA;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AAAA;AAAA;AAIA;EACE;EACA;EACA;EACA;EACA;;;AAGF;AAAA;AAAA;AAIA;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;AAAA;AAAA;AAIA;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["/*******************************************************************************\n * Variables used throughout the theme.\n * To adjust anything, simply edit the variables below and rebuild the theme.\n ******************************************************************************/\n\n\n// Colors\n$red-color: #FF3636 !default;\n$red-color-dark: #B71C1C !default;\n$orange-color: #F29105 !default;\n$blue-color: #0076df !default;\n$blue-color-dark: #00369f !default;\n$cyan-color: #2698BA !default;\n$light-cyan-color: lighten($cyan-color, 25%);\n$green-color: #00ab37 !default;\n$green-color-lime: #B7D12A !default;\n$green-color-dark: #009f06 !default;\n$green-color-light: #ddffdd !default;\n$green-color-bright: #11D68B !default;\n$purple-color: #B509AC !default;\n$light-purple-color: lighten($purple-color, 25%);\n$pink-color: #f92080 !default;\n$pink-color-light: #ffdddd !default;\n$yellow-color: #efcc00 !default;\n\n$grey-color: #828282 !default;\n$grey-color-light: lighten($grey-color, 40%);\n$grey-color-dark: #1C1C1D;\n$grey-900: #212529;\n\n$white-color: #ffffff !default;\n$black-color: #000000 !default;\n\n\n// Theme colors\n\n$code-bg-color-light: rgba($purple-color, 0.05);\n$code-bg-color-dark: #2c3237 !default;\n","/*******************************************************************************\r\n * Themes\r\n ******************************************************************************/\r\n\r\n:root {\r\n --global-bg-color: #{$white-color};\r\n --global-code-bg-color: #{$code-bg-color-light};\r\n --global-text-color: #{$black-color};\r\n --global-text-color-light: #{$grey-color};\r\n --global-theme-color: #{$green-color-dark};\r\n --global-hover-color: #{$green-color-dark};\r\n --global-hover-text-color: #{$white-color};\r\n --global-footer-bg-color: #{$grey-color-dark};\r\n --global-footer-text-color: #{$grey-color-light};\r\n --global-footer-link-color: #{$white-color};\r\n --global-distill-app-color: #{$grey-color};\r\n --global-divider-color: rgba(0,0,0,.1);\r\n --global-card-bg-color: #{$white-color};\r\n\r\n --global-tip-block: #42b983;\r\n --global-tip-block-bg: #e2f5ec;\r\n --global-tip-block-text: #215d42;\r\n --global-tip-block-title: #359469;\r\n --global-warning-block: #e7c000;\r\n --global-warning-block-bg: #fff8d8;\r\n --global-warning-block-text: #6b5900;\r\n --global-warning-block-title: #b29400;\r\n --global-danger-block: #c00;\r\n --global-danger-block-bg: #ffe0e0;\r\n --global-danger-block-text: #600;\r\n --global-danger-block-title: #c00;\r\n\r\n .fa-sun {\r\n display : none;\r\n }\r\n .fa-moon {\r\n padding-left: 10px;\r\n padding-top: 12px;\r\n display : block;\r\n }\r\n\r\n .repo-img-light {\r\n display: block;\r\n }\r\n .repo-img-dark {\r\n display: none;\r\n }\r\n}\r\n\r\nhtml[data-theme='dark'] {\r\n --global-bg-color: #{$grey-color-dark};\r\n --global-code-bg-color: #{$code-bg-color-dark};\r\n --global-text-color: #{$grey-color-light};\r\n --global-text-color-light: #{$grey-color-light};\r\n --global-theme-color: #{$cyan-color};\r\n --global-hover-color: #{$cyan-color};\r\n --global-hover-text-color: #{$white-color};\r\n --global-footer-bg-color: #{$grey-color-light};\r\n --global-footer-text-color: #{$grey-color-dark};\r\n --global-footer-link-color: #{$black-color};\r\n --global-distill-app-color: #{$grey-color-light};\r\n --global-divider-color: #424246;\r\n --global-card-bg-color: #{$grey-900};\r\n\r\n --global-tip-block: #42b983;\r\n --global-tip-block-bg: #e2f5ec;\r\n --global-tip-block-text: #215d42;\r\n --global-tip-block-title: #359469;\r\n --global-warning-block: #e7c000;\r\n --global-warning-block-bg: #fff8d8;\r\n --global-warning-block-text: #6b5900;\r\n --global-warning-block-title: #b29400;\r\n --global-danger-block: #c00;\r\n --global-danger-block-bg: #ffe0e0;\r\n --global-danger-block-text: #600;\r\n --global-danger-block-title: #c00;\r\n\r\n .fa-sun {\r\n padding-left: 10px;\r\n padding-top: 12px;\r\n display : block;\r\n }\r\n .fa-moon {\r\n display : none;\r\n }\r\n\r\n .repo-img-light {\r\n display: none;\r\n }\r\n .repo-img-dark {\r\n display: block;\r\n }\r\n}\r\n","/******************************************************************************\n * Content\n ******************************************************************************/\n\nbody {\n padding-bottom: 70px;\n color: var(--global-text-color);\n background-color: var(--global-bg-color);\n\n h1, h2, h3, h4, h5, h6 {\n scroll-margin-top: 66px;\n }\n}\n\nbody.fixed-top-nav {\n // Add some padding for the nav-bar.\n padding-top: 56px;\n}\n\nbody.sticky-bottom-footer {\n // Remove padding below footer.\n padding-bottom: 0;\n}\n\n.container {\n max-width: $max-content-width;\n}\n\n// Profile\n.profile {\n img {\n width: 100%;\n }\n}\n\n// TODO: redefine content layout.\n\n\n/******************************************************************************\n * Publications\n ******************************************************************************/\n\n// TODO: redefine publications layout.\n\n\n/*****************************************************************************\n* Projects\n*****************************************************************************/\n\n// TODO: redefine projects layout.\n","@charset \"utf-8\";\n\n// Dimensions\n$max-content-width: 800px;\n\n@import\n \"variables\",\n \"themes\",\n \"layout\",\n \"base\",\n \"distill\",\n \"cv\"\n;\n","/*******************************************************************************\n * Styles for the base elements of the theme.\n ******************************************************************************/\n\n// Typography\n\np,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nem,\ndiv,\nli,\nspan,\nstrong {\n color: var(--global-text-color);\n}\n\nhr {\n border-top: 1px solid var(--global-divider-color);\n}\n\ntable {\n td,\n th {\n font-size: 1rem;\n }\n\n th {\n font-weight: bold;\n }\n}\n\na,\ntable.table a {\n color: var(--global-theme-color);\n\n &:hover {\n color: var(--global-theme-color);\n text-decoration: underline;\n }\n\n &:hover:after :not(.nav-item.dropdown) {\n width: 100%;\n }\n}\n\n.table-dark {\n background-color: transparent;\n}\n\nfigure,\nimg {\n max-width: 90vw;\n}\n\nblockquote {\n background: var(--global-bg-color);\n border-left: 2px solid var(--global-theme-color);\n margin: 1.5em 10px;\n padding: 0.5em 10px;\n font-size: 1.2rem;\n}\n\n// Math\n\n.equation {\n margin-bottom: 1rem;\n text-align: center;\n}\n\n// Caption\n\n.caption {\n font-size: 0.875rem;\n margin-top: 0.75rem;\n margin-bottom: 1.5rem;\n text-align: center;\n}\n\n// Card\n\n.card {\n background-color: var(--global-card-bg-color);\n\n img {\n width: 100%;\n }\n\n .card-title {\n color: var(--global-text-color);\n }\n\n .card-item {\n width: auto;\n margin-bottom: 10px;\n\n .row {\n display: flex;\n align-items: center;\n }\n }\n}\n\n// Citation\n\n.citation,\n.citation-number {\n color: var(--global-theme-color);\n}\n\n// Profile\n\n.profile {\n width: 100%;\n\n .address {\n margin-bottom: 5px;\n margin-top: 5px;\n font-family: monospace;\n\n p {\n display: inline-block;\n margin: 0;\n }\n }\n}\n\n.profile.float-right {\n margin-left: 1rem;\n}\n\n.profile.float-left {\n margin-right: 1rem;\n}\n\n@media (min-width: 576px) {\n .profile {\n width: 30%;\n\n .address {\n p {\n display: block;\n }\n }\n }\n}\n\n.post-description {\n margin-bottom: 2rem;\n font-size: 0.875rem;\n\n a {\n color: inherit;\n\n &:hover {\n color: var(--global-theme-color);\n text-decoration: none;\n }\n }\n}\n\n\n// Navbar customization\n\n.navbar {\n box-shadow: none;\n border-bottom: 1px solid var(--global-divider-color);\n background-color: var(--global-bg-color);\n opacity: 0.95;\n}\n\n.navbar .dropdown-menu {\n background-color: var(--global-bg-color);\n border: 1px solid var(--global-divider-color);\n\n a:not(.active) {\n color: var(--global-text-color);\n }\n\n a:hover {\n color: var(--global-hover-color);\n }\n\n .dropdown-divider {\n border-top: 1px solid var(--global-divider-color) !important;\n }\n}\n\n.dropdown-item {\n color: var(--global-text-color);\n\n &:hover {\n color: var(--global-hover-color);\n background-color: var(--global-bg-color);\n }\n}\n\n.navbar.navbar-light {\n a {\n &:hover {\n text-decoration: none;\n }\n }\n\n .navbar-brand {\n color: var(--global-text-color);\n }\n\n .navbar-nav .nav-item .nav-link {\n color: var(--global-text-color);\n\n &:hover {\n color: var(--global-hover-color);\n }\n }\n\n .navbar-nav .nav-item.active>.nav-link {\n background-color: inherit;\n font-weight: bolder;\n color: var(--global-theme-color);\n\n &:hover {\n color: var(--global-hover-color);\n }\n }\n\n .navbar-brand.social {\n padding-bottom: 0;\n padding-top: 0;\n font-size: 1.7rem;\n\n a {\n i::before {\n color: var(--global-text-color);\n transition-property: all 0.2s ease-in-out;\n }\n\n &:hover {\n i::before {\n color: var(--global-theme-color);\n }\n }\n }\n }\n}\n\n.navbar-toggler {\n .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n background-color: var(--global-text-color);\n border-radius: 1px;\n margin-bottom: 4px;\n transition: all 0.2s;\n }\n\n .top-bar {\n transform: rotate(45deg);\n transform-origin: 10% 10%;\n }\n\n .middle-bar {\n opacity: 0;\n }\n\n .bottom-bar {\n transform: rotate(-45deg);\n transform-origin: 10% 90%;\n }\n}\n\n.navbar-toggler.collapsed {\n .top-bar {\n transform: rotate(0);\n }\n\n .middle-bar {\n opacity: 1;\n }\n\n .bottom-bar {\n transform: rotate(0);\n }\n}\n\n#light-toggle {\n padding: 0;\n border: 0;\n background-color: inherit;\n color: var(--global-text-color);\n\n &:hover {\n color: var(--global-hover-color);\n }\n}\n\n\n// News\n\n.news table td {\n font-size: 1rem;\n color: var(--global-text-color);\n}\n\n.news table th {\n color: var(--global-text-color);\n}\n\n// Social (bottom)\n\n.social {\n text-align: center;\n\n .contact-icons {\n font-size: 4rem;\n\n a {\n i::before {\n color: var(--global-text-color);\n transition-property: all 0.2s ease-in-out;\n }\n\n &:hover {\n i::before {\n color: var(--global-theme-color);\n }\n }\n }\n }\n\n .contact-note {\n font-size: 0.8rem;\n }\n}\n\n.wechat-modal {\n display: none;\n position: fixed;\n z-index: 1;\n padding-top: 100px;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n overflow: auto;\n background-color: rgb(0,0,0);\n background-color: rgba(0,0,0,0.8);\n}\n\n.wechat-modal > img {\n display: block;\n position: relative;\n top: 50%;\n left: 50%;\n width: 33%;\n max-width: 400px;\n transform: translate(-50%, -50%);\n}\n\n@media only screen and (max-width: 400px){\n .wechat-modal > img {\n width: 100%;\n }\n}\n\n\n// Footer\nfooter.fixed-bottom {\n background-color: var(--global-footer-bg-color);\n font-size: 0.75rem;\n\n .container {\n color: var(--global-footer-text-color);\n padding-top: 9px;\n padding-bottom: 8px;\n }\n\n a {\n color: var(--global-footer-link-color);\n\n &:hover {\n color: var(--global-theme-color);\n text-decoration: none;\n }\n }\n}\n\nfooter.sticky-bottom {\n border-top: 1px solid var(--global-divider-color);\n padding-top: 40px;\n padding-bottom: 40px;\n font-size: 0.9rem;\n}\n\n// CV\n\n.cv {\n margin-bottom: 40px;\n\n .card {\n background-color: var(--global-card-bg-color);\n border: 1px solid var(--global-divider-color);\n\n .list-group-item {\n background-color: inherit;\n border-color: var(--global-divider-color);\n\n .badge {\n color: var(--global-card-bg-color) !important;\n background-color: var(--global-theme-color) !important;\n }\n }\n }\n}\n\n.table-cv-map {\n background-color: transparent;\n border: none;\n color: var(--global-text-color);\n}\n\n// Repositories\n\n@media (min-width: 768px) {\n .repo {\n max-width: 50%;\n }\n}\n\n// Blog\n\n.header-bar {\n border-bottom: 1px solid var(--global-divider-color);\n text-align: center;\n padding-top: 2rem;\n padding-bottom: 3rem;\n\n h1 {\n color: var(--global-theme-color);\n font-size: 5rem;\n }\n}\n\n.tag-category-list {\n border-bottom: 1px solid var(--global-divider-color);\n text-align: center;\n padding-top: 1rem;\n\n ul {\n justify-content: center;\n display: flow-root;\n\n p,\n li {\n list-style: none;\n display: inline-block;\n padding: 1rem 0.5rem;\n color: var(--global-text-color-light);\n }\n }\n}\n\n.post-title {\n mjx-container[jax=\"CHTML\"][display=\"true\"] {\n display: unset;\n }\n}\n\n.post-list {\n margin: 0;\n margin-bottom: 40px;\n padding: 0;\n\n li {\n border-bottom: 1px solid var(--global-divider-color);\n list-style: none;\n padding-top: 2rem;\n padding-bottom: 2rem;\n\n .post-meta {\n color: var(--global-text-color-light);\n font-size: 0.875rem;\n margin-bottom: 0;\n }\n\n .post-tags {\n color: var(--global-text-color-light);\n font-size: 0.875rem;\n padding-top: 0.25rem;\n padding-bottom: 0;\n }\n\n a {\n color: var(--global-text-color);\n text-decoration: none;\n\n &:hover {\n color: var(--global-theme-color);\n }\n }\n\n mjx-container[jax=\"CHTML\"][display=\"true\"] {\n display: unset;\n }\n }\n}\n\n.pagination {\n .page-item {\n .page-link {\n color: var(--global-text-color);\n\n &:hover {\n color: $black-color;\n }\n }\n\n &.active .page-link {\n color: $white-color;\n background-color: var(--global-theme-color);\n\n &:hover {\n background-color: var(--global-theme-color);\n }\n }\n }\n}\n\n\n// Distill\n\n.distill {\n a:hover {\n border-bottom-color: var(--global-theme-color);\n text-decoration: none;\n }\n}\n\n\n// Projects\n\n.projects {\n a {\n text-decoration: none;\n\n &:hover {\n .card-title {\n color: var(--global-theme-color);\n }\n }\n }\n\n .card {\n img {\n width: 100%;\n }\n }\n\n .card-item {\n width: auto;\n margin-bottom: 10px;\n\n .row {\n display: flex;\n align-items: center;\n }\n }\n\n .grid-sizer,\n .grid-item {\n width: 250px;\n margin-bottom: 10px;\n }\n\n h2.category {\n color: var(--global-divider-color);\n border-bottom: 1px solid var(--global-divider-color);\n padding-top: 0.5rem;\n margin-top: 2rem;\n margin-bottom: 1rem;\n text-align: right;\n }\n}\n\n\n// Publications\n\n.publications {\n margin-top: 2rem;\n\n h1 {\n color: var(--global-theme-color);\n font-size: 2rem;\n text-align: center;\n margin-top: 1em;\n margin-bottom: 1em;\n }\n\n h2 {\n margin-bottom: 1rem;\n\n span {\n font-size: 1.5rem;\n }\n }\n\n h2.bibliography {\n color: var(--global-divider-color);\n border-top: 1px solid var(--global-divider-color);\n padding-top: 1rem;\n margin-top: 2rem;\n margin-bottom: -2rem;\n text-align: right;\n }\n\n ol.bibliography {\n list-style: none;\n padding: 0;\n margin-top: 0;\n\n li {\n margin-bottom: 1rem;\n\n .preview {\n width: 100%;\n min-width: 80px;\n max-width: 200px;\n }\n\n .abbr {\n height: 2rem;\n margin-bottom: 0.5rem;\n\n abbr {\n display: inline-block;\n background-color: var(--global-theme-color);\n padding-left: 1rem;\n padding-right: 1rem;\n\n a {\n color: white;\n\n &:hover {\n text-decoration: none;\n }\n }\n }\n\n .award {\n color: var(--global-theme-color) !important;\n border: 1px solid var(--global-theme-color);\n }\n }\n\n .title {\n font-weight: bolder;\n }\n\n .author {\n a {\n border-bottom: 1px dashed var(--global-text-color);\n\n &:hover {\n border-bottom-style: solid;\n text-decoration: none;\n }\n }\n\n >em {\n border-bottom: 1px solid;\n font-style: normal;\n }\n\n >span.more-authors {\n // color: var(--global-text-color-light);\n // border-bottom: 1px dashed var(--global-text-color-light);\n cursor: pointer;\n\n &:hover {\n color: var(--global-text-color);\n border-bottom: 1px dashed var(--global-text-color);\n }\n }\n }\n\n .links {\n a.btn {\n color: var(--global-text-color);\n border: 1px solid var(--global-text-color);\n padding-left: 1rem;\n padding-right: 1rem;\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n margin-left: 0;\n\n &:hover {\n color: var(--global-theme-color);\n border-color: var(--global-theme-color);\n }\n }\n }\n\n .badges {\n padding-bottom: 0.5rem;\n span {\n display: inline-block;\n color: $black-color;\n height: 100%;\n padding-right: 0.5rem;\n vertical-align: middle;\n\n &:hover {\n text-decoration: underline;\n }\n }\n }\n\n .hidden {\n font-size: 0.875rem;\n max-height: 0px;\n overflow: hidden;\n text-align: justify;\n transition-property: 0.15s ease;\n -moz-transition: 0.15s ease;\n -ms-transition: 0.15s ease;\n -o-transition: 0.15s ease;\n transition: all 0.15s ease;\n\n p {\n line-height: 1.4em;\n margin: 10px;\n }\n\n pre {\n font-size: 1em;\n line-height: 1.4em;\n padding: 10px;\n }\n }\n\n .hidden.open {\n max-height: 100em;\n transition-property: 0.15s ease;\n -moz-transition: 0.15s ease;\n -ms-transition: 0.15s ease;\n -o-transition: 0.15s ease;\n transition: all 0.15s ease;\n }\n\n div.abstract.hidden {\n border: dashed 1px var(--global-bg-color);\n }\n\n div.abstract.hidden.open {\n border-color: var(--global-text-color);\n }\n }\n }\n}\n\n// Rouge Color Customization\nfigure.highlight {\n margin: 0 0 1rem;\n}\n\npre {\n color: var(--global-theme-color);\n background-color: var(--global-code-bg-color);\n border-radius: 6px;\n padding: 6px 12px;\n\n pre,\n code {\n background-color: transparent;\n border-radius: 0;\n margin-bottom: 0;\n padding: 0;\n }\n}\n\ncode {\n color: var(--global-theme-color);\n background-color: var(--global-code-bg-color);\n border-radius: 3px;\n padding: 3px 3px;\n}\n\n\n// Transitioning Themes\nhtml.transition,\nhtml.transition *,\nhtml.transition *:before,\nhtml.transition *:after {\n transition: all 750ms !important;\n transition-delay: 0 !important;\n}\n\n// Extra Markdown style (post Customization)\n.post {\n .post-meta {\n color: var(--global-text-color-light);\n font-size: 0.875rem;\n margin-bottom: 0;\n }\n\n .post-tags {\n color: var(--global-text-color-light);\n font-size: 0.875rem;\n padding-top: 0.25rem;\n padding-bottom: 1rem;\n\n a {\n color: var(--global-text-color-light);\n text-decoration: none;\n\n &:hover {\n color: var(--global-theme-color);\n }\n }\n }\n\n .post-content {\n blockquote {\n border-left: 5px solid var(--global-theme-color);\n padding: 8px;\n\n p {\n margin-bottom: 0;\n }\n }\n }\n}\n\nprogress {\n /* Positioning */\n position: fixed;\n left: 0;\n top: 56px;\n z-index: 10;\n\n /* Dimensions */\n width: 100%;\n height: 1px;\n\n /* Reset the appearance */\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n\n /* Get rid of the default border in Firefox/Opera. */\n border: none;\n\n /* Progress bar container for Firefox/IE10 */\n background-color: transparent;\n\n /* Progress bar value for IE10 */\n color: var(--global-theme-color);\n}\n\nprogress::-webkit-progress-bar {\n background-color: transparent;\n}\n\nprogress::-webkit-progress-value {\n background-color: var(--global-theme-color);\n}\n\nprogress::-moz-progress-bar {\n background-color: var(--global-theme-color);\n}\n\n.progress-container {\n width: 100%;\n background-color: transparent;\n position: fixed;\n top: 56px;\n left: 0;\n height: 5px;\n display: block;\n}\n\n.progress-bar {\n background-color: var(--global-theme-color);\n width: 0%;\n display: block;\n height: inherit;\n}\n\n/* Copy button */\n.code-display-wrapper {\n position: relative;\n\n .copy {\n background: var(--global-card-bg-color);\n border-color: var(--global-bg-color);\n border-radius: .3rem;\n border-style: none;\n color: var(--global-text-color);\n font-size: medium;\n opacity: 0;\n position: absolute;\n right: .5rem;\n top: .5rem;\n }\n\n &:active .copy,\n &:focus .copy,\n &:hover .copy {\n color: var(--global-hover-color);\n opacity: 1;\n }\n}\n\n.btn-group.dropdown {\n .btn {\n box-shadow: none;\n -webkit-box-shadow: none;\n }\n\n .btn-secondary.dropdown-toggle {\n border: 1px solid var(--global-divider-color);\n\n .page-size {\n color: inherit;\n }\n\n &:not(.active) {\n background-color: var(--global-bg-color) !important;\n color: var(--global-text-color);\n }\n\n &:hover {\n background-color: var(--global-hover-color) !important;\n color: var(--global-hover-text-color) !important;\n }\n }\n\n .dropdown-menu {\n background-color: var(--global-bg-color);\n }\n\n .dropdown-item {\n background-color: var(--global-bg-color);\n color: var(--global-text-color);\n\n &:hover {\n color: var(--global-hover-color);\n }\n }\n\n .dropdown-item.active, .dropdown-item:active {\n background-color: var(--global-hover-color);\n color: var(--global-hover-text-color) !important;\n\n &:hover {\n color: var(--global-hover-text-color);\n }\n }\n}\n\n/* Table of Contents */\nnav[data-toggle=\"toc\"] {\n top: 5rem;\n\n .nav .nav>li>a {\n font-size: .75rem;\n }\n\n .nav>li>a {\n color: var(--global-text-color);\n font-size: .75rem;\n\n &:hover {\n color: var(--global-hover-color);\n border-left-color: var(--global-hover-color);\n }\n }\n\n .nav-link.active {\n color: var(--global-theme-color);\n border-left-color: var(--global-theme-color);\n font-size: .75rem;\n\n &:hover {\n color: var(--global-hover-color);\n border-left-color: var(--global-hover-color);\n }\n }\n}\n\n/* small screens */\n@media (max-width: 576px) {\n /* override stickyness so that the navigation does not follow scrolling */\n nav[data-toggle=\"toc\"] {\n visibility: hidden;\n height: 0;\n top: 0;\n }\n}\n\n/* Tips, warnings, and dangers blockquotes */\n.post .post-content blockquote {\n &.block-tip {\n border-color: var(--global-tip-block);\n background-color: var(--global-tip-block-bg);\n\n p {\n color: var(--global-tip-block-text);\n }\n\n h1, h2, h3, h4, h5, h6 {\n color: var(--global-tip-block-title);\n }\n }\n\n &.block-warning {\n border-color: var(--global-warning-block);\n background-color: var(--global-warning-block-bg);\n\n p {\n color: var(--global-warning-block-text);\n }\n\n h1, h2, h3, h4, h5, h6 {\n color: var(--global-warning-block-title);\n }\n }\n\n &.block-danger {\n border-color: var(--global-danger-block);\n background-color: var(--global-danger-block-bg);\n\n p {\n color: var(--global-danger-block-text);\n }\n\n h1, h2, h3, h4, h5, h6 {\n color: var(--global-danger-block-title);\n }\n }\n}\n\n.featured-posts {\n a {\n color: var(--global-text-color-light);\n text-decoration: none;\n\n .card-text {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n &:hover {\n color: var(--global-theme-color);\n\n .card-title {\n color: var(--global-theme-color);\n }\n }\n }\n\n .card-item {\n margin-bottom: 10px;\n }\n\n .post-meta {\n color: var(--global-text-color-light);\n font-size: 0.875rem;\n margin-bottom: 0;\n padding-top: 0.5rem;\n }\n}\n","/*******************************************************************************\n * Style overrides for distill blog posts.\n ******************************************************************************/\n\nd-byline {\n border-top-color: var(--global-divider-color) !important;\n}\n\nd-byline h3 {\n color: var(--global-text-color) !important;\n}\n\nd-byline a, d-article d-byline a {\n color: var(--global-text-color) !important;\n &:hover {\n color: var(--global-hover-color) !important;\n }\n}\n\nd-article {\n border-top-color: var(--global-divider-color) !important;\n p, h1, h2, h3, h4, h5, h6, li, table {\n color: var(--global-text-color) !important;\n }\n h1, h2, hr, table, table th, table td {\n border-bottom-color: var(--global-divider-color) !important;\n }\n a {\n color: var(--global-theme-color) !important;\n &:hover {\n color: var(--global-theme-color) !important;\n }\n }\n b i {\n display: inline;\n }\n\n // Style taken from code blocks\n details { \n color: var(--global-text-color);\n background-color: var(--global-code-bg-color);\n margin-top: 0;\n padding: 8px 12px;\n position: relative;\n border-radius: 6px;\n display: block;\n margin-bottom: 20px;\n grid-column: text;\n overflow: auto;\n max-width: 100%;\n summary {\n color: var(--global-theme-color);\n }\n p {\n margin-top: 0.5rem;\n margin-bottom: 0.5rem;\n }\n }\n\n d-contents {\n align-self: start;\n grid-column: 1 / 4;\n grid-row: auto / span 4;\n justify-self: end;\n margin-top: 0em;\n padding-left: 2em;\n padding-right: 3em;\n border-right: 1px solid var(--global-divider-color);\n width: calc(max(70%, 300px));\n margin-right: 0px;\n margin-top: 0em;\n display: grid;\n grid-template-columns:\n minmax(8px, 1fr) [toc] auto\n minmax(8px, 1fr) [toc-line] 1px\n minmax(32px, 2fr);\n\n nav {\n grid-column: toc;\n a {\n border-bottom: none !important;\n &:hover {\n border-bottom: 1px solid var(--global-text-color) !important;\n }\n }\n h3 {\n margin-top: 0;\n margin-bottom: 1em;\n }\n div {\n display: block;\n outline: none;\n margin-bottom: 0.8em;\n color: rgba(0, 0, 0, 0.8);\n font-weight: bold;\n }\n ul {\n padding-left: 1em;\n margin-top: 0;\n margin-bottom: 6px;\n list-style-type: none;\n li {\n margin-bottom: 0.25em;\n }\n }\n }\n .figcaption {\n line-height: 1.4em;\n }\n toc-line {\n border-right: 1px solid var(--global-divider-color);\n grid-column: toc-line;\n }\n }\n\n d-footnote {\n scroll-margin-top: 66px;\n }\n}\n\nd-appendix {\n border-top-color: var(--global-divider-color) !important;\n color: var(--global-distill-app-color) !important;\n h3, li, span {\n color: var(--global-distill-app-color) !important;\n }\n a, a.footnote-backlink {\n color: var(--global-distill-app-color) !important;\n &:hover {\n color: var(--global-hover-color) !important;\n }\n }\n}\n\n@media (max-width: 1024px) {\n d-article {\n d-contents {\n display: block;\n grid-column-start: 2;\n grid-column-end: -2;\n padding-bottom: 0.5em;\n margin-bottom: 1em;\n padding-top: 0.5em;\n width: 100%;\n border: 1px solid var(--global-divider-color);\n nav {\n grid-column: none;\n }\n }\n }\n}\n","/*****************************\n * CV shared styles\n *****************************/\n\ndiv.container-link-button {\n margin-right: 0.5rem;\n}\n\ntable.table-cv {\n background-color: transparent !important;\n}\n\na.btncv {\n color: var(--global-text-color) !important;\n border: 1px solid var(--global-text-color) !important;\n border-radius: 0.125rem;\n padding-left: 1rem;\n padding-right: 1rem;\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n text-decoration: none;\n font-weight: 400;\n font-size: .7rem;\n text-align: center;\n vertical-align: middle;\n text-transform: uppercase;\n white-space: nowrap;\n}\n\na.btncv:hover {\n color: var(--global-theme-color) !important;\n border-color: var(--global-theme-color) !important;\n text-decoration: none !important;\n}\n\n/*****************************\n * CV TIME_TABLE styles\n *****************************/\n\np.location {\n font-size: 0.7rem;\n white-space: nowrap;\n}\n\ni.iconlocation {\n color: var(--global-theme-color);\n font-size: 0.8rem;\n}\n\ni.iconinstitution {\n color: var(--global-theme-color);\n font-size: 0.95rem;\n margin-right: 0.3rem;\n}\n\ni.icondepartment {\n color: var(--global-theme-color);\n font-size: 0.8rem;\n margin-right: 0.3rem;\n}\n\ntable.institution {\n margin-bottom: 1rem;\n}\n\ntd.department {\n font-size: 0.8rem;\n}\n\ndiv.container-links {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-start;\n margin-top: 1rem;\n margin-bottom: 0.5rem;\n}\n\n/*****************************\n * CV MAP styles\n *****************************/\n\ndiv.container-pdf {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-start;\n}\n\n/*****************************\n * CV LIST_GROUPS styles\n *****************************/\n\ndiv.list-groups {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n flex-direction: row;\n align-content: center;\n}\n\ndiv.list-group {\n display: flex;\n flex-wrap: wrap;\n flex-direction: column;\n align-items: flex-start;\n margin-bottom: 2rem;\n}\n\ntd.list-group-category {\n color: var(--global-theme-color);\n margin-bottom: 0.5rem;\n}\n\ntd.list-group-category-icon {\n font-size: 0.8rem;\n color: var(--global-theme-color);\n width: 1.4rem;\n padding-right: 0.4rem;\n}\n\ntd.list-group-name {\n font-size: 0.8rem;\n}\n\ntd.list-group-level {\n font-size: 0.8rem;\n padding-left: 0.5rem;\n}\n\ntd.list-group-school {\n font-size: 0.7rem;\n padding-left: 0.5rem;\n text-align: center;\n}\n\np.list-group-time {\n font-size: 0.7rem;\n padding-left: 0.5rem;\n}\n\ntd.list-group-link {\n padding-left: 0.5rem;\n}\n\n/*****************************\n * CV TOC styles\n *****************************/\n\na.anchor {\n display: block;\n position: relative;\n top: -50px;\n visibility: hidden;\n}\n\nul.timeline {\n margin-top: 2rem;\n margin-bottom: 2rem;\n}\n\nul.timeline li {\n position: relative;\n min-height: 2.2rem;\n color: var(--global-text-color);\n list-style-position: inside;\n}\n\nspan.badge-toc {\n color: var(--global-bg-color);\n background-color: var(--global-theme-color);\n border-radius: 0.125rem;\n padding: 0.125rem 0.5rem 0.125rem 0.5rem;\n font-weight: 700 !important;\n display: inline-block;\n inline-size: fit-content;\n}\n\nul.timeline li::before {\n content: \"\";\n min-height: 2.5rem;\n width: 1px;\n background: var(--global-text-color);\n margin: 0;\n padding: 0;\n position: absolute;\n left: 2px;\n top: -0.5rem;\n}\n\n/*ul.timeline::before {\n content: \"●\";\n font-size: 1em;\n display: inline-block;\n margin: 0;\n padding: 0;\n position: relative;\n left: -2px;\n top: 0.4rem;\n color: var(--global-text-color);\n}\n ul.timeline::after {\n content: \"●\";\n font-size: 1em;\n display: inline-block;\n margin: 0;\n padding: 0;\n position: relative;\n left: -2px;\n top: -1rem;\n color: var(--global-text-color);\n}\n*/"],"file":"main.css"}
\ No newline at end of file
diff --git a/assets/css/main.scss b/assets/css/main.scss
deleted file mode 100644
index fb82fa3f..00000000
--- a/assets/css/main.scss
+++ /dev/null
@@ -1,16 +0,0 @@
----
-# Only the main Sass file needs front matter (the dashes are enough)
----
-@charset "utf-8";
-
-// Dimensions
-$max-content-width: {{ site.max_width }};
-
-@import
- "variables",
- "themes",
- "layout",
- "base",
- "distill",
- "cv"
-;
diff --git a/assets/img/1-1400.webp b/assets/img/1-1400.webp
new file mode 100644
index 00000000..9296a619
Binary files /dev/null and b/assets/img/1-1400.webp differ
diff --git a/assets/img/1-480.webp b/assets/img/1-480.webp
new file mode 100644
index 00000000..81885b2b
Binary files /dev/null and b/assets/img/1-480.webp differ
diff --git a/assets/img/1-800.webp b/assets/img/1-800.webp
new file mode 100644
index 00000000..76c7ca80
Binary files /dev/null and b/assets/img/1-800.webp differ
diff --git a/assets/img/11-1400.webp b/assets/img/11-1400.webp
new file mode 100644
index 00000000..753bca24
Binary files /dev/null and b/assets/img/11-1400.webp differ
diff --git a/assets/img/11-480.webp b/assets/img/11-480.webp
new file mode 100644
index 00000000..38e1fd39
Binary files /dev/null and b/assets/img/11-480.webp differ
diff --git a/assets/img/11-800.webp b/assets/img/11-800.webp
new file mode 100644
index 00000000..4551cf14
Binary files /dev/null and b/assets/img/11-800.webp differ
diff --git a/assets/img/2016PH-1400.webp b/assets/img/2016PH-1400.webp
new file mode 100644
index 00000000..ef73e675
Binary files /dev/null and b/assets/img/2016PH-1400.webp differ
diff --git a/assets/img/2016PH-480.webp b/assets/img/2016PH-480.webp
new file mode 100644
index 00000000..0bae529f
Binary files /dev/null and b/assets/img/2016PH-480.webp differ
diff --git a/assets/img/2016PH-800.webp b/assets/img/2016PH-800.webp
new file mode 100644
index 00000000..ef73e675
Binary files /dev/null and b/assets/img/2016PH-800.webp differ
diff --git a/assets/img/2017Bezier-1400.webp b/assets/img/2017Bezier-1400.webp
new file mode 100644
index 00000000..096c6672
Binary files /dev/null and b/assets/img/2017Bezier-1400.webp differ
diff --git a/assets/img/2017Bezier-480.webp b/assets/img/2017Bezier-480.webp
new file mode 100644
index 00000000..b14deb13
Binary files /dev/null and b/assets/img/2017Bezier-480.webp differ
diff --git a/assets/img/2017Bezier-800.webp b/assets/img/2017Bezier-800.webp
new file mode 100644
index 00000000..096c6672
Binary files /dev/null and b/assets/img/2017Bezier-800.webp differ
diff --git a/assets/img/2017Bspline-1400.webp b/assets/img/2017Bspline-1400.webp
new file mode 100644
index 00000000..051432d4
Binary files /dev/null and b/assets/img/2017Bspline-1400.webp differ
diff --git a/assets/img/2017Bspline-480.webp b/assets/img/2017Bspline-480.webp
new file mode 100644
index 00000000..9caadb70
Binary files /dev/null and b/assets/img/2017Bspline-480.webp differ
diff --git a/assets/img/2017Bspline-800.webp b/assets/img/2017Bspline-800.webp
new file mode 100644
index 00000000..051432d4
Binary files /dev/null and b/assets/img/2017Bspline-800.webp differ
diff --git a/assets/img/2017PH-1400.webp b/assets/img/2017PH-1400.webp
new file mode 100644
index 00000000..bc7475ae
Binary files /dev/null and b/assets/img/2017PH-1400.webp differ
diff --git a/assets/img/2017PH-480.webp b/assets/img/2017PH-480.webp
new file mode 100644
index 00000000..46cfdc16
Binary files /dev/null and b/assets/img/2017PH-480.webp differ
diff --git a/assets/img/2017PH-800.webp b/assets/img/2017PH-800.webp
new file mode 100644
index 00000000..bc7475ae
Binary files /dev/null and b/assets/img/2017PH-800.webp differ
diff --git a/assets/img/2017Rational-1400.webp b/assets/img/2017Rational-1400.webp
new file mode 100644
index 00000000..6e4b3de8
Binary files /dev/null and b/assets/img/2017Rational-1400.webp differ
diff --git a/assets/img/2017Rational-480.webp b/assets/img/2017Rational-480.webp
new file mode 100644
index 00000000..6e4b3de8
Binary files /dev/null and b/assets/img/2017Rational-480.webp differ
diff --git a/assets/img/2017Rational-800.webp b/assets/img/2017Rational-800.webp
new file mode 100644
index 00000000..6e4b3de8
Binary files /dev/null and b/assets/img/2017Rational-800.webp differ
diff --git a/assets/img/3-1400.webp b/assets/img/3-1400.webp
new file mode 100644
index 00000000..8e70338f
Binary files /dev/null and b/assets/img/3-1400.webp differ
diff --git a/assets/img/3-480.webp b/assets/img/3-480.webp
new file mode 100644
index 00000000..e2a7e7d7
Binary files /dev/null and b/assets/img/3-480.webp differ
diff --git a/assets/img/3-800.webp b/assets/img/3-800.webp
new file mode 100644
index 00000000..4ce0af49
Binary files /dev/null and b/assets/img/3-800.webp differ
diff --git a/assets/img/5-1400.webp b/assets/img/5-1400.webp
new file mode 100644
index 00000000..022ca345
Binary files /dev/null and b/assets/img/5-1400.webp differ
diff --git a/assets/img/5-480.webp b/assets/img/5-480.webp
new file mode 100644
index 00000000..aaa1153d
Binary files /dev/null and b/assets/img/5-480.webp differ
diff --git a/assets/img/5-800.webp b/assets/img/5-800.webp
new file mode 100644
index 00000000..844cc732
Binary files /dev/null and b/assets/img/5-800.webp differ
diff --git a/assets/img/6-1400.webp b/assets/img/6-1400.webp
new file mode 100644
index 00000000..2029ea30
Binary files /dev/null and b/assets/img/6-1400.webp differ
diff --git a/assets/img/6-480.webp b/assets/img/6-480.webp
new file mode 100644
index 00000000..cc0d0ad9
Binary files /dev/null and b/assets/img/6-480.webp differ
diff --git a/assets/img/6-800.webp b/assets/img/6-800.webp
new file mode 100644
index 00000000..e9425039
Binary files /dev/null and b/assets/img/6-800.webp differ
diff --git a/assets/img/code-screenshot-1400.webp b/assets/img/code-screenshot-1400.webp
new file mode 100644
index 00000000..6ea34f43
Binary files /dev/null and b/assets/img/code-screenshot-1400.webp differ
diff --git a/assets/img/code-screenshot-480.webp b/assets/img/code-screenshot-480.webp
new file mode 100644
index 00000000..13449c56
Binary files /dev/null and b/assets/img/code-screenshot-480.webp differ
diff --git a/assets/img/code-screenshot-800.webp b/assets/img/code-screenshot-800.webp
new file mode 100644
index 00000000..fea23c75
Binary files /dev/null and b/assets/img/code-screenshot-800.webp differ
diff --git a/assets/img/distill-screenshot-1400.webp b/assets/img/distill-screenshot-1400.webp
new file mode 100644
index 00000000..168b38b7
Binary files /dev/null and b/assets/img/distill-screenshot-1400.webp differ
diff --git a/assets/img/distill-screenshot-480.webp b/assets/img/distill-screenshot-480.webp
new file mode 100644
index 00000000..266779a1
Binary files /dev/null and b/assets/img/distill-screenshot-480.webp differ
diff --git a/assets/img/distill-screenshot-800.webp b/assets/img/distill-screenshot-800.webp
new file mode 100644
index 00000000..10cc5d71
Binary files /dev/null and b/assets/img/distill-screenshot-800.webp differ
diff --git a/assets/img/ellipse-1400.webp b/assets/img/ellipse-1400.webp
new file mode 100644
index 00000000..bfd7db5b
Binary files /dev/null and b/assets/img/ellipse-1400.webp differ
diff --git a/assets/img/ellipse-480.webp b/assets/img/ellipse-480.webp
new file mode 100644
index 00000000..9f866f3b
Binary files /dev/null and b/assets/img/ellipse-480.webp differ
diff --git a/assets/img/ellipse-800.webp b/assets/img/ellipse-800.webp
new file mode 100644
index 00000000..bfd7db5b
Binary files /dev/null and b/assets/img/ellipse-800.webp differ
diff --git a/assets/img/fun/Borisov-1400.webp b/assets/img/fun/Borisov-1400.webp
new file mode 100644
index 00000000..5683f27f
Binary files /dev/null and b/assets/img/fun/Borisov-1400.webp differ
diff --git a/assets/img/fun/Borisov-480.webp b/assets/img/fun/Borisov-480.webp
new file mode 100644
index 00000000..e0faa75c
Binary files /dev/null and b/assets/img/fun/Borisov-480.webp differ
diff --git a/assets/img/fun/Borisov-800.webp b/assets/img/fun/Borisov-800.webp
new file mode 100644
index 00000000..a50ed462
Binary files /dev/null and b/assets/img/fun/Borisov-800.webp differ
diff --git a/assets/img/fun/Borisov_photo1-1400.webp b/assets/img/fun/Borisov_photo1-1400.webp
new file mode 100644
index 00000000..83727eaf
Binary files /dev/null and b/assets/img/fun/Borisov_photo1-1400.webp differ
diff --git a/assets/img/fun/Borisov_photo1-480.webp b/assets/img/fun/Borisov_photo1-480.webp
new file mode 100644
index 00000000..6e151e3e
Binary files /dev/null and b/assets/img/fun/Borisov_photo1-480.webp differ
diff --git a/assets/img/fun/Borisov_photo1-800.webp b/assets/img/fun/Borisov_photo1-800.webp
new file mode 100644
index 00000000..06dd1616
Binary files /dev/null and b/assets/img/fun/Borisov_photo1-800.webp differ
diff --git a/assets/img/fun/Borisov_photo2-1400.webp b/assets/img/fun/Borisov_photo2-1400.webp
new file mode 100644
index 00000000..10aedf8d
Binary files /dev/null and b/assets/img/fun/Borisov_photo2-1400.webp differ
diff --git a/assets/img/fun/Borisov_photo2-480.webp b/assets/img/fun/Borisov_photo2-480.webp
new file mode 100644
index 00000000..03127b79
Binary files /dev/null and b/assets/img/fun/Borisov_photo2-480.webp differ
diff --git a/assets/img/fun/Borisov_photo2-800.webp b/assets/img/fun/Borisov_photo2-800.webp
new file mode 100644
index 00000000..1f6bb3b6
Binary files /dev/null and b/assets/img/fun/Borisov_photo2-800.webp differ
diff --git a/assets/img/fun/Kangaroo Tutorial (8.12.2018) R6-1400.webp b/assets/img/fun/Kangaroo Tutorial (8.12.2018) R6-1400.webp
new file mode 100644
index 00000000..91c107fb
Binary files /dev/null and b/assets/img/fun/Kangaroo Tutorial (8.12.2018) R6-1400.webp differ
diff --git a/assets/img/fun/Kangaroo Tutorial (8.12.2018) R6-480.webp b/assets/img/fun/Kangaroo Tutorial (8.12.2018) R6-480.webp
new file mode 100644
index 00000000..9902503c
Binary files /dev/null and b/assets/img/fun/Kangaroo Tutorial (8.12.2018) R6-480.webp differ
diff --git a/assets/img/fun/Kangaroo Tutorial (8.12.2018) R6-800.webp b/assets/img/fun/Kangaroo Tutorial (8.12.2018) R6-800.webp
new file mode 100644
index 00000000..74343db1
Binary files /dev/null and b/assets/img/fun/Kangaroo Tutorial (8.12.2018) R6-800.webp differ
diff --git a/assets/img/fun/KnitCadela-1400.webp b/assets/img/fun/KnitCadela-1400.webp
new file mode 100644
index 00000000..ddacdcc9
Binary files /dev/null and b/assets/img/fun/KnitCadela-1400.webp differ
diff --git a/assets/img/fun/KnitCadela-480.webp b/assets/img/fun/KnitCadela-480.webp
new file mode 100644
index 00000000..ed592a5e
Binary files /dev/null and b/assets/img/fun/KnitCadela-480.webp differ
diff --git a/assets/img/fun/KnitCadela-800.webp b/assets/img/fun/KnitCadela-800.webp
new file mode 100644
index 00000000..4e186ba7
Binary files /dev/null and b/assets/img/fun/KnitCadela-800.webp differ
diff --git a/assets/img/fun/KnitCadela1-1400.webp b/assets/img/fun/KnitCadela1-1400.webp
new file mode 100644
index 00000000..5f7daeac
Binary files /dev/null and b/assets/img/fun/KnitCadela1-1400.webp differ
diff --git a/assets/img/fun/KnitCadela1-480.webp b/assets/img/fun/KnitCadela1-480.webp
new file mode 100644
index 00000000..89ee4bb7
Binary files /dev/null and b/assets/img/fun/KnitCadela1-480.webp differ
diff --git a/assets/img/fun/KnitCadela1-800.webp b/assets/img/fun/KnitCadela1-800.webp
new file mode 100644
index 00000000..46ef6cb9
Binary files /dev/null and b/assets/img/fun/KnitCadela1-800.webp differ
diff --git a/assets/img/fun/Marc_pleate1-1400.webp b/assets/img/fun/Marc_pleate1-1400.webp
new file mode 100644
index 00000000..18d3a4aa
Binary files /dev/null and b/assets/img/fun/Marc_pleate1-1400.webp differ
diff --git a/assets/img/fun/Marc_pleate1-480.webp b/assets/img/fun/Marc_pleate1-480.webp
new file mode 100644
index 00000000..9a2da7b2
Binary files /dev/null and b/assets/img/fun/Marc_pleate1-480.webp differ
diff --git a/assets/img/fun/Marc_pleate1-800.webp b/assets/img/fun/Marc_pleate1-800.webp
new file mode 100644
index 00000000..1ad0e421
Binary files /dev/null and b/assets/img/fun/Marc_pleate1-800.webp differ
diff --git a/assets/img/fun/Marc_pleate2-1400.webp b/assets/img/fun/Marc_pleate2-1400.webp
new file mode 100644
index 00000000..40be1e26
Binary files /dev/null and b/assets/img/fun/Marc_pleate2-1400.webp differ
diff --git a/assets/img/fun/Marc_pleate2-480.webp b/assets/img/fun/Marc_pleate2-480.webp
new file mode 100644
index 00000000..0b3e66cf
Binary files /dev/null and b/assets/img/fun/Marc_pleate2-480.webp differ
diff --git a/assets/img/fun/Marc_pleate2-800.webp b/assets/img/fun/Marc_pleate2-800.webp
new file mode 100644
index 00000000..4417c721
Binary files /dev/null and b/assets/img/fun/Marc_pleate2-800.webp differ
diff --git a/assets/img/fun/ZahaMetro2-1400.webp b/assets/img/fun/ZahaMetro2-1400.webp
new file mode 100644
index 00000000..2af4c711
Binary files /dev/null and b/assets/img/fun/ZahaMetro2-1400.webp differ
diff --git a/assets/img/fun/ZahaMetro2-480.webp b/assets/img/fun/ZahaMetro2-480.webp
new file mode 100644
index 00000000..49369f19
Binary files /dev/null and b/assets/img/fun/ZahaMetro2-480.webp differ
diff --git a/assets/img/fun/ZahaMetro2-800.webp b/assets/img/fun/ZahaMetro2-800.webp
new file mode 100644
index 00000000..a017fac6
Binary files /dev/null and b/assets/img/fun/ZahaMetro2-800.webp differ
diff --git a/assets/img/fun/ZahaMetro3-1400.webp b/assets/img/fun/ZahaMetro3-1400.webp
new file mode 100644
index 00000000..69b5d04f
Binary files /dev/null and b/assets/img/fun/ZahaMetro3-1400.webp differ
diff --git a/assets/img/fun/ZahaMetro3-480.webp b/assets/img/fun/ZahaMetro3-480.webp
new file mode 100644
index 00000000..98fc6346
Binary files /dev/null and b/assets/img/fun/ZahaMetro3-480.webp differ
diff --git a/assets/img/fun/ZahaMetro3-800.webp b/assets/img/fun/ZahaMetro3-800.webp
new file mode 100644
index 00000000..aee1d7cf
Binary files /dev/null and b/assets/img/fun/ZahaMetro3-800.webp differ
diff --git a/assets/img/fun/beacon-1400.webp b/assets/img/fun/beacon-1400.webp
new file mode 100644
index 00000000..66bf4ebc
Binary files /dev/null and b/assets/img/fun/beacon-1400.webp differ
diff --git a/assets/img/fun/beacon-480.webp b/assets/img/fun/beacon-480.webp
new file mode 100644
index 00000000..0c5d4ca3
Binary files /dev/null and b/assets/img/fun/beacon-480.webp differ
diff --git a/assets/img/fun/beacon-800.webp b/assets/img/fun/beacon-800.webp
new file mode 100644
index 00000000..725ebe42
Binary files /dev/null and b/assets/img/fun/beacon-800.webp differ
diff --git a/assets/img/fun/beacon_kaust-1400.webp b/assets/img/fun/beacon_kaust-1400.webp
new file mode 100644
index 00000000..39c023db
Binary files /dev/null and b/assets/img/fun/beacon_kaust-1400.webp differ
diff --git a/assets/img/fun/beacon_kaust-480.webp b/assets/img/fun/beacon_kaust-480.webp
new file mode 100644
index 00000000..a08de24b
Binary files /dev/null and b/assets/img/fun/beacon_kaust-480.webp differ
diff --git a/assets/img/fun/beacon_kaust-800.webp b/assets/img/fun/beacon_kaust-800.webp
new file mode 100644
index 00000000..2ee198b9
Binary files /dev/null and b/assets/img/fun/beacon_kaust-800.webp differ
diff --git a/assets/img/fun/blender_2earths-1400.webp b/assets/img/fun/blender_2earths-1400.webp
new file mode 100644
index 00000000..11969b6c
Binary files /dev/null and b/assets/img/fun/blender_2earths-1400.webp differ
diff --git a/assets/img/fun/blender_2earths-480.webp b/assets/img/fun/blender_2earths-480.webp
new file mode 100644
index 00000000..2484171c
Binary files /dev/null and b/assets/img/fun/blender_2earths-480.webp differ
diff --git a/assets/img/fun/blender_2earths-800.webp b/assets/img/fun/blender_2earths-800.webp
new file mode 100644
index 00000000..cadb3a1b
Binary files /dev/null and b/assets/img/fun/blender_2earths-800.webp differ
diff --git a/assets/img/fun/blender_football-1400.webp b/assets/img/fun/blender_football-1400.webp
new file mode 100644
index 00000000..e07c1879
Binary files /dev/null and b/assets/img/fun/blender_football-1400.webp differ
diff --git a/assets/img/fun/blender_football-480.webp b/assets/img/fun/blender_football-480.webp
new file mode 100644
index 00000000..de4b89f4
Binary files /dev/null and b/assets/img/fun/blender_football-480.webp differ
diff --git a/assets/img/fun/blender_football-800.webp b/assets/img/fun/blender_football-800.webp
new file mode 100644
index 00000000..9192a64a
Binary files /dev/null and b/assets/img/fun/blender_football-800.webp differ
diff --git a/assets/img/fun/blender_glass_ball-1400.webp b/assets/img/fun/blender_glass_ball-1400.webp
new file mode 100644
index 00000000..71cefe8f
Binary files /dev/null and b/assets/img/fun/blender_glass_ball-1400.webp differ
diff --git a/assets/img/fun/blender_glass_ball-480.webp b/assets/img/fun/blender_glass_ball-480.webp
new file mode 100644
index 00000000..e5c95177
Binary files /dev/null and b/assets/img/fun/blender_glass_ball-480.webp differ
diff --git a/assets/img/fun/blender_glass_ball-800.webp b/assets/img/fun/blender_glass_ball-800.webp
new file mode 100644
index 00000000..94b1f7ff
Binary files /dev/null and b/assets/img/fun/blender_glass_ball-800.webp differ
diff --git a/assets/img/fun/blender_grass-1400.webp b/assets/img/fun/blender_grass-1400.webp
new file mode 100644
index 00000000..20b6e76d
Binary files /dev/null and b/assets/img/fun/blender_grass-1400.webp differ
diff --git a/assets/img/fun/blender_grass-480.webp b/assets/img/fun/blender_grass-480.webp
new file mode 100644
index 00000000..ba4291e3
Binary files /dev/null and b/assets/img/fun/blender_grass-480.webp differ
diff --git a/assets/img/fun/blender_grass-800.webp b/assets/img/fun/blender_grass-800.webp
new file mode 100644
index 00000000..20b6e76d
Binary files /dev/null and b/assets/img/fun/blender_grass-800.webp differ
diff --git a/assets/img/fun/blender_model-1400.webp b/assets/img/fun/blender_model-1400.webp
new file mode 100644
index 00000000..ca6d180e
Binary files /dev/null and b/assets/img/fun/blender_model-1400.webp differ
diff --git a/assets/img/fun/blender_model-480.webp b/assets/img/fun/blender_model-480.webp
new file mode 100644
index 00000000..035478e6
Binary files /dev/null and b/assets/img/fun/blender_model-480.webp differ
diff --git a/assets/img/fun/blender_model-800.webp b/assets/img/fun/blender_model-800.webp
new file mode 100644
index 00000000..a8b9952e
Binary files /dev/null and b/assets/img/fun/blender_model-800.webp differ
diff --git a/assets/img/fun/blender_weave-1400.webp b/assets/img/fun/blender_weave-1400.webp
new file mode 100644
index 00000000..7f417f1f
Binary files /dev/null and b/assets/img/fun/blender_weave-1400.webp differ
diff --git a/assets/img/fun/blender_weave-480.webp b/assets/img/fun/blender_weave-480.webp
new file mode 100644
index 00000000..421eb500
Binary files /dev/null and b/assets/img/fun/blender_weave-480.webp differ
diff --git a/assets/img/fun/blender_weave-800.webp b/assets/img/fun/blender_weave-800.webp
new file mode 100644
index 00000000..f50fa54e
Binary files /dev/null and b/assets/img/fun/blender_weave-800.webp differ
diff --git a/assets/img/fun/blender_wood_roof-1400.webp b/assets/img/fun/blender_wood_roof-1400.webp
new file mode 100644
index 00000000..95dc079f
Binary files /dev/null and b/assets/img/fun/blender_wood_roof-1400.webp differ
diff --git a/assets/img/fun/blender_wood_roof-480.webp b/assets/img/fun/blender_wood_roof-480.webp
new file mode 100644
index 00000000..95dc079f
Binary files /dev/null and b/assets/img/fun/blender_wood_roof-480.webp differ
diff --git a/assets/img/fun/blender_wood_roof-800.webp b/assets/img/fun/blender_wood_roof-800.webp
new file mode 100644
index 00000000..95dc079f
Binary files /dev/null and b/assets/img/fun/blender_wood_roof-800.webp differ
diff --git a/assets/img/fun/boiler_suit-1400.webp b/assets/img/fun/boiler_suit-1400.webp
new file mode 100644
index 00000000..3031e2e8
Binary files /dev/null and b/assets/img/fun/boiler_suit-1400.webp differ
diff --git a/assets/img/fun/boiler_suit-480.webp b/assets/img/fun/boiler_suit-480.webp
new file mode 100644
index 00000000..3dfc9458
Binary files /dev/null and b/assets/img/fun/boiler_suit-480.webp differ
diff --git a/assets/img/fun/boiler_suit-800.webp b/assets/img/fun/boiler_suit-800.webp
new file mode 100644
index 00000000..6cd00890
Binary files /dev/null and b/assets/img/fun/boiler_suit-800.webp differ
diff --git a/assets/img/fun/boiler_suit0-1400.webp b/assets/img/fun/boiler_suit0-1400.webp
new file mode 100644
index 00000000..7707f73b
Binary files /dev/null and b/assets/img/fun/boiler_suit0-1400.webp differ
diff --git a/assets/img/fun/boiler_suit0-480.webp b/assets/img/fun/boiler_suit0-480.webp
new file mode 100644
index 00000000..6c4e3147
Binary files /dev/null and b/assets/img/fun/boiler_suit0-480.webp differ
diff --git a/assets/img/fun/boiler_suit0-800.webp b/assets/img/fun/boiler_suit0-800.webp
new file mode 100644
index 00000000..51600cd0
Binary files /dev/null and b/assets/img/fun/boiler_suit0-800.webp differ
diff --git a/assets/img/fun/bowerbird_waffle-1400.webp b/assets/img/fun/bowerbird_waffle-1400.webp
new file mode 100644
index 00000000..f8bff746
Binary files /dev/null and b/assets/img/fun/bowerbird_waffle-1400.webp differ
diff --git a/assets/img/fun/bowerbird_waffle-480.webp b/assets/img/fun/bowerbird_waffle-480.webp
new file mode 100644
index 00000000..77ed6582
Binary files /dev/null and b/assets/img/fun/bowerbird_waffle-480.webp differ
diff --git a/assets/img/fun/bowerbird_waffle-800.webp b/assets/img/fun/bowerbird_waffle-800.webp
new file mode 100644
index 00000000..3704db17
Binary files /dev/null and b/assets/img/fun/bowerbird_waffle-800.webp differ
diff --git a/assets/img/fun/cairo+snub-1400.webp b/assets/img/fun/cairo+snub-1400.webp
new file mode 100644
index 00000000..c92b68ea
Binary files /dev/null and b/assets/img/fun/cairo+snub-1400.webp differ
diff --git a/assets/img/fun/cairo+snub-480.webp b/assets/img/fun/cairo+snub-480.webp
new file mode 100644
index 00000000..16708f72
Binary files /dev/null and b/assets/img/fun/cairo+snub-480.webp differ
diff --git a/assets/img/fun/cairo+snub-800.webp b/assets/img/fun/cairo+snub-800.webp
new file mode 100644
index 00000000..6a563876
Binary files /dev/null and b/assets/img/fun/cairo+snub-800.webp differ
diff --git a/assets/img/fun/chair-1400.webp b/assets/img/fun/chair-1400.webp
new file mode 100644
index 00000000..b132836e
Binary files /dev/null and b/assets/img/fun/chair-1400.webp differ
diff --git a/assets/img/fun/chair-480.webp b/assets/img/fun/chair-480.webp
new file mode 100644
index 00000000..9fe28a94
Binary files /dev/null and b/assets/img/fun/chair-480.webp differ
diff --git a/assets/img/fun/chair-800.webp b/assets/img/fun/chair-800.webp
new file mode 100644
index 00000000..b132836e
Binary files /dev/null and b/assets/img/fun/chair-800.webp differ
diff --git a/assets/img/fun/cheese-1400.webp b/assets/img/fun/cheese-1400.webp
new file mode 100644
index 00000000..b259b9f8
Binary files /dev/null and b/assets/img/fun/cheese-1400.webp differ
diff --git a/assets/img/fun/cheese-480.webp b/assets/img/fun/cheese-480.webp
new file mode 100644
index 00000000..675bf51e
Binary files /dev/null and b/assets/img/fun/cheese-480.webp differ
diff --git a/assets/img/fun/cheese-800.webp b/assets/img/fun/cheese-800.webp
new file mode 100644
index 00000000..b259b9f8
Binary files /dev/null and b/assets/img/fun/cheese-800.webp differ
diff --git a/assets/img/fun/cheese1-1400.webp b/assets/img/fun/cheese1-1400.webp
new file mode 100644
index 00000000..f9c12fba
Binary files /dev/null and b/assets/img/fun/cheese1-1400.webp differ
diff --git a/assets/img/fun/cheese1-480.webp b/assets/img/fun/cheese1-480.webp
new file mode 100644
index 00000000..bf17197c
Binary files /dev/null and b/assets/img/fun/cheese1-480.webp differ
diff --git a/assets/img/fun/cheese1-800.webp b/assets/img/fun/cheese1-800.webp
new file mode 100644
index 00000000..b04b8f4f
Binary files /dev/null and b/assets/img/fun/cheese1-800.webp differ
diff --git a/assets/img/fun/confluence_park-1400.webp b/assets/img/fun/confluence_park-1400.webp
new file mode 100644
index 00000000..ea76668d
Binary files /dev/null and b/assets/img/fun/confluence_park-1400.webp differ
diff --git a/assets/img/fun/confluence_park-480.webp b/assets/img/fun/confluence_park-480.webp
new file mode 100644
index 00000000..2e977854
Binary files /dev/null and b/assets/img/fun/confluence_park-480.webp differ
diff --git a/assets/img/fun/confluence_park-800.webp b/assets/img/fun/confluence_park-800.webp
new file mode 100644
index 00000000..ea76668d
Binary files /dev/null and b/assets/img/fun/confluence_park-800.webp differ
diff --git a/assets/img/fun/confluence_park1-1400.webp b/assets/img/fun/confluence_park1-1400.webp
new file mode 100644
index 00000000..f83bf877
Binary files /dev/null and b/assets/img/fun/confluence_park1-1400.webp differ
diff --git a/assets/img/fun/confluence_park1-480.webp b/assets/img/fun/confluence_park1-480.webp
new file mode 100644
index 00000000..caed51fe
Binary files /dev/null and b/assets/img/fun/confluence_park1-480.webp differ
diff --git a/assets/img/fun/confluence_park1-800.webp b/assets/img/fun/confluence_park1-800.webp
new file mode 100644
index 00000000..6fdc7024
Binary files /dev/null and b/assets/img/fun/confluence_park1-800.webp differ
diff --git a/assets/img/fun/corvid-cy-HH-1400.webp b/assets/img/fun/corvid-cy-HH-1400.webp
new file mode 100644
index 00000000..d35ae6f9
Binary files /dev/null and b/assets/img/fun/corvid-cy-HH-1400.webp differ
diff --git a/assets/img/fun/corvid-cy-HH-480.webp b/assets/img/fun/corvid-cy-HH-480.webp
new file mode 100644
index 00000000..bb7916e5
Binary files /dev/null and b/assets/img/fun/corvid-cy-HH-480.webp differ
diff --git a/assets/img/fun/corvid-cy-HH-800.webp b/assets/img/fun/corvid-cy-HH-800.webp
new file mode 100644
index 00000000..78e310d2
Binary files /dev/null and b/assets/img/fun/corvid-cy-HH-800.webp differ
diff --git a/assets/img/fun/corvid-cy2-HH-1400.webp b/assets/img/fun/corvid-cy2-HH-1400.webp
new file mode 100644
index 00000000..27efc4e1
Binary files /dev/null and b/assets/img/fun/corvid-cy2-HH-1400.webp differ
diff --git a/assets/img/fun/corvid-cy2-HH-480.webp b/assets/img/fun/corvid-cy2-HH-480.webp
new file mode 100644
index 00000000..474e15f4
Binary files /dev/null and b/assets/img/fun/corvid-cy2-HH-480.webp differ
diff --git a/assets/img/fun/corvid-cy2-HH-800.webp b/assets/img/fun/corvid-cy2-HH-800.webp
new file mode 100644
index 00000000..5aaadde2
Binary files /dev/null and b/assets/img/fun/corvid-cy2-HH-800.webp differ
diff --git a/assets/img/fun/corvid-cy3-HH-1400.webp b/assets/img/fun/corvid-cy3-HH-1400.webp
new file mode 100644
index 00000000..dfb95b01
Binary files /dev/null and b/assets/img/fun/corvid-cy3-HH-1400.webp differ
diff --git a/assets/img/fun/corvid-cy3-HH-480.webp b/assets/img/fun/corvid-cy3-HH-480.webp
new file mode 100644
index 00000000..78df21fe
Binary files /dev/null and b/assets/img/fun/corvid-cy3-HH-480.webp differ
diff --git a/assets/img/fun/corvid-cy3-HH-800.webp b/assets/img/fun/corvid-cy3-HH-800.webp
new file mode 100644
index 00000000..174f08ae
Binary files /dev/null and b/assets/img/fun/corvid-cy3-HH-800.webp differ
diff --git a/assets/img/fun/covid-19-1400.webp b/assets/img/fun/covid-19-1400.webp
new file mode 100644
index 00000000..cd58cba3
Binary files /dev/null and b/assets/img/fun/covid-19-1400.webp differ
diff --git a/assets/img/fun/covid-19-480.webp b/assets/img/fun/covid-19-480.webp
new file mode 100644
index 00000000..5e47a813
Binary files /dev/null and b/assets/img/fun/covid-19-480.webp differ
diff --git a/assets/img/fun/covid-19-800.webp b/assets/img/fun/covid-19-800.webp
new file mode 100644
index 00000000..cd58cba3
Binary files /dev/null and b/assets/img/fun/covid-19-800.webp differ
diff --git a/assets/img/fun/duck3-1400.webp b/assets/img/fun/duck3-1400.webp
new file mode 100644
index 00000000..dae9eb26
Binary files /dev/null and b/assets/img/fun/duck3-1400.webp differ
diff --git a/assets/img/fun/duck3-480.webp b/assets/img/fun/duck3-480.webp
new file mode 100644
index 00000000..8bf4056b
Binary files /dev/null and b/assets/img/fun/duck3-480.webp differ
diff --git a/assets/img/fun/duck3-800.webp b/assets/img/fun/duck3-800.webp
new file mode 100644
index 00000000..e4beb6ce
Binary files /dev/null and b/assets/img/fun/duck3-800.webp differ
diff --git a/assets/img/fun/fenghuang0-1400.webp b/assets/img/fun/fenghuang0-1400.webp
new file mode 100644
index 00000000..91159ff2
Binary files /dev/null and b/assets/img/fun/fenghuang0-1400.webp differ
diff --git a/assets/img/fun/fenghuang0-480.webp b/assets/img/fun/fenghuang0-480.webp
new file mode 100644
index 00000000..c8544327
Binary files /dev/null and b/assets/img/fun/fenghuang0-480.webp differ
diff --git a/assets/img/fun/fenghuang0-800.webp b/assets/img/fun/fenghuang0-800.webp
new file mode 100644
index 00000000..91159ff2
Binary files /dev/null and b/assets/img/fun/fenghuang0-800.webp differ
diff --git a/assets/img/fun/fenghuang1-1400.webp b/assets/img/fun/fenghuang1-1400.webp
new file mode 100644
index 00000000..f49d347b
Binary files /dev/null and b/assets/img/fun/fenghuang1-1400.webp differ
diff --git a/assets/img/fun/fenghuang1-480.webp b/assets/img/fun/fenghuang1-480.webp
new file mode 100644
index 00000000..5f0a7c1d
Binary files /dev/null and b/assets/img/fun/fenghuang1-480.webp differ
diff --git a/assets/img/fun/fenghuang1-800.webp b/assets/img/fun/fenghuang1-800.webp
new file mode 100644
index 00000000..418cd69d
Binary files /dev/null and b/assets/img/fun/fenghuang1-800.webp differ
diff --git a/assets/img/fun/fenghuang2-1400.webp b/assets/img/fun/fenghuang2-1400.webp
new file mode 100644
index 00000000..f62778f5
Binary files /dev/null and b/assets/img/fun/fenghuang2-1400.webp differ
diff --git a/assets/img/fun/fenghuang2-480.webp b/assets/img/fun/fenghuang2-480.webp
new file mode 100644
index 00000000..0f6ce223
Binary files /dev/null and b/assets/img/fun/fenghuang2-480.webp differ
diff --git a/assets/img/fun/fenghuang2-800.webp b/assets/img/fun/fenghuang2-800.webp
new file mode 100644
index 00000000..73641cc3
Binary files /dev/null and b/assets/img/fun/fenghuang2-800.webp differ
diff --git a/assets/img/fun/fish-1400.webp b/assets/img/fun/fish-1400.webp
new file mode 100644
index 00000000..c82685b7
Binary files /dev/null and b/assets/img/fun/fish-1400.webp differ
diff --git a/assets/img/fun/fish-480.webp b/assets/img/fun/fish-480.webp
new file mode 100644
index 00000000..ad11dd1f
Binary files /dev/null and b/assets/img/fun/fish-480.webp differ
diff --git a/assets/img/fun/fish-800.webp b/assets/img/fun/fish-800.webp
new file mode 100644
index 00000000..a1b81d16
Binary files /dev/null and b/assets/img/fun/fish-800.webp differ
diff --git a/assets/img/fun/gh_panda-1400.webp b/assets/img/fun/gh_panda-1400.webp
new file mode 100644
index 00000000..cb96bb56
Binary files /dev/null and b/assets/img/fun/gh_panda-1400.webp differ
diff --git a/assets/img/fun/gh_panda-480.webp b/assets/img/fun/gh_panda-480.webp
new file mode 100644
index 00000000..151292fa
Binary files /dev/null and b/assets/img/fun/gh_panda-480.webp differ
diff --git a/assets/img/fun/gh_panda-800.webp b/assets/img/fun/gh_panda-800.webp
new file mode 100644
index 00000000..2e3d3d99
Binary files /dev/null and b/assets/img/fun/gh_panda-800.webp differ
diff --git a/assets/img/fun/helicoid_asymptotic_gridshell-1400.webp b/assets/img/fun/helicoid_asymptotic_gridshell-1400.webp
new file mode 100644
index 00000000..e531f148
Binary files /dev/null and b/assets/img/fun/helicoid_asymptotic_gridshell-1400.webp differ
diff --git a/assets/img/fun/helicoid_asymptotic_gridshell-480.webp b/assets/img/fun/helicoid_asymptotic_gridshell-480.webp
new file mode 100644
index 00000000..c1adfc4e
Binary files /dev/null and b/assets/img/fun/helicoid_asymptotic_gridshell-480.webp differ
diff --git a/assets/img/fun/helicoid_asymptotic_gridshell-800.webp b/assets/img/fun/helicoid_asymptotic_gridshell-800.webp
new file mode 100644
index 00000000..54ad1b3b
Binary files /dev/null and b/assets/img/fun/helicoid_asymptotic_gridshell-800.webp differ
diff --git a/assets/img/fun/helicoid_unroll1-1400.webp b/assets/img/fun/helicoid_unroll1-1400.webp
new file mode 100644
index 00000000..23692e86
Binary files /dev/null and b/assets/img/fun/helicoid_unroll1-1400.webp differ
diff --git a/assets/img/fun/helicoid_unroll1-480.webp b/assets/img/fun/helicoid_unroll1-480.webp
new file mode 100644
index 00000000..16a774fe
Binary files /dev/null and b/assets/img/fun/helicoid_unroll1-480.webp differ
diff --git a/assets/img/fun/helicoid_unroll1-800.webp b/assets/img/fun/helicoid_unroll1-800.webp
new file mode 100644
index 00000000..21589ee2
Binary files /dev/null and b/assets/img/fun/helicoid_unroll1-800.webp differ
diff --git a/assets/img/fun/helicoid_unroll2-1400.webp b/assets/img/fun/helicoid_unroll2-1400.webp
new file mode 100644
index 00000000..f7392ac2
Binary files /dev/null and b/assets/img/fun/helicoid_unroll2-1400.webp differ
diff --git a/assets/img/fun/helicoid_unroll2-480.webp b/assets/img/fun/helicoid_unroll2-480.webp
new file mode 100644
index 00000000..e532a80a
Binary files /dev/null and b/assets/img/fun/helicoid_unroll2-480.webp differ
diff --git a/assets/img/fun/helicoid_unroll2-800.webp b/assets/img/fun/helicoid_unroll2-800.webp
new file mode 100644
index 00000000..b21b95be
Binary files /dev/null and b/assets/img/fun/helicoid_unroll2-800.webp differ
diff --git a/assets/img/fun/keyshot_gow-1400.webp b/assets/img/fun/keyshot_gow-1400.webp
new file mode 100644
index 00000000..1e1a9819
Binary files /dev/null and b/assets/img/fun/keyshot_gow-1400.webp differ
diff --git a/assets/img/fun/keyshot_gow-480.webp b/assets/img/fun/keyshot_gow-480.webp
new file mode 100644
index 00000000..1a9f74c4
Binary files /dev/null and b/assets/img/fun/keyshot_gow-480.webp differ
diff --git a/assets/img/fun/keyshot_gow-800.webp b/assets/img/fun/keyshot_gow-800.webp
new file mode 100644
index 00000000..1e1a9819
Binary files /dev/null and b/assets/img/fun/keyshot_gow-800.webp differ
diff --git a/assets/img/fun/keyshot_multi-layer.94-1400.webp b/assets/img/fun/keyshot_multi-layer.94-1400.webp
new file mode 100644
index 00000000..920077fc
Binary files /dev/null and b/assets/img/fun/keyshot_multi-layer.94-1400.webp differ
diff --git a/assets/img/fun/keyshot_multi-layer.94-480.webp b/assets/img/fun/keyshot_multi-layer.94-480.webp
new file mode 100644
index 00000000..fb11a88c
Binary files /dev/null and b/assets/img/fun/keyshot_multi-layer.94-480.webp differ
diff --git a/assets/img/fun/keyshot_multi-layer.94-800.webp b/assets/img/fun/keyshot_multi-layer.94-800.webp
new file mode 100644
index 00000000..920077fc
Binary files /dev/null and b/assets/img/fun/keyshot_multi-layer.94-800.webp differ
diff --git a/assets/img/fun/keyshot_plastic blue shiny linear strips-1400.webp b/assets/img/fun/keyshot_plastic blue shiny linear strips-1400.webp
new file mode 100644
index 00000000..e5a2aed6
Binary files /dev/null and b/assets/img/fun/keyshot_plastic blue shiny linear strips-1400.webp differ
diff --git a/assets/img/fun/keyshot_plastic blue shiny linear strips-480.webp b/assets/img/fun/keyshot_plastic blue shiny linear strips-480.webp
new file mode 100644
index 00000000..1147378c
Binary files /dev/null and b/assets/img/fun/keyshot_plastic blue shiny linear strips-480.webp differ
diff --git a/assets/img/fun/keyshot_plastic blue shiny linear strips-800.webp b/assets/img/fun/keyshot_plastic blue shiny linear strips-800.webp
new file mode 100644
index 00000000..e5a2aed6
Binary files /dev/null and b/assets/img/fun/keyshot_plastic blue shiny linear strips-800.webp differ
diff --git a/assets/img/fun/keyshot_plastic suede rough blue fuzz-1400.webp b/assets/img/fun/keyshot_plastic suede rough blue fuzz-1400.webp
new file mode 100644
index 00000000..dfcb32cb
Binary files /dev/null and b/assets/img/fun/keyshot_plastic suede rough blue fuzz-1400.webp differ
diff --git a/assets/img/fun/keyshot_plastic suede rough blue fuzz-480.webp b/assets/img/fun/keyshot_plastic suede rough blue fuzz-480.webp
new file mode 100644
index 00000000..6ad7b208
Binary files /dev/null and b/assets/img/fun/keyshot_plastic suede rough blue fuzz-480.webp differ
diff --git a/assets/img/fun/keyshot_plastic suede rough blue fuzz-800.webp b/assets/img/fun/keyshot_plastic suede rough blue fuzz-800.webp
new file mode 100644
index 00000000..f431f0cf
Binary files /dev/null and b/assets/img/fun/keyshot_plastic suede rough blue fuzz-800.webp differ
diff --git a/assets/img/fun/keyshot_rainbow glass-1400.webp b/assets/img/fun/keyshot_rainbow glass-1400.webp
new file mode 100644
index 00000000..8c6a675c
Binary files /dev/null and b/assets/img/fun/keyshot_rainbow glass-1400.webp differ
diff --git a/assets/img/fun/keyshot_rainbow glass-480.webp b/assets/img/fun/keyshot_rainbow glass-480.webp
new file mode 100644
index 00000000..5f8b6fdd
Binary files /dev/null and b/assets/img/fun/keyshot_rainbow glass-480.webp differ
diff --git a/assets/img/fun/keyshot_rainbow glass-800.webp b/assets/img/fun/keyshot_rainbow glass-800.webp
new file mode 100644
index 00000000..8c6a675c
Binary files /dev/null and b/assets/img/fun/keyshot_rainbow glass-800.webp differ
diff --git a/assets/img/fun/keyshot_rainbow gradient.95-1400.webp b/assets/img/fun/keyshot_rainbow gradient.95-1400.webp
new file mode 100644
index 00000000..eba250c5
Binary files /dev/null and b/assets/img/fun/keyshot_rainbow gradient.95-1400.webp differ
diff --git a/assets/img/fun/keyshot_rainbow gradient.95-480.webp b/assets/img/fun/keyshot_rainbow gradient.95-480.webp
new file mode 100644
index 00000000..95285a92
Binary files /dev/null and b/assets/img/fun/keyshot_rainbow gradient.95-480.webp differ
diff --git a/assets/img/fun/keyshot_rainbow gradient.95-800.webp b/assets/img/fun/keyshot_rainbow gradient.95-800.webp
new file mode 100644
index 00000000..eba250c5
Binary files /dev/null and b/assets/img/fun/keyshot_rainbow gradient.95-800.webp differ
diff --git a/assets/img/fun/knot-1400.webp b/assets/img/fun/knot-1400.webp
new file mode 100644
index 00000000..bfbb1c1d
Binary files /dev/null and b/assets/img/fun/knot-1400.webp differ
diff --git a/assets/img/fun/knot-480.webp b/assets/img/fun/knot-480.webp
new file mode 100644
index 00000000..611efc89
Binary files /dev/null and b/assets/img/fun/knot-480.webp differ
diff --git a/assets/img/fun/knot-800.webp b/assets/img/fun/knot-800.webp
new file mode 100644
index 00000000..909002e6
Binary files /dev/null and b/assets/img/fun/knot-800.webp differ
diff --git a/assets/img/fun/knots-1400.webp b/assets/img/fun/knots-1400.webp
new file mode 100644
index 00000000..b3738564
Binary files /dev/null and b/assets/img/fun/knots-1400.webp differ
diff --git a/assets/img/fun/knots-480.webp b/assets/img/fun/knots-480.webp
new file mode 100644
index 00000000..d5d5b58a
Binary files /dev/null and b/assets/img/fun/knots-480.webp differ
diff --git a/assets/img/fun/knots-800.webp b/assets/img/fun/knots-800.webp
new file mode 100644
index 00000000..04f52873
Binary files /dev/null and b/assets/img/fun/knots-800.webp differ
diff --git a/assets/img/fun/koala1-1400.webp b/assets/img/fun/koala1-1400.webp
new file mode 100644
index 00000000..15012827
Binary files /dev/null and b/assets/img/fun/koala1-1400.webp differ
diff --git a/assets/img/fun/koala1-480.webp b/assets/img/fun/koala1-480.webp
new file mode 100644
index 00000000..5c500606
Binary files /dev/null and b/assets/img/fun/koala1-480.webp differ
diff --git a/assets/img/fun/koala1-800.webp b/assets/img/fun/koala1-800.webp
new file mode 100644
index 00000000..15012827
Binary files /dev/null and b/assets/img/fun/koala1-800.webp differ
diff --git a/assets/img/fun/koala2-1400.webp b/assets/img/fun/koala2-1400.webp
new file mode 100644
index 00000000..4a7587b5
Binary files /dev/null and b/assets/img/fun/koala2-1400.webp differ
diff --git a/assets/img/fun/koala2-480.webp b/assets/img/fun/koala2-480.webp
new file mode 100644
index 00000000..5d5bc259
Binary files /dev/null and b/assets/img/fun/koala2-480.webp differ
diff --git a/assets/img/fun/koala2-800.webp b/assets/img/fun/koala2-800.webp
new file mode 100644
index 00000000..7a19e739
Binary files /dev/null and b/assets/img/fun/koala2-800.webp differ
diff --git a/assets/img/fun/koala3-1400.webp b/assets/img/fun/koala3-1400.webp
new file mode 100644
index 00000000..7c27c2c8
Binary files /dev/null and b/assets/img/fun/koala3-1400.webp differ
diff --git a/assets/img/fun/koala3-480.webp b/assets/img/fun/koala3-480.webp
new file mode 100644
index 00000000..04c8d476
Binary files /dev/null and b/assets/img/fun/koala3-480.webp differ
diff --git a/assets/img/fun/koala3-800.webp b/assets/img/fun/koala3-800.webp
new file mode 100644
index 00000000..211f12a5
Binary files /dev/null and b/assets/img/fun/koala3-800.webp differ
diff --git a/assets/img/fun/lamp-1400.webp b/assets/img/fun/lamp-1400.webp
new file mode 100644
index 00000000..9fd63b11
Binary files /dev/null and b/assets/img/fun/lamp-1400.webp differ
diff --git a/assets/img/fun/lamp-480.webp b/assets/img/fun/lamp-480.webp
new file mode 100644
index 00000000..ad6c2439
Binary files /dev/null and b/assets/img/fun/lamp-480.webp differ
diff --git a/assets/img/fun/lamp-800.webp b/assets/img/fun/lamp-800.webp
new file mode 100644
index 00000000..9fd63b11
Binary files /dev/null and b/assets/img/fun/lamp-800.webp differ
diff --git a/assets/img/fun/lamp_close-1400.webp b/assets/img/fun/lamp_close-1400.webp
new file mode 100644
index 00000000..20b88e59
Binary files /dev/null and b/assets/img/fun/lamp_close-1400.webp differ
diff --git a/assets/img/fun/lamp_close-480.webp b/assets/img/fun/lamp_close-480.webp
new file mode 100644
index 00000000..310aaf52
Binary files /dev/null and b/assets/img/fun/lamp_close-480.webp differ
diff --git a/assets/img/fun/lamp_close-800.webp b/assets/img/fun/lamp_close-800.webp
new file mode 100644
index 00000000..6a52918b
Binary files /dev/null and b/assets/img/fun/lamp_close-800.webp differ
diff --git a/assets/img/fun/lamp_exp-1400.webp b/assets/img/fun/lamp_exp-1400.webp
new file mode 100644
index 00000000..56391095
Binary files /dev/null and b/assets/img/fun/lamp_exp-1400.webp differ
diff --git a/assets/img/fun/lamp_exp-480.webp b/assets/img/fun/lamp_exp-480.webp
new file mode 100644
index 00000000..8376a455
Binary files /dev/null and b/assets/img/fun/lamp_exp-480.webp differ
diff --git a/assets/img/fun/lamp_exp-800.webp b/assets/img/fun/lamp_exp-800.webp
new file mode 100644
index 00000000..56391095
Binary files /dev/null and b/assets/img/fun/lamp_exp-800.webp differ
diff --git a/assets/img/fun/lamp_open-1400.webp b/assets/img/fun/lamp_open-1400.webp
new file mode 100644
index 00000000..db218086
Binary files /dev/null and b/assets/img/fun/lamp_open-1400.webp differ
diff --git a/assets/img/fun/lamp_open-480.webp b/assets/img/fun/lamp_open-480.webp
new file mode 100644
index 00000000..12e58e27
Binary files /dev/null and b/assets/img/fun/lamp_open-480.webp differ
diff --git a/assets/img/fun/lamp_open-800.webp b/assets/img/fun/lamp_open-800.webp
new file mode 100644
index 00000000..db218086
Binary files /dev/null and b/assets/img/fun/lamp_open-800.webp differ
diff --git a/assets/img/fun/lib_1-1400.webp b/assets/img/fun/lib_1-1400.webp
new file mode 100644
index 00000000..b8f16495
Binary files /dev/null and b/assets/img/fun/lib_1-1400.webp differ
diff --git a/assets/img/fun/lib_1-480.webp b/assets/img/fun/lib_1-480.webp
new file mode 100644
index 00000000..9abf0ba4
Binary files /dev/null and b/assets/img/fun/lib_1-480.webp differ
diff --git a/assets/img/fun/lib_1-800.webp b/assets/img/fun/lib_1-800.webp
new file mode 100644
index 00000000..cc5261c6
Binary files /dev/null and b/assets/img/fun/lib_1-800.webp differ
diff --git a/assets/img/fun/lib_2-1400.webp b/assets/img/fun/lib_2-1400.webp
new file mode 100644
index 00000000..63c0d164
Binary files /dev/null and b/assets/img/fun/lib_2-1400.webp differ
diff --git a/assets/img/fun/lib_2-480.webp b/assets/img/fun/lib_2-480.webp
new file mode 100644
index 00000000..55ab7894
Binary files /dev/null and b/assets/img/fun/lib_2-480.webp differ
diff --git a/assets/img/fun/lib_2-800.webp b/assets/img/fun/lib_2-800.webp
new file mode 100644
index 00000000..b9353448
Binary files /dev/null and b/assets/img/fun/lib_2-800.webp differ
diff --git a/assets/img/fun/lib_3-1400.webp b/assets/img/fun/lib_3-1400.webp
new file mode 100644
index 00000000..3286fadf
Binary files /dev/null and b/assets/img/fun/lib_3-1400.webp differ
diff --git a/assets/img/fun/lib_3-480.webp b/assets/img/fun/lib_3-480.webp
new file mode 100644
index 00000000..5fd187a1
Binary files /dev/null and b/assets/img/fun/lib_3-480.webp differ
diff --git a/assets/img/fun/lib_3-800.webp b/assets/img/fun/lib_3-800.webp
new file mode 100644
index 00000000..9d374209
Binary files /dev/null and b/assets/img/fun/lib_3-800.webp differ
diff --git a/assets/img/fun/lib_4-1400.webp b/assets/img/fun/lib_4-1400.webp
new file mode 100644
index 00000000..22189d11
Binary files /dev/null and b/assets/img/fun/lib_4-1400.webp differ
diff --git a/assets/img/fun/lib_4-480.webp b/assets/img/fun/lib_4-480.webp
new file mode 100644
index 00000000..275734d9
Binary files /dev/null and b/assets/img/fun/lib_4-480.webp differ
diff --git a/assets/img/fun/lib_4-800.webp b/assets/img/fun/lib_4-800.webp
new file mode 100644
index 00000000..759f445e
Binary files /dev/null and b/assets/img/fun/lib_4-800.webp differ
diff --git a/assets/img/fun/library_1-1400.webp b/assets/img/fun/library_1-1400.webp
new file mode 100644
index 00000000..a2b44c91
Binary files /dev/null and b/assets/img/fun/library_1-1400.webp differ
diff --git a/assets/img/fun/library_1-480.webp b/assets/img/fun/library_1-480.webp
new file mode 100644
index 00000000..b1c473b2
Binary files /dev/null and b/assets/img/fun/library_1-480.webp differ
diff --git a/assets/img/fun/library_1-800.webp b/assets/img/fun/library_1-800.webp
new file mode 100644
index 00000000..a2b44c91
Binary files /dev/null and b/assets/img/fun/library_1-800.webp differ
diff --git a/assets/img/fun/library_2-1400.webp b/assets/img/fun/library_2-1400.webp
new file mode 100644
index 00000000..7347fb1e
Binary files /dev/null and b/assets/img/fun/library_2-1400.webp differ
diff --git a/assets/img/fun/library_2-480.webp b/assets/img/fun/library_2-480.webp
new file mode 100644
index 00000000..99731ae6
Binary files /dev/null and b/assets/img/fun/library_2-480.webp differ
diff --git a/assets/img/fun/library_2-800.webp b/assets/img/fun/library_2-800.webp
new file mode 100644
index 00000000..7347fb1e
Binary files /dev/null and b/assets/img/fun/library_2-800.webp differ
diff --git a/assets/img/fun/library_3-1400.webp b/assets/img/fun/library_3-1400.webp
new file mode 100644
index 00000000..07d445b6
Binary files /dev/null and b/assets/img/fun/library_3-1400.webp differ
diff --git a/assets/img/fun/library_3-480.webp b/assets/img/fun/library_3-480.webp
new file mode 100644
index 00000000..2ea84cd2
Binary files /dev/null and b/assets/img/fun/library_3-480.webp differ
diff --git a/assets/img/fun/library_3-800.webp b/assets/img/fun/library_3-800.webp
new file mode 100644
index 00000000..07d445b6
Binary files /dev/null and b/assets/img/fun/library_3-800.webp differ
diff --git a/assets/img/fun/library_4-1400.webp b/assets/img/fun/library_4-1400.webp
new file mode 100644
index 00000000..b5e5479c
Binary files /dev/null and b/assets/img/fun/library_4-1400.webp differ
diff --git a/assets/img/fun/library_4-480.webp b/assets/img/fun/library_4-480.webp
new file mode 100644
index 00000000..d2a1af0c
Binary files /dev/null and b/assets/img/fun/library_4-480.webp differ
diff --git a/assets/img/fun/library_4-800.webp b/assets/img/fun/library_4-800.webp
new file mode 100644
index 00000000..b5e5479c
Binary files /dev/null and b/assets/img/fun/library_4-800.webp differ
diff --git a/assets/img/fun/library_5-1400.webp b/assets/img/fun/library_5-1400.webp
new file mode 100644
index 00000000..75d7b443
Binary files /dev/null and b/assets/img/fun/library_5-1400.webp differ
diff --git a/assets/img/fun/library_5-480.webp b/assets/img/fun/library_5-480.webp
new file mode 100644
index 00000000..caeb3e5f
Binary files /dev/null and b/assets/img/fun/library_5-480.webp differ
diff --git a/assets/img/fun/library_5-800.webp b/assets/img/fun/library_5-800.webp
new file mode 100644
index 00000000..a6ef81d5
Binary files /dev/null and b/assets/img/fun/library_5-800.webp differ
diff --git a/assets/img/fun/lunchbox_enneper1-1400.webp b/assets/img/fun/lunchbox_enneper1-1400.webp
new file mode 100644
index 00000000..0b06ef1a
Binary files /dev/null and b/assets/img/fun/lunchbox_enneper1-1400.webp differ
diff --git a/assets/img/fun/lunchbox_enneper1-480.webp b/assets/img/fun/lunchbox_enneper1-480.webp
new file mode 100644
index 00000000..a048a3ac
Binary files /dev/null and b/assets/img/fun/lunchbox_enneper1-480.webp differ
diff --git a/assets/img/fun/lunchbox_enneper1-800.webp b/assets/img/fun/lunchbox_enneper1-800.webp
new file mode 100644
index 00000000..95151184
Binary files /dev/null and b/assets/img/fun/lunchbox_enneper1-800.webp differ
diff --git a/assets/img/fun/lunchbox_enneper2-1400.webp b/assets/img/fun/lunchbox_enneper2-1400.webp
new file mode 100644
index 00000000..95c06e3a
Binary files /dev/null and b/assets/img/fun/lunchbox_enneper2-1400.webp differ
diff --git a/assets/img/fun/lunchbox_enneper2-480.webp b/assets/img/fun/lunchbox_enneper2-480.webp
new file mode 100644
index 00000000..e9a659da
Binary files /dev/null and b/assets/img/fun/lunchbox_enneper2-480.webp differ
diff --git a/assets/img/fun/lunchbox_enneper2-800.webp b/assets/img/fun/lunchbox_enneper2-800.webp
new file mode 100644
index 00000000..83a4b325
Binary files /dev/null and b/assets/img/fun/lunchbox_enneper2-800.webp differ
diff --git a/assets/img/fun/mediopadana-1400.webp b/assets/img/fun/mediopadana-1400.webp
new file mode 100644
index 00000000..19621bf7
Binary files /dev/null and b/assets/img/fun/mediopadana-1400.webp differ
diff --git a/assets/img/fun/mediopadana-480.webp b/assets/img/fun/mediopadana-480.webp
new file mode 100644
index 00000000..c78d51ef
Binary files /dev/null and b/assets/img/fun/mediopadana-480.webp differ
diff --git a/assets/img/fun/mediopadana-800.webp b/assets/img/fun/mediopadana-800.webp
new file mode 100644
index 00000000..d8997eae
Binary files /dev/null and b/assets/img/fun/mediopadana-800.webp differ
diff --git a/assets/img/fun/mesh+-1400.webp b/assets/img/fun/mesh+-1400.webp
new file mode 100644
index 00000000..66074da1
Binary files /dev/null and b/assets/img/fun/mesh+-1400.webp differ
diff --git a/assets/img/fun/mesh+-480.webp b/assets/img/fun/mesh+-480.webp
new file mode 100644
index 00000000..d6a2f576
Binary files /dev/null and b/assets/img/fun/mesh+-480.webp differ
diff --git a/assets/img/fun/mesh+-800.webp b/assets/img/fun/mesh+-800.webp
new file mode 100644
index 00000000..52940e22
Binary files /dev/null and b/assets/img/fun/mesh+-800.webp differ
diff --git a/assets/img/fun/morph_box-1400.webp b/assets/img/fun/morph_box-1400.webp
new file mode 100644
index 00000000..4424a208
Binary files /dev/null and b/assets/img/fun/morph_box-1400.webp differ
diff --git a/assets/img/fun/morph_box-480.webp b/assets/img/fun/morph_box-480.webp
new file mode 100644
index 00000000..f9abf14c
Binary files /dev/null and b/assets/img/fun/morph_box-480.webp differ
diff --git a/assets/img/fun/morph_box-800.webp b/assets/img/fun/morph_box-800.webp
new file mode 100644
index 00000000..8f62e869
Binary files /dev/null and b/assets/img/fun/morph_box-800.webp differ
diff --git a/assets/img/fun/oculus-1400.webp b/assets/img/fun/oculus-1400.webp
new file mode 100644
index 00000000..0e1eb905
Binary files /dev/null and b/assets/img/fun/oculus-1400.webp differ
diff --git a/assets/img/fun/oculus-480.webp b/assets/img/fun/oculus-480.webp
new file mode 100644
index 00000000..050b336b
Binary files /dev/null and b/assets/img/fun/oculus-480.webp differ
diff --git a/assets/img/fun/oculus-800.webp b/assets/img/fun/oculus-800.webp
new file mode 100644
index 00000000..13d48676
Binary files /dev/null and b/assets/img/fun/oculus-800.webp differ
diff --git a/assets/img/fun/oculus_real-1400.webp b/assets/img/fun/oculus_real-1400.webp
new file mode 100644
index 00000000..f82d0ec2
Binary files /dev/null and b/assets/img/fun/oculus_real-1400.webp differ
diff --git a/assets/img/fun/oculus_real-480.webp b/assets/img/fun/oculus_real-480.webp
new file mode 100644
index 00000000..61b0b1bb
Binary files /dev/null and b/assets/img/fun/oculus_real-480.webp differ
diff --git a/assets/img/fun/oculus_real-800.webp b/assets/img/fun/oculus_real-800.webp
new file mode 100644
index 00000000..ddb1bb97
Binary files /dev/null and b/assets/img/fun/oculus_real-800.webp differ
diff --git a/assets/img/fun/paneum-1400.webp b/assets/img/fun/paneum-1400.webp
new file mode 100644
index 00000000..a31eeca9
Binary files /dev/null and b/assets/img/fun/paneum-1400.webp differ
diff --git a/assets/img/fun/paneum-480.webp b/assets/img/fun/paneum-480.webp
new file mode 100644
index 00000000..9c580222
Binary files /dev/null and b/assets/img/fun/paneum-480.webp differ
diff --git a/assets/img/fun/paneum-800.webp b/assets/img/fun/paneum-800.webp
new file mode 100644
index 00000000..32585d23
Binary files /dev/null and b/assets/img/fun/paneum-800.webp differ
diff --git a/assets/img/fun/paneum_arch-1400.webp b/assets/img/fun/paneum_arch-1400.webp
new file mode 100644
index 00000000..b8724bb9
Binary files /dev/null and b/assets/img/fun/paneum_arch-1400.webp differ
diff --git a/assets/img/fun/paneum_arch-480.webp b/assets/img/fun/paneum_arch-480.webp
new file mode 100644
index 00000000..821d68b7
Binary files /dev/null and b/assets/img/fun/paneum_arch-480.webp differ
diff --git a/assets/img/fun/paneum_arch-800.webp b/assets/img/fun/paneum_arch-800.webp
new file mode 100644
index 00000000..b8724bb9
Binary files /dev/null and b/assets/img/fun/paneum_arch-800.webp differ
diff --git a/assets/img/fun/para_ex_half_torus1-1400.webp b/assets/img/fun/para_ex_half_torus1-1400.webp
new file mode 100644
index 00000000..d8edf4a9
Binary files /dev/null and b/assets/img/fun/para_ex_half_torus1-1400.webp differ
diff --git a/assets/img/fun/para_ex_half_torus1-480.webp b/assets/img/fun/para_ex_half_torus1-480.webp
new file mode 100644
index 00000000..00688ad3
Binary files /dev/null and b/assets/img/fun/para_ex_half_torus1-480.webp differ
diff --git a/assets/img/fun/para_ex_half_torus1-800.webp b/assets/img/fun/para_ex_half_torus1-800.webp
new file mode 100644
index 00000000..d8edf4a9
Binary files /dev/null and b/assets/img/fun/para_ex_half_torus1-800.webp differ
diff --git a/assets/img/fun/para_ex_half_torus2-1400.webp b/assets/img/fun/para_ex_half_torus2-1400.webp
new file mode 100644
index 00000000..f6f3ac8d
Binary files /dev/null and b/assets/img/fun/para_ex_half_torus2-1400.webp differ
diff --git a/assets/img/fun/para_ex_half_torus2-480.webp b/assets/img/fun/para_ex_half_torus2-480.webp
new file mode 100644
index 00000000..8929ade6
Binary files /dev/null and b/assets/img/fun/para_ex_half_torus2-480.webp differ
diff --git a/assets/img/fun/para_ex_half_torus2-800.webp b/assets/img/fun/para_ex_half_torus2-800.webp
new file mode 100644
index 00000000..f6f3ac8d
Binary files /dev/null and b/assets/img/fun/para_ex_half_torus2-800.webp differ
diff --git a/assets/img/fun/parakeet-1400.webp b/assets/img/fun/parakeet-1400.webp
new file mode 100644
index 00000000..38d5e0ca
Binary files /dev/null and b/assets/img/fun/parakeet-1400.webp differ
diff --git a/assets/img/fun/parakeet-480.webp b/assets/img/fun/parakeet-480.webp
new file mode 100644
index 00000000..cc161e80
Binary files /dev/null and b/assets/img/fun/parakeet-480.webp differ
diff --git a/assets/img/fun/parakeet-800.webp b/assets/img/fun/parakeet-800.webp
new file mode 100644
index 00000000..1b7e7f69
Binary files /dev/null and b/assets/img/fun/parakeet-800.webp differ
diff --git a/assets/img/fun/parakeet1-1400.webp b/assets/img/fun/parakeet1-1400.webp
new file mode 100644
index 00000000..ce2864da
Binary files /dev/null and b/assets/img/fun/parakeet1-1400.webp differ
diff --git a/assets/img/fun/parakeet1-480.webp b/assets/img/fun/parakeet1-480.webp
new file mode 100644
index 00000000..00ad3ebc
Binary files /dev/null and b/assets/img/fun/parakeet1-480.webp differ
diff --git a/assets/img/fun/parakeet1-800.webp b/assets/img/fun/parakeet1-800.webp
new file mode 100644
index 00000000..ff806798
Binary files /dev/null and b/assets/img/fun/parakeet1-800.webp differ
diff --git a/assets/img/fun/parakeet2-1400.webp b/assets/img/fun/parakeet2-1400.webp
new file mode 100644
index 00000000..9b2d540f
Binary files /dev/null and b/assets/img/fun/parakeet2-1400.webp differ
diff --git a/assets/img/fun/parakeet2-480.webp b/assets/img/fun/parakeet2-480.webp
new file mode 100644
index 00000000..1f4991db
Binary files /dev/null and b/assets/img/fun/parakeet2-480.webp differ
diff --git a/assets/img/fun/parakeet2-800.webp b/assets/img/fun/parakeet2-800.webp
new file mode 100644
index 00000000..2200f468
Binary files /dev/null and b/assets/img/fun/parakeet2-800.webp differ
diff --git a/assets/img/fun/paraview0-1400.webp b/assets/img/fun/paraview0-1400.webp
new file mode 100644
index 00000000..cb123e4d
Binary files /dev/null and b/assets/img/fun/paraview0-1400.webp differ
diff --git a/assets/img/fun/paraview0-480.webp b/assets/img/fun/paraview0-480.webp
new file mode 100644
index 00000000..b5797970
Binary files /dev/null and b/assets/img/fun/paraview0-480.webp differ
diff --git a/assets/img/fun/paraview0-800.webp b/assets/img/fun/paraview0-800.webp
new file mode 100644
index 00000000..1216c25d
Binary files /dev/null and b/assets/img/fun/paraview0-800.webp differ
diff --git a/assets/img/fun/paraview1-1400.webp b/assets/img/fun/paraview1-1400.webp
new file mode 100644
index 00000000..af3fddcc
Binary files /dev/null and b/assets/img/fun/paraview1-1400.webp differ
diff --git a/assets/img/fun/paraview1-480.webp b/assets/img/fun/paraview1-480.webp
new file mode 100644
index 00000000..563ad957
Binary files /dev/null and b/assets/img/fun/paraview1-480.webp differ
diff --git a/assets/img/fun/paraview1-800.webp b/assets/img/fun/paraview1-800.webp
new file mode 100644
index 00000000..505f1d71
Binary files /dev/null and b/assets/img/fun/paraview1-800.webp differ
diff --git a/assets/img/fun/paraview2-1400.webp b/assets/img/fun/paraview2-1400.webp
new file mode 100644
index 00000000..f9f438ef
Binary files /dev/null and b/assets/img/fun/paraview2-1400.webp differ
diff --git a/assets/img/fun/paraview2-480.webp b/assets/img/fun/paraview2-480.webp
new file mode 100644
index 00000000..52a30c26
Binary files /dev/null and b/assets/img/fun/paraview2-480.webp differ
diff --git a/assets/img/fun/paraview2-800.webp b/assets/img/fun/paraview2-800.webp
new file mode 100644
index 00000000..6e3b017d
Binary files /dev/null and b/assets/img/fun/paraview2-800.webp differ
diff --git a/assets/img/fun/paraview3-1400.webp b/assets/img/fun/paraview3-1400.webp
new file mode 100644
index 00000000..6495b156
Binary files /dev/null and b/assets/img/fun/paraview3-1400.webp differ
diff --git a/assets/img/fun/paraview3-480.webp b/assets/img/fun/paraview3-480.webp
new file mode 100644
index 00000000..fb03eba0
Binary files /dev/null and b/assets/img/fun/paraview3-480.webp differ
diff --git a/assets/img/fun/paraview3-800.webp b/assets/img/fun/paraview3-800.webp
new file mode 100644
index 00000000..fe3325a5
Binary files /dev/null and b/assets/img/fun/paraview3-800.webp differ
diff --git a/assets/img/fun/paraview4-1400.webp b/assets/img/fun/paraview4-1400.webp
new file mode 100644
index 00000000..34882863
Binary files /dev/null and b/assets/img/fun/paraview4-1400.webp differ
diff --git a/assets/img/fun/paraview4-480.webp b/assets/img/fun/paraview4-480.webp
new file mode 100644
index 00000000..15fc25da
Binary files /dev/null and b/assets/img/fun/paraview4-480.webp differ
diff --git a/assets/img/fun/paraview4-800.webp b/assets/img/fun/paraview4-800.webp
new file mode 100644
index 00000000..496d4423
Binary files /dev/null and b/assets/img/fun/paraview4-800.webp differ
diff --git a/assets/img/fun/pleate-1400.webp b/assets/img/fun/pleate-1400.webp
new file mode 100644
index 00000000..856440d1
Binary files /dev/null and b/assets/img/fun/pleate-1400.webp differ
diff --git a/assets/img/fun/pleate-480.webp b/assets/img/fun/pleate-480.webp
new file mode 100644
index 00000000..461e43f8
Binary files /dev/null and b/assets/img/fun/pleate-480.webp differ
diff --git a/assets/img/fun/pleate-800.webp b/assets/img/fun/pleate-800.webp
new file mode 100644
index 00000000..411bea1a
Binary files /dev/null and b/assets/img/fun/pleate-800.webp differ
diff --git a/assets/img/fun/pufferfish_twisted_tube_variable-1400.webp b/assets/img/fun/pufferfish_twisted_tube_variable-1400.webp
new file mode 100644
index 00000000..89e92c13
Binary files /dev/null and b/assets/img/fun/pufferfish_twisted_tube_variable-1400.webp differ
diff --git a/assets/img/fun/pufferfish_twisted_tube_variable-480.webp b/assets/img/fun/pufferfish_twisted_tube_variable-480.webp
new file mode 100644
index 00000000..eebcc0b8
Binary files /dev/null and b/assets/img/fun/pufferfish_twisted_tube_variable-480.webp differ
diff --git a/assets/img/fun/pufferfish_twisted_tube_variable-800.webp b/assets/img/fun/pufferfish_twisted_tube_variable-800.webp
new file mode 100644
index 00000000..7c8dc13b
Binary files /dev/null and b/assets/img/fun/pufferfish_twisted_tube_variable-800.webp differ
diff --git a/assets/img/fun/snet_fig19-1400.webp b/assets/img/fun/snet_fig19-1400.webp
new file mode 100644
index 00000000..72ce68d0
Binary files /dev/null and b/assets/img/fun/snet_fig19-1400.webp differ
diff --git a/assets/img/fun/snet_fig19-480.webp b/assets/img/fun/snet_fig19-480.webp
new file mode 100644
index 00000000..801fa8b1
Binary files /dev/null and b/assets/img/fun/snet_fig19-480.webp differ
diff --git a/assets/img/fun/snet_fig19-800.webp b/assets/img/fun/snet_fig19-800.webp
new file mode 100644
index 00000000..dbe20234
Binary files /dev/null and b/assets/img/fun/snet_fig19-800.webp differ
diff --git a/assets/img/fun/sp1-1400.webp b/assets/img/fun/sp1-1400.webp
new file mode 100644
index 00000000..bf57b2db
Binary files /dev/null and b/assets/img/fun/sp1-1400.webp differ
diff --git a/assets/img/fun/sp1-480.webp b/assets/img/fun/sp1-480.webp
new file mode 100644
index 00000000..526a1341
Binary files /dev/null and b/assets/img/fun/sp1-480.webp differ
diff --git a/assets/img/fun/sp1-800.webp b/assets/img/fun/sp1-800.webp
new file mode 100644
index 00000000..3dc39776
Binary files /dev/null and b/assets/img/fun/sp1-800.webp differ
diff --git a/assets/img/fun/sp2-1400.webp b/assets/img/fun/sp2-1400.webp
new file mode 100644
index 00000000..832e72cb
Binary files /dev/null and b/assets/img/fun/sp2-1400.webp differ
diff --git a/assets/img/fun/sp2-480.webp b/assets/img/fun/sp2-480.webp
new file mode 100644
index 00000000..aca2ae66
Binary files /dev/null and b/assets/img/fun/sp2-480.webp differ
diff --git a/assets/img/fun/sp2-800.webp b/assets/img/fun/sp2-800.webp
new file mode 100644
index 00000000..c0efcb94
Binary files /dev/null and b/assets/img/fun/sp2-800.webp differ
diff --git a/assets/img/fun/sp3-1400.webp b/assets/img/fun/sp3-1400.webp
new file mode 100644
index 00000000..351f3956
Binary files /dev/null and b/assets/img/fun/sp3-1400.webp differ
diff --git a/assets/img/fun/sp3-480.webp b/assets/img/fun/sp3-480.webp
new file mode 100644
index 00000000..d2b3c947
Binary files /dev/null and b/assets/img/fun/sp3-480.webp differ
diff --git a/assets/img/fun/sp3-800.webp b/assets/img/fun/sp3-800.webp
new file mode 100644
index 00000000..f05c5f4a
Binary files /dev/null and b/assets/img/fun/sp3-800.webp differ
diff --git a/assets/img/fun/spherepacking_5-1400.webp b/assets/img/fun/spherepacking_5-1400.webp
new file mode 100644
index 00000000..91e593f6
Binary files /dev/null and b/assets/img/fun/spherepacking_5-1400.webp differ
diff --git a/assets/img/fun/spherepacking_5-480.webp b/assets/img/fun/spherepacking_5-480.webp
new file mode 100644
index 00000000..3d1b81f0
Binary files /dev/null and b/assets/img/fun/spherepacking_5-480.webp differ
diff --git a/assets/img/fun/spherepacking_5-800.webp b/assets/img/fun/spherepacking_5-800.webp
new file mode 100644
index 00000000..91e593f6
Binary files /dev/null and b/assets/img/fun/spherepacking_5-800.webp differ
diff --git a/assets/img/fun/spiral_voronoi-1400.webp b/assets/img/fun/spiral_voronoi-1400.webp
new file mode 100644
index 00000000..78fdee1a
Binary files /dev/null and b/assets/img/fun/spiral_voronoi-1400.webp differ
diff --git a/assets/img/fun/spiral_voronoi-480.webp b/assets/img/fun/spiral_voronoi-480.webp
new file mode 100644
index 00000000..97594e83
Binary files /dev/null and b/assets/img/fun/spiral_voronoi-480.webp differ
diff --git a/assets/img/fun/spiral_voronoi-800.webp b/assets/img/fun/spiral_voronoi-800.webp
new file mode 100644
index 00000000..6f25e95c
Binary files /dev/null and b/assets/img/fun/spiral_voronoi-800.webp differ
diff --git a/assets/img/fun/spring_flower0-1400.webp b/assets/img/fun/spring_flower0-1400.webp
new file mode 100644
index 00000000..3f905b6b
Binary files /dev/null and b/assets/img/fun/spring_flower0-1400.webp differ
diff --git a/assets/img/fun/spring_flower0-480.webp b/assets/img/fun/spring_flower0-480.webp
new file mode 100644
index 00000000..2393a226
Binary files /dev/null and b/assets/img/fun/spring_flower0-480.webp differ
diff --git a/assets/img/fun/spring_flower0-800.webp b/assets/img/fun/spring_flower0-800.webp
new file mode 100644
index 00000000..d2682d04
Binary files /dev/null and b/assets/img/fun/spring_flower0-800.webp differ
diff --git a/assets/img/fun/spring_flower1-1400.webp b/assets/img/fun/spring_flower1-1400.webp
new file mode 100644
index 00000000..d496831c
Binary files /dev/null and b/assets/img/fun/spring_flower1-1400.webp differ
diff --git a/assets/img/fun/spring_flower1-480.webp b/assets/img/fun/spring_flower1-480.webp
new file mode 100644
index 00000000..c4d6dd5c
Binary files /dev/null and b/assets/img/fun/spring_flower1-480.webp differ
diff --git a/assets/img/fun/spring_flower1-800.webp b/assets/img/fun/spring_flower1-800.webp
new file mode 100644
index 00000000..70122f44
Binary files /dev/null and b/assets/img/fun/spring_flower1-800.webp differ
diff --git a/assets/img/fun/staggered_1-1400.webp b/assets/img/fun/staggered_1-1400.webp
new file mode 100644
index 00000000..998c7c1d
Binary files /dev/null and b/assets/img/fun/staggered_1-1400.webp differ
diff --git a/assets/img/fun/staggered_1-480.webp b/assets/img/fun/staggered_1-480.webp
new file mode 100644
index 00000000..4ffd9a98
Binary files /dev/null and b/assets/img/fun/staggered_1-480.webp differ
diff --git a/assets/img/fun/staggered_1-800.webp b/assets/img/fun/staggered_1-800.webp
new file mode 100644
index 00000000..998c7c1d
Binary files /dev/null and b/assets/img/fun/staggered_1-800.webp differ
diff --git a/assets/img/fun/staggered_3-1400.webp b/assets/img/fun/staggered_3-1400.webp
new file mode 100644
index 00000000..71d470de
Binary files /dev/null and b/assets/img/fun/staggered_3-1400.webp differ
diff --git a/assets/img/fun/staggered_3-480.webp b/assets/img/fun/staggered_3-480.webp
new file mode 100644
index 00000000..d4245d5f
Binary files /dev/null and b/assets/img/fun/staggered_3-480.webp differ
diff --git a/assets/img/fun/staggered_3-800.webp b/assets/img/fun/staggered_3-800.webp
new file mode 100644
index 00000000..71d470de
Binary files /dev/null and b/assets/img/fun/staggered_3-800.webp differ
diff --git a/assets/img/fun/surf_from_curve-1400.webp b/assets/img/fun/surf_from_curve-1400.webp
new file mode 100644
index 00000000..31e497b8
Binary files /dev/null and b/assets/img/fun/surf_from_curve-1400.webp differ
diff --git a/assets/img/fun/surf_from_curve-480.webp b/assets/img/fun/surf_from_curve-480.webp
new file mode 100644
index 00000000..9c98bf96
Binary files /dev/null and b/assets/img/fun/surf_from_curve-480.webp differ
diff --git a/assets/img/fun/surf_from_curve-800.webp b/assets/img/fun/surf_from_curve-800.webp
new file mode 100644
index 00000000..2f176c9c
Binary files /dev/null and b/assets/img/fun/surf_from_curve-800.webp differ
diff --git a/assets/img/fun/torus_earth-1400.webp b/assets/img/fun/torus_earth-1400.webp
new file mode 100644
index 00000000..63b63964
Binary files /dev/null and b/assets/img/fun/torus_earth-1400.webp differ
diff --git a/assets/img/fun/torus_earth-480.webp b/assets/img/fun/torus_earth-480.webp
new file mode 100644
index 00000000..3d9216a4
Binary files /dev/null and b/assets/img/fun/torus_earth-480.webp differ
diff --git a/assets/img/fun/torus_earth-800.webp b/assets/img/fun/torus_earth-800.webp
new file mode 100644
index 00000000..2c804c70
Binary files /dev/null and b/assets/img/fun/torus_earth-800.webp differ
diff --git a/assets/img/fun/truss-1400.webp b/assets/img/fun/truss-1400.webp
new file mode 100644
index 00000000..b93f7454
Binary files /dev/null and b/assets/img/fun/truss-1400.webp differ
diff --git a/assets/img/fun/truss-480.webp b/assets/img/fun/truss-480.webp
new file mode 100644
index 00000000..86ef3973
Binary files /dev/null and b/assets/img/fun/truss-480.webp differ
diff --git a/assets/img/fun/truss-800.webp b/assets/img/fun/truss-800.webp
new file mode 100644
index 00000000..d3a8d567
Binary files /dev/null and b/assets/img/fun/truss-800.webp differ
diff --git a/assets/img/fun/truss2-1400.webp b/assets/img/fun/truss2-1400.webp
new file mode 100644
index 00000000..1280caee
Binary files /dev/null and b/assets/img/fun/truss2-1400.webp differ
diff --git a/assets/img/fun/truss2-480.webp b/assets/img/fun/truss2-480.webp
new file mode 100644
index 00000000..97a338f4
Binary files /dev/null and b/assets/img/fun/truss2-480.webp differ
diff --git a/assets/img/fun/truss2-800.webp b/assets/img/fun/truss2-800.webp
new file mode 100644
index 00000000..c584653c
Binary files /dev/null and b/assets/img/fun/truss2-800.webp differ
diff --git a/assets/img/fun/twist_shell-1400.webp b/assets/img/fun/twist_shell-1400.webp
new file mode 100644
index 00000000..1a67b9f3
Binary files /dev/null and b/assets/img/fun/twist_shell-1400.webp differ
diff --git a/assets/img/fun/twist_shell-480.webp b/assets/img/fun/twist_shell-480.webp
new file mode 100644
index 00000000..32744879
Binary files /dev/null and b/assets/img/fun/twist_shell-480.webp differ
diff --git a/assets/img/fun/twist_shell-800.webp b/assets/img/fun/twist_shell-800.webp
new file mode 100644
index 00000000..b1639396
Binary files /dev/null and b/assets/img/fun/twist_shell-800.webp differ
diff --git a/assets/img/fun/visit0-1400.webp b/assets/img/fun/visit0-1400.webp
new file mode 100644
index 00000000..a10fe16e
Binary files /dev/null and b/assets/img/fun/visit0-1400.webp differ
diff --git a/assets/img/fun/visit0-480.webp b/assets/img/fun/visit0-480.webp
new file mode 100644
index 00000000..ed7f58a1
Binary files /dev/null and b/assets/img/fun/visit0-480.webp differ
diff --git a/assets/img/fun/visit0-800.webp b/assets/img/fun/visit0-800.webp
new file mode 100644
index 00000000..4f8c2920
Binary files /dev/null and b/assets/img/fun/visit0-800.webp differ
diff --git a/assets/img/fun/visit1-1400.webp b/assets/img/fun/visit1-1400.webp
new file mode 100644
index 00000000..661017fa
Binary files /dev/null and b/assets/img/fun/visit1-1400.webp differ
diff --git a/assets/img/fun/visit1-480.webp b/assets/img/fun/visit1-480.webp
new file mode 100644
index 00000000..be3700d6
Binary files /dev/null and b/assets/img/fun/visit1-480.webp differ
diff --git a/assets/img/fun/visit1-800.webp b/assets/img/fun/visit1-800.webp
new file mode 100644
index 00000000..661017fa
Binary files /dev/null and b/assets/img/fun/visit1-800.webp differ
diff --git a/assets/img/fun/waffle2-1400.webp b/assets/img/fun/waffle2-1400.webp
new file mode 100644
index 00000000..df7ed047
Binary files /dev/null and b/assets/img/fun/waffle2-1400.webp differ
diff --git a/assets/img/fun/waffle2-480.webp b/assets/img/fun/waffle2-480.webp
new file mode 100644
index 00000000..20b046f1
Binary files /dev/null and b/assets/img/fun/waffle2-480.webp differ
diff --git a/assets/img/fun/waffle2-800.webp b/assets/img/fun/waffle2-800.webp
new file mode 100644
index 00000000..a3eb64d8
Binary files /dev/null and b/assets/img/fun/waffle2-800.webp differ
diff --git a/assets/img/fun/weave_pattern-1400.webp b/assets/img/fun/weave_pattern-1400.webp
new file mode 100644
index 00000000..ccff0f2a
Binary files /dev/null and b/assets/img/fun/weave_pattern-1400.webp differ
diff --git a/assets/img/fun/weave_pattern-480.webp b/assets/img/fun/weave_pattern-480.webp
new file mode 100644
index 00000000..141e925e
Binary files /dev/null and b/assets/img/fun/weave_pattern-480.webp differ
diff --git a/assets/img/fun/weave_pattern-800.webp b/assets/img/fun/weave_pattern-800.webp
new file mode 100644
index 00000000..ed25b416
Binary files /dev/null and b/assets/img/fun/weave_pattern-800.webp differ
diff --git a/assets/img/fun/weave_wall-1400.webp b/assets/img/fun/weave_wall-1400.webp
new file mode 100644
index 00000000..1664d530
Binary files /dev/null and b/assets/img/fun/weave_wall-1400.webp differ
diff --git a/assets/img/fun/weave_wall-480.webp b/assets/img/fun/weave_wall-480.webp
new file mode 100644
index 00000000..f136ab5a
Binary files /dev/null and b/assets/img/fun/weave_wall-480.webp differ
diff --git a/assets/img/fun/weave_wall-800.webp b/assets/img/fun/weave_wall-800.webp
new file mode 100644
index 00000000..06848c97
Binary files /dev/null and b/assets/img/fun/weave_wall-800.webp differ
diff --git a/assets/img/geometrical-shape-1400.webp b/assets/img/geometrical-shape-1400.webp
new file mode 100644
index 00000000..02298d0d
Binary files /dev/null and b/assets/img/geometrical-shape-1400.webp differ
diff --git a/assets/img/geometrical-shape-480.webp b/assets/img/geometrical-shape-480.webp
new file mode 100644
index 00000000..b54f4261
Binary files /dev/null and b/assets/img/geometrical-shape-480.webp differ
diff --git a/assets/img/geometrical-shape-800.webp b/assets/img/geometrical-shape-800.webp
new file mode 100644
index 00000000..02298d0d
Binary files /dev/null and b/assets/img/geometrical-shape-800.webp differ
diff --git a/assets/img/hexagram-1400.webp b/assets/img/hexagram-1400.webp
new file mode 100644
index 00000000..2b9a476d
Binary files /dev/null and b/assets/img/hexagram-1400.webp differ
diff --git a/assets/img/hexagram-480.webp b/assets/img/hexagram-480.webp
new file mode 100644
index 00000000..df1f54eb
Binary files /dev/null and b/assets/img/hexagram-480.webp differ
diff --git a/assets/img/hexagram-800.webp b/assets/img/hexagram-800.webp
new file mode 100644
index 00000000..2b9a476d
Binary files /dev/null and b/assets/img/hexagram-800.webp differ
diff --git a/assets/img/math-screenshot-1400.webp b/assets/img/math-screenshot-1400.webp
new file mode 100644
index 00000000..88ff58b1
Binary files /dev/null and b/assets/img/math-screenshot-1400.webp differ
diff --git a/assets/img/math-screenshot-480.webp b/assets/img/math-screenshot-480.webp
new file mode 100644
index 00000000..089a94f8
Binary files /dev/null and b/assets/img/math-screenshot-480.webp differ
diff --git a/assets/img/math-screenshot-800.webp b/assets/img/math-screenshot-800.webp
new file mode 100644
index 00000000..f8d08c0e
Binary files /dev/null and b/assets/img/math-screenshot-800.webp differ
diff --git a/assets/img/me2-1400.webp b/assets/img/me2-1400.webp
new file mode 100644
index 00000000..3d95b641
Binary files /dev/null and b/assets/img/me2-1400.webp differ
diff --git a/assets/img/me2-480.webp b/assets/img/me2-480.webp
new file mode 100644
index 00000000..3d95b641
Binary files /dev/null and b/assets/img/me2-480.webp differ
diff --git a/assets/img/me2-800.webp b/assets/img/me2-800.webp
new file mode 100644
index 00000000..3d95b641
Binary files /dev/null and b/assets/img/me2-800.webp differ
diff --git a/assets/img/me3-1400.webp b/assets/img/me3-1400.webp
new file mode 100644
index 00000000..9aaeca08
Binary files /dev/null and b/assets/img/me3-1400.webp differ
diff --git a/assets/img/me3-480.webp b/assets/img/me3-480.webp
new file mode 100644
index 00000000..3108e22f
Binary files /dev/null and b/assets/img/me3-480.webp differ
diff --git a/assets/img/me3-800.webp b/assets/img/me3-800.webp
new file mode 100644
index 00000000..0824e2c1
Binary files /dev/null and b/assets/img/me3-800.webp differ
diff --git a/assets/img/paper_2020SIG-1400.webp b/assets/img/paper_2020SIG-1400.webp
new file mode 100644
index 00000000..725f937c
Binary files /dev/null and b/assets/img/paper_2020SIG-1400.webp differ
diff --git a/assets/img/paper_2020SIG-480.webp b/assets/img/paper_2020SIG-480.webp
new file mode 100644
index 00000000..3be219f3
Binary files /dev/null and b/assets/img/paper_2020SIG-480.webp differ
diff --git a/assets/img/paper_2020SIG-800.webp b/assets/img/paper_2020SIG-800.webp
new file mode 100644
index 00000000..5df4adbd
Binary files /dev/null and b/assets/img/paper_2020SIG-800.webp differ
diff --git a/assets/img/paper_2021CAD-1400.webp b/assets/img/paper_2021CAD-1400.webp
new file mode 100644
index 00000000..ec8112d5
Binary files /dev/null and b/assets/img/paper_2021CAD-1400.webp differ
diff --git a/assets/img/paper_2021CAD-480.webp b/assets/img/paper_2021CAD-480.webp
new file mode 100644
index 00000000..adf46372
Binary files /dev/null and b/assets/img/paper_2021CAD-480.webp differ
diff --git a/assets/img/paper_2021CAD-800.webp b/assets/img/paper_2021CAD-800.webp
new file mode 100644
index 00000000..d6d4c941
Binary files /dev/null and b/assets/img/paper_2021CAD-800.webp differ
diff --git a/assets/img/paper_2021CRPC-1400.webp b/assets/img/paper_2021CRPC-1400.webp
new file mode 100644
index 00000000..63461ec2
Binary files /dev/null and b/assets/img/paper_2021CRPC-1400.webp differ
diff --git a/assets/img/paper_2021CRPC-480.webp b/assets/img/paper_2021CRPC-480.webp
new file mode 100644
index 00000000..8c392cd8
Binary files /dev/null and b/assets/img/paper_2021CRPC-480.webp differ
diff --git a/assets/img/paper_2021CRPC-800.webp b/assets/img/paper_2021CRPC-800.webp
new file mode 100644
index 00000000..55f5eee2
Binary files /dev/null and b/assets/img/paper_2021CRPC-800.webp differ
diff --git a/assets/img/paper_2021SIG-1400.webp b/assets/img/paper_2021SIG-1400.webp
new file mode 100644
index 00000000..b5d13514
Binary files /dev/null and b/assets/img/paper_2021SIG-1400.webp differ
diff --git a/assets/img/paper_2021SIG-480.webp b/assets/img/paper_2021SIG-480.webp
new file mode 100644
index 00000000..e4aa3e91
Binary files /dev/null and b/assets/img/paper_2021SIG-480.webp differ
diff --git a/assets/img/paper_2021SIG-800.webp b/assets/img/paper_2021SIG-800.webp
new file mode 100644
index 00000000..73e1d79e
Binary files /dev/null and b/assets/img/paper_2021SIG-800.webp differ
diff --git a/assets/img/paper_2022AAG-1400.webp b/assets/img/paper_2022AAG-1400.webp
new file mode 100644
index 00000000..ffabdb1b
Binary files /dev/null and b/assets/img/paper_2022AAG-1400.webp differ
diff --git a/assets/img/paper_2022AAG-480.webp b/assets/img/paper_2022AAG-480.webp
new file mode 100644
index 00000000..c3d49292
Binary files /dev/null and b/assets/img/paper_2022AAG-480.webp differ
diff --git a/assets/img/paper_2022AAG-800.webp b/assets/img/paper_2022AAG-800.webp
new file mode 100644
index 00000000..e3015b7a
Binary files /dev/null and b/assets/img/paper_2022AAG-800.webp differ
diff --git a/assets/img/paper_2022AGG-1400.webp b/assets/img/paper_2022AGG-1400.webp
new file mode 100644
index 00000000..3fae0a9e
Binary files /dev/null and b/assets/img/paper_2022AGG-1400.webp differ
diff --git a/assets/img/paper_2022AGG-480.webp b/assets/img/paper_2022AGG-480.webp
new file mode 100644
index 00000000..05f9e087
Binary files /dev/null and b/assets/img/paper_2022AGG-480.webp differ
diff --git a/assets/img/paper_2022AGG-800.webp b/assets/img/paper_2022AGG-800.webp
new file mode 100644
index 00000000..d5873e0a
Binary files /dev/null and b/assets/img/paper_2022AGG-800.webp differ
diff --git a/assets/img/paper_2022PP-1400.webp b/assets/img/paper_2022PP-1400.webp
new file mode 100644
index 00000000..071b6ce9
Binary files /dev/null and b/assets/img/paper_2022PP-1400.webp differ
diff --git a/assets/img/paper_2022PP-480.webp b/assets/img/paper_2022PP-480.webp
new file mode 100644
index 00000000..5f7582d0
Binary files /dev/null and b/assets/img/paper_2022PP-480.webp differ
diff --git a/assets/img/paper_2022PP-800.webp b/assets/img/paper_2022PP-800.webp
new file mode 100644
index 00000000..f7b64cd2
Binary files /dev/null and b/assets/img/paper_2022PP-800.webp differ
diff --git a/assets/img/paper_2022PPQ-1400.webp b/assets/img/paper_2022PPQ-1400.webp
new file mode 100644
index 00000000..c1216ad0
Binary files /dev/null and b/assets/img/paper_2022PPQ-1400.webp differ
diff --git a/assets/img/paper_2022PPQ-480.webp b/assets/img/paper_2022PPQ-480.webp
new file mode 100644
index 00000000..afd76d76
Binary files /dev/null and b/assets/img/paper_2022PPQ-480.webp differ
diff --git a/assets/img/paper_2022PPQ-800.webp b/assets/img/paper_2022PPQ-800.webp
new file mode 100644
index 00000000..33270f2d
Binary files /dev/null and b/assets/img/paper_2022PPQ-800.webp differ
diff --git a/assets/img/paper_2022helical-1400.webp b/assets/img/paper_2022helical-1400.webp
new file mode 100644
index 00000000..27d6fa54
Binary files /dev/null and b/assets/img/paper_2022helical-1400.webp differ
diff --git a/assets/img/paper_2022helical-480.webp b/assets/img/paper_2022helical-480.webp
new file mode 100644
index 00000000..a7188d53
Binary files /dev/null and b/assets/img/paper_2022helical-480.webp differ
diff --git a/assets/img/paper_2022helical-800.webp b/assets/img/paper_2022helical-800.webp
new file mode 100644
index 00000000..27d6fa54
Binary files /dev/null and b/assets/img/paper_2022helical-800.webp differ
diff --git a/assets/img/paper_2023SIGA-1400.webp b/assets/img/paper_2023SIGA-1400.webp
new file mode 100644
index 00000000..f2b9a4d5
Binary files /dev/null and b/assets/img/paper_2023SIGA-1400.webp differ
diff --git a/assets/img/paper_2023SIGA-480.webp b/assets/img/paper_2023SIGA-480.webp
new file mode 100644
index 00000000..c6461666
Binary files /dev/null and b/assets/img/paper_2023SIGA-480.webp differ
diff --git a/assets/img/paper_2023SIGA-800.webp b/assets/img/paper_2023SIGA-800.webp
new file mode 100644
index 00000000..f2b9a4d5
Binary files /dev/null and b/assets/img/paper_2023SIGA-800.webp differ
diff --git a/assets/img/paper_DGPC-1400.webp b/assets/img/paper_DGPC-1400.webp
new file mode 100644
index 00000000..bad66857
Binary files /dev/null and b/assets/img/paper_DGPC-1400.webp differ
diff --git a/assets/img/paper_DGPC-480.webp b/assets/img/paper_DGPC-480.webp
new file mode 100644
index 00000000..02b474c1
Binary files /dev/null and b/assets/img/paper_DGPC-480.webp differ
diff --git a/assets/img/paper_DGPC-800.webp b/assets/img/paper_DGPC-800.webp
new file mode 100644
index 00000000..00e45e47
Binary files /dev/null and b/assets/img/paper_DGPC-800.webp differ
diff --git a/assets/img/paper_SMI2023-1400.webp b/assets/img/paper_SMI2023-1400.webp
new file mode 100644
index 00000000..74e114c6
Binary files /dev/null and b/assets/img/paper_SMI2023-1400.webp differ
diff --git a/assets/img/paper_SMI2023-480.webp b/assets/img/paper_SMI2023-480.webp
new file mode 100644
index 00000000..b96f0a7d
Binary files /dev/null and b/assets/img/paper_SMI2023-480.webp differ
diff --git a/assets/img/paper_SMI2023-800.webp b/assets/img/paper_SMI2023-800.webp
new file mode 100644
index 00000000..38ea12d6
Binary files /dev/null and b/assets/img/paper_SMI2023-800.webp differ
diff --git a/assets/img/paper_aag2018-1400.webp b/assets/img/paper_aag2018-1400.webp
new file mode 100644
index 00000000..e5063251
Binary files /dev/null and b/assets/img/paper_aag2018-1400.webp differ
diff --git a/assets/img/paper_aag2018-480.webp b/assets/img/paper_aag2018-480.webp
new file mode 100644
index 00000000..a6515db0
Binary files /dev/null and b/assets/img/paper_aag2018-480.webp differ
diff --git a/assets/img/paper_aag2018-800.webp b/assets/img/paper_aag2018-800.webp
new file mode 100644
index 00000000..e5063251
Binary files /dev/null and b/assets/img/paper_aag2018-800.webp differ
diff --git a/assets/img/paper_aag2020-1400.webp b/assets/img/paper_aag2020-1400.webp
new file mode 100644
index 00000000..67df540e
Binary files /dev/null and b/assets/img/paper_aag2020-1400.webp differ
diff --git a/assets/img/paper_aag2020-480.webp b/assets/img/paper_aag2020-480.webp
new file mode 100644
index 00000000..a7b8433c
Binary files /dev/null and b/assets/img/paper_aag2020-480.webp differ
diff --git a/assets/img/paper_aag2020-800.webp b/assets/img/paper_aag2020-800.webp
new file mode 100644
index 00000000..67df540e
Binary files /dev/null and b/assets/img/paper_aag2020-800.webp differ
diff --git a/assets/img/paper_aag2023-1400.webp b/assets/img/paper_aag2023-1400.webp
new file mode 100644
index 00000000..01f80f43
Binary files /dev/null and b/assets/img/paper_aag2023-1400.webp differ
diff --git a/assets/img/paper_aag2023-480.webp b/assets/img/paper_aag2023-480.webp
new file mode 100644
index 00000000..c7acf234
Binary files /dev/null and b/assets/img/paper_aag2023-480.webp differ
diff --git a/assets/img/paper_aag2023-800.webp b/assets/img/paper_aag2023-800.webp
new file mode 100644
index 00000000..01f80f43
Binary files /dev/null and b/assets/img/paper_aag2023-800.webp differ
diff --git a/assets/img/paper_svs-1400.webp b/assets/img/paper_svs-1400.webp
new file mode 100644
index 00000000..bcecde07
Binary files /dev/null and b/assets/img/paper_svs-1400.webp differ
diff --git a/assets/img/paper_svs-480.webp b/assets/img/paper_svs-480.webp
new file mode 100644
index 00000000..56aacb2b
Binary files /dev/null and b/assets/img/paper_svs-480.webp differ
diff --git a/assets/img/paper_svs-800.webp b/assets/img/paper_svs-800.webp
new file mode 100644
index 00000000..bcecde07
Binary files /dev/null and b/assets/img/paper_svs-800.webp differ
diff --git a/assets/img/photos-screenshot-1400.webp b/assets/img/photos-screenshot-1400.webp
new file mode 100644
index 00000000..79382602
Binary files /dev/null and b/assets/img/photos-screenshot-1400.webp differ
diff --git a/assets/img/photos-screenshot-480.webp b/assets/img/photos-screenshot-480.webp
new file mode 100644
index 00000000..263adf80
Binary files /dev/null and b/assets/img/photos-screenshot-480.webp differ
diff --git a/assets/img/photos-screenshot-800.webp b/assets/img/photos-screenshot-800.webp
new file mode 100644
index 00000000..dd09596d
Binary files /dev/null and b/assets/img/photos-screenshot-800.webp differ
diff --git a/assets/img/prof_pic-1400.webp b/assets/img/prof_pic-1400.webp
new file mode 100644
index 00000000..b6b1f00f
Binary files /dev/null and b/assets/img/prof_pic-1400.webp differ
diff --git a/assets/img/prof_pic-480.webp b/assets/img/prof_pic-480.webp
new file mode 100644
index 00000000..0dfd7e2f
Binary files /dev/null and b/assets/img/prof_pic-480.webp differ
diff --git a/assets/img/prof_pic-800.webp b/assets/img/prof_pic-800.webp
new file mode 100644
index 00000000..94efaac9
Binary files /dev/null and b/assets/img/prof_pic-800.webp differ
diff --git a/assets/img/proj1/costa4-1400.webp b/assets/img/proj1/costa4-1400.webp
new file mode 100644
index 00000000..64ee2353
Binary files /dev/null and b/assets/img/proj1/costa4-1400.webp differ
diff --git a/assets/img/proj1/costa4-480.webp b/assets/img/proj1/costa4-480.webp
new file mode 100644
index 00000000..2318ecce
Binary files /dev/null and b/assets/img/proj1/costa4-480.webp differ
diff --git a/assets/img/proj1/costa4-800.webp b/assets/img/proj1/costa4-800.webp
new file mode 100644
index 00000000..40ec044a
Binary files /dev/null and b/assets/img/proj1/costa4-800.webp differ
diff --git a/assets/img/proj1/neg_render1-1400.webp b/assets/img/proj1/neg_render1-1400.webp
new file mode 100644
index 00000000..7ba7fbae
Binary files /dev/null and b/assets/img/proj1/neg_render1-1400.webp differ
diff --git a/assets/img/proj1/neg_render1-480.webp b/assets/img/proj1/neg_render1-480.webp
new file mode 100644
index 00000000..c467ee65
Binary files /dev/null and b/assets/img/proj1/neg_render1-480.webp differ
diff --git a/assets/img/proj1/neg_render1-800.webp b/assets/img/proj1/neg_render1-800.webp
new file mode 100644
index 00000000..323c2c8a
Binary files /dev/null and b/assets/img/proj1/neg_render1-800.webp differ
diff --git a/assets/img/proj1/neg_render2-1400.webp b/assets/img/proj1/neg_render2-1400.webp
new file mode 100644
index 00000000..2c535e46
Binary files /dev/null and b/assets/img/proj1/neg_render2-1400.webp differ
diff --git a/assets/img/proj1/neg_render2-480.webp b/assets/img/proj1/neg_render2-480.webp
new file mode 100644
index 00000000..9f845622
Binary files /dev/null and b/assets/img/proj1/neg_render2-480.webp differ
diff --git a/assets/img/proj1/neg_render2-800.webp b/assets/img/proj1/neg_render2-800.webp
new file mode 100644
index 00000000..1f4acb98
Binary files /dev/null and b/assets/img/proj1/neg_render2-800.webp differ
diff --git a/assets/img/proj1/neg_render30-1400.webp b/assets/img/proj1/neg_render30-1400.webp
new file mode 100644
index 00000000..e05e5ff1
Binary files /dev/null and b/assets/img/proj1/neg_render30-1400.webp differ
diff --git a/assets/img/proj1/neg_render30-480.webp b/assets/img/proj1/neg_render30-480.webp
new file mode 100644
index 00000000..335f89d1
Binary files /dev/null and b/assets/img/proj1/neg_render30-480.webp differ
diff --git a/assets/img/proj1/neg_render30-800.webp b/assets/img/proj1/neg_render30-800.webp
new file mode 100644
index 00000000..c911c044
Binary files /dev/null and b/assets/img/proj1/neg_render30-800.webp differ
diff --git a/assets/img/proj1/pos_render3-1400.webp b/assets/img/proj1/pos_render3-1400.webp
new file mode 100644
index 00000000..188e1ede
Binary files /dev/null and b/assets/img/proj1/pos_render3-1400.webp differ
diff --git a/assets/img/proj1/pos_render3-480.webp b/assets/img/proj1/pos_render3-480.webp
new file mode 100644
index 00000000..20e8d76b
Binary files /dev/null and b/assets/img/proj1/pos_render3-480.webp differ
diff --git a/assets/img/proj1/pos_render3-800.webp b/assets/img/proj1/pos_render3-800.webp
new file mode 100644
index 00000000..4917747b
Binary files /dev/null and b/assets/img/proj1/pos_render3-800.webp differ
diff --git a/assets/img/proj1/pos_render6-1400.webp b/assets/img/proj1/pos_render6-1400.webp
new file mode 100644
index 00000000..86fef135
Binary files /dev/null and b/assets/img/proj1/pos_render6-1400.webp differ
diff --git a/assets/img/proj1/pos_render6-480.webp b/assets/img/proj1/pos_render6-480.webp
new file mode 100644
index 00000000..0eaae508
Binary files /dev/null and b/assets/img/proj1/pos_render6-480.webp differ
diff --git a/assets/img/proj1/pos_render6-800.webp b/assets/img/proj1/pos_render6-800.webp
new file mode 100644
index 00000000..93e84d0d
Binary files /dev/null and b/assets/img/proj1/pos_render6-800.webp differ
diff --git a/assets/img/proj1/pos_render7_cut-1400.webp b/assets/img/proj1/pos_render7_cut-1400.webp
new file mode 100644
index 00000000..a52f3e90
Binary files /dev/null and b/assets/img/proj1/pos_render7_cut-1400.webp differ
diff --git a/assets/img/proj1/pos_render7_cut-480.webp b/assets/img/proj1/pos_render7_cut-480.webp
new file mode 100644
index 00000000..22c0453d
Binary files /dev/null and b/assets/img/proj1/pos_render7_cut-480.webp differ
diff --git a/assets/img/proj1/pos_render7_cut-800.webp b/assets/img/proj1/pos_render7_cut-800.webp
new file mode 100644
index 00000000..a424d4c1
Binary files /dev/null and b/assets/img/proj1/pos_render7_cut-800.webp differ
diff --git a/assets/img/proj1/pos_render92-1400.webp b/assets/img/proj1/pos_render92-1400.webp
new file mode 100644
index 00000000..3b221413
Binary files /dev/null and b/assets/img/proj1/pos_render92-1400.webp differ
diff --git a/assets/img/proj1/pos_render92-480.webp b/assets/img/proj1/pos_render92-480.webp
new file mode 100644
index 00000000..d8930bf8
Binary files /dev/null and b/assets/img/proj1/pos_render92-480.webp differ
diff --git a/assets/img/proj1/pos_render92-800.webp b/assets/img/proj1/pos_render92-800.webp
new file mode 100644
index 00000000..0a0bdad9
Binary files /dev/null and b/assets/img/proj1/pos_render92-800.webp differ
diff --git a/assets/img/proj1/pos_render93-1400.webp b/assets/img/proj1/pos_render93-1400.webp
new file mode 100644
index 00000000..da869eb9
Binary files /dev/null and b/assets/img/proj1/pos_render93-1400.webp differ
diff --git a/assets/img/proj1/pos_render93-480.webp b/assets/img/proj1/pos_render93-480.webp
new file mode 100644
index 00000000..953a66cf
Binary files /dev/null and b/assets/img/proj1/pos_render93-480.webp differ
diff --git a/assets/img/proj1/pos_render93-800.webp b/assets/img/proj1/pos_render93-800.webp
new file mode 100644
index 00000000..bd482b45
Binary files /dev/null and b/assets/img/proj1/pos_render93-800.webp differ
diff --git a/assets/img/proj1/pos_render95-1400.webp b/assets/img/proj1/pos_render95-1400.webp
new file mode 100644
index 00000000..4ea22751
Binary files /dev/null and b/assets/img/proj1/pos_render95-1400.webp differ
diff --git a/assets/img/proj1/pos_render95-480.webp b/assets/img/proj1/pos_render95-480.webp
new file mode 100644
index 00000000..7f6ca9c7
Binary files /dev/null and b/assets/img/proj1/pos_render95-480.webp differ
diff --git a/assets/img/proj1/pos_render95-800.webp b/assets/img/proj1/pos_render95-800.webp
new file mode 100644
index 00000000..d1685fd0
Binary files /dev/null and b/assets/img/proj1/pos_render95-800.webp differ
diff --git a/assets/img/proj10/2023SMI-1400.webp b/assets/img/proj10/2023SMI-1400.webp
new file mode 100644
index 00000000..9a39de0e
Binary files /dev/null and b/assets/img/proj10/2023SMI-1400.webp differ
diff --git a/assets/img/proj10/2023SMI-480.webp b/assets/img/proj10/2023SMI-480.webp
new file mode 100644
index 00000000..3f7d1290
Binary files /dev/null and b/assets/img/proj10/2023SMI-480.webp differ
diff --git a/assets/img/proj10/2023SMI-800.webp b/assets/img/proj10/2023SMI-800.webp
new file mode 100644
index 00000000..1eab466e
Binary files /dev/null and b/assets/img/proj10/2023SMI-800.webp differ
diff --git a/assets/img/proj10/shell_cmc-1400.webp b/assets/img/proj10/shell_cmc-1400.webp
new file mode 100644
index 00000000..76e30c12
Binary files /dev/null and b/assets/img/proj10/shell_cmc-1400.webp differ
diff --git a/assets/img/proj10/shell_cmc-480.webp b/assets/img/proj10/shell_cmc-480.webp
new file mode 100644
index 00000000..b0fcae96
Binary files /dev/null and b/assets/img/proj10/shell_cmc-480.webp differ
diff --git a/assets/img/proj10/shell_cmc-800.webp b/assets/img/proj10/shell_cmc-800.webp
new file mode 100644
index 00000000..a1066094
Binary files /dev/null and b/assets/img/proj10/shell_cmc-800.webp differ
diff --git a/assets/img/proj10/shell_eq-1400.webp b/assets/img/proj10/shell_eq-1400.webp
new file mode 100644
index 00000000..153e95ff
Binary files /dev/null and b/assets/img/proj10/shell_eq-1400.webp differ
diff --git a/assets/img/proj10/shell_eq-480.webp b/assets/img/proj10/shell_eq-480.webp
new file mode 100644
index 00000000..50b40503
Binary files /dev/null and b/assets/img/proj10/shell_eq-480.webp differ
diff --git a/assets/img/proj10/shell_eq-800.webp b/assets/img/proj10/shell_eq-800.webp
new file mode 100644
index 00000000..2e7cf0e6
Binary files /dev/null and b/assets/img/proj10/shell_eq-800.webp differ
diff --git a/assets/img/proj10/shell_mini-1400.webp b/assets/img/proj10/shell_mini-1400.webp
new file mode 100644
index 00000000..64243146
Binary files /dev/null and b/assets/img/proj10/shell_mini-1400.webp differ
diff --git a/assets/img/proj10/shell_mini-480.webp b/assets/img/proj10/shell_mini-480.webp
new file mode 100644
index 00000000..07467afa
Binary files /dev/null and b/assets/img/proj10/shell_mini-480.webp differ
diff --git a/assets/img/proj10/shell_mini-800.webp b/assets/img/proj10/shell_mini-800.webp
new file mode 100644
index 00000000..3b36d721
Binary files /dev/null and b/assets/img/proj10/shell_mini-800.webp differ
diff --git a/assets/img/proj10/shell_pc-1400.webp b/assets/img/proj10/shell_pc-1400.webp
new file mode 100644
index 00000000..6e8f69b6
Binary files /dev/null and b/assets/img/proj10/shell_pc-1400.webp differ
diff --git a/assets/img/proj10/shell_pc-480.webp b/assets/img/proj10/shell_pc-480.webp
new file mode 100644
index 00000000..40da1396
Binary files /dev/null and b/assets/img/proj10/shell_pc-480.webp differ
diff --git a/assets/img/proj10/shell_pc-800.webp b/assets/img/proj10/shell_pc-800.webp
new file mode 100644
index 00000000..d0de86b5
Binary files /dev/null and b/assets/img/proj10/shell_pc-800.webp differ
diff --git a/assets/img/proj10/smi_minishell-1400.webp b/assets/img/proj10/smi_minishell-1400.webp
new file mode 100644
index 00000000..2f8230a3
Binary files /dev/null and b/assets/img/proj10/smi_minishell-1400.webp differ
diff --git a/assets/img/proj10/smi_minishell-480.webp b/assets/img/proj10/smi_minishell-480.webp
new file mode 100644
index 00000000..7098393c
Binary files /dev/null and b/assets/img/proj10/smi_minishell-480.webp differ
diff --git a/assets/img/proj10/smi_minishell-800.webp b/assets/img/proj10/smi_minishell-800.webp
new file mode 100644
index 00000000..39b3d531
Binary files /dev/null and b/assets/img/proj10/smi_minishell-800.webp differ
diff --git a/assets/img/proj10/teaser-1400.webp b/assets/img/proj10/teaser-1400.webp
new file mode 100644
index 00000000..1ff2b21f
Binary files /dev/null and b/assets/img/proj10/teaser-1400.webp differ
diff --git a/assets/img/proj10/teaser-480.webp b/assets/img/proj10/teaser-480.webp
new file mode 100644
index 00000000..0dd544d1
Binary files /dev/null and b/assets/img/proj10/teaser-480.webp differ
diff --git a/assets/img/proj10/teaser-800.webp b/assets/img/proj10/teaser-800.webp
new file mode 100644
index 00000000..4407327e
Binary files /dev/null and b/assets/img/proj10/teaser-800.webp differ
diff --git a/assets/img/proj11/AAG-1400.webp b/assets/img/proj11/AAG-1400.webp
new file mode 100644
index 00000000..bc80faf2
Binary files /dev/null and b/assets/img/proj11/AAG-1400.webp differ
diff --git a/assets/img/proj11/AAG-480.webp b/assets/img/proj11/AAG-480.webp
new file mode 100644
index 00000000..94cebb47
Binary files /dev/null and b/assets/img/proj11/AAG-480.webp differ
diff --git a/assets/img/proj11/AAG-800.webp b/assets/img/proj11/AAG-800.webp
new file mode 100644
index 00000000..613260a5
Binary files /dev/null and b/assets/img/proj11/AAG-800.webp differ
diff --git a/assets/img/proj11/AGG-1400.webp b/assets/img/proj11/AGG-1400.webp
new file mode 100644
index 00000000..0c4af2a6
Binary files /dev/null and b/assets/img/proj11/AGG-1400.webp differ
diff --git a/assets/img/proj11/AGG-480.webp b/assets/img/proj11/AGG-480.webp
new file mode 100644
index 00000000..320d8633
Binary files /dev/null and b/assets/img/proj11/AGG-480.webp differ
diff --git a/assets/img/proj11/AGG-800.webp b/assets/img/proj11/AGG-800.webp
new file mode 100644
index 00000000..12e1252f
Binary files /dev/null and b/assets/img/proj11/AGG-800.webp differ
diff --git a/assets/img/proj11/diagram1-1400.webp b/assets/img/proj11/diagram1-1400.webp
new file mode 100644
index 00000000..ff5c38d5
Binary files /dev/null and b/assets/img/proj11/diagram1-1400.webp differ
diff --git a/assets/img/proj11/diagram1-480.webp b/assets/img/proj11/diagram1-480.webp
new file mode 100644
index 00000000..a1de4219
Binary files /dev/null and b/assets/img/proj11/diagram1-480.webp differ
diff --git a/assets/img/proj11/diagram1-800.webp b/assets/img/proj11/diagram1-800.webp
new file mode 100644
index 00000000..eb4f3124
Binary files /dev/null and b/assets/img/proj11/diagram1-800.webp differ
diff --git a/assets/img/proj11/diagram2-1400.webp b/assets/img/proj11/diagram2-1400.webp
new file mode 100644
index 00000000..06746fe7
Binary files /dev/null and b/assets/img/proj11/diagram2-1400.webp differ
diff --git a/assets/img/proj11/diagram2-480.webp b/assets/img/proj11/diagram2-480.webp
new file mode 100644
index 00000000..46f5ff9b
Binary files /dev/null and b/assets/img/proj11/diagram2-480.webp differ
diff --git a/assets/img/proj11/diagram2-800.webp b/assets/img/proj11/diagram2-800.webp
new file mode 100644
index 00000000..2a77525d
Binary files /dev/null and b/assets/img/proj11/diagram2-800.webp differ
diff --git a/assets/img/proj11/diagram3-1400.webp b/assets/img/proj11/diagram3-1400.webp
new file mode 100644
index 00000000..78f408a1
Binary files /dev/null and b/assets/img/proj11/diagram3-1400.webp differ
diff --git a/assets/img/proj11/diagram3-480.webp b/assets/img/proj11/diagram3-480.webp
new file mode 100644
index 00000000..781526e9
Binary files /dev/null and b/assets/img/proj11/diagram3-480.webp differ
diff --git a/assets/img/proj11/diagram3-800.webp b/assets/img/proj11/diagram3-800.webp
new file mode 100644
index 00000000..b5152493
Binary files /dev/null and b/assets/img/proj11/diagram3-800.webp differ
diff --git a/assets/img/proj11/levelset-1400.webp b/assets/img/proj11/levelset-1400.webp
new file mode 100644
index 00000000..d6b10711
Binary files /dev/null and b/assets/img/proj11/levelset-1400.webp differ
diff --git a/assets/img/proj11/levelset-480.webp b/assets/img/proj11/levelset-480.webp
new file mode 100644
index 00000000..02b507d4
Binary files /dev/null and b/assets/img/proj11/levelset-480.webp differ
diff --git a/assets/img/proj11/levelset-800.webp b/assets/img/proj11/levelset-800.webp
new file mode 100644
index 00000000..8d4e0d6a
Binary files /dev/null and b/assets/img/proj11/levelset-800.webp differ
diff --git a/assets/img/proj11/teaser-1400.webp b/assets/img/proj11/teaser-1400.webp
new file mode 100644
index 00000000..ee511e2e
Binary files /dev/null and b/assets/img/proj11/teaser-1400.webp differ
diff --git a/assets/img/proj11/teaser-480.webp b/assets/img/proj11/teaser-480.webp
new file mode 100644
index 00000000..effbf5ee
Binary files /dev/null and b/assets/img/proj11/teaser-480.webp differ
diff --git a/assets/img/proj11/teaser-800.webp b/assets/img/proj11/teaser-800.webp
new file mode 100644
index 00000000..1b8e26c4
Binary files /dev/null and b/assets/img/proj11/teaser-800.webp differ
diff --git a/assets/img/proj12/00-1400.webp b/assets/img/proj12/00-1400.webp
new file mode 100644
index 00000000..8c90b57b
Binary files /dev/null and b/assets/img/proj12/00-1400.webp differ
diff --git a/assets/img/proj12/00-480.webp b/assets/img/proj12/00-480.webp
new file mode 100644
index 00000000..01d802a2
Binary files /dev/null and b/assets/img/proj12/00-480.webp differ
diff --git a/assets/img/proj12/00-800.webp b/assets/img/proj12/00-800.webp
new file mode 100644
index 00000000..7cc7b88e
Binary files /dev/null and b/assets/img/proj12/00-800.webp differ
diff --git a/assets/img/proj12/01-1400.webp b/assets/img/proj12/01-1400.webp
new file mode 100644
index 00000000..7ca52261
Binary files /dev/null and b/assets/img/proj12/01-1400.webp differ
diff --git a/assets/img/proj12/01-480.webp b/assets/img/proj12/01-480.webp
new file mode 100644
index 00000000..6cbff9b4
Binary files /dev/null and b/assets/img/proj12/01-480.webp differ
diff --git a/assets/img/proj12/01-800.webp b/assets/img/proj12/01-800.webp
new file mode 100644
index 00000000..4021c02f
Binary files /dev/null and b/assets/img/proj12/01-800.webp differ
diff --git a/assets/img/proj12/1-1400.webp b/assets/img/proj12/1-1400.webp
new file mode 100644
index 00000000..ce341071
Binary files /dev/null and b/assets/img/proj12/1-1400.webp differ
diff --git a/assets/img/proj12/1-480.webp b/assets/img/proj12/1-480.webp
new file mode 100644
index 00000000..e40739d9
Binary files /dev/null and b/assets/img/proj12/1-480.webp differ
diff --git a/assets/img/proj12/1-800.webp b/assets/img/proj12/1-800.webp
new file mode 100644
index 00000000..7d9f784f
Binary files /dev/null and b/assets/img/proj12/1-800.webp differ
diff --git a/assets/img/proj12/3-1400.webp b/assets/img/proj12/3-1400.webp
new file mode 100644
index 00000000..dec216c7
Binary files /dev/null and b/assets/img/proj12/3-1400.webp differ
diff --git a/assets/img/proj12/3-480.webp b/assets/img/proj12/3-480.webp
new file mode 100644
index 00000000..f1f9695a
Binary files /dev/null and b/assets/img/proj12/3-480.webp differ
diff --git a/assets/img/proj12/3-800.webp b/assets/img/proj12/3-800.webp
new file mode 100644
index 00000000..9923ab82
Binary files /dev/null and b/assets/img/proj12/3-800.webp differ
diff --git a/assets/img/proj12/4-1400.webp b/assets/img/proj12/4-1400.webp
new file mode 100644
index 00000000..659e39b4
Binary files /dev/null and b/assets/img/proj12/4-1400.webp differ
diff --git a/assets/img/proj12/4-480.webp b/assets/img/proj12/4-480.webp
new file mode 100644
index 00000000..ff3e79b3
Binary files /dev/null and b/assets/img/proj12/4-480.webp differ
diff --git a/assets/img/proj12/4-800.webp b/assets/img/proj12/4-800.webp
new file mode 100644
index 00000000..8ddc44cf
Binary files /dev/null and b/assets/img/proj12/4-800.webp differ
diff --git a/assets/img/proj2/flower1-1400.webp b/assets/img/proj2/flower1-1400.webp
new file mode 100644
index 00000000..e3845bd7
Binary files /dev/null and b/assets/img/proj2/flower1-1400.webp differ
diff --git a/assets/img/proj2/flower1-480.webp b/assets/img/proj2/flower1-480.webp
new file mode 100644
index 00000000..4d3580d9
Binary files /dev/null and b/assets/img/proj2/flower1-480.webp differ
diff --git a/assets/img/proj2/flower1-800.webp b/assets/img/proj2/flower1-800.webp
new file mode 100644
index 00000000..84dff8e3
Binary files /dev/null and b/assets/img/proj2/flower1-800.webp differ
diff --git a/assets/img/proj2/fold1-1400.webp b/assets/img/proj2/fold1-1400.webp
new file mode 100644
index 00000000..ad4f143d
Binary files /dev/null and b/assets/img/proj2/fold1-1400.webp differ
diff --git a/assets/img/proj2/fold1-480.webp b/assets/img/proj2/fold1-480.webp
new file mode 100644
index 00000000..e7a88790
Binary files /dev/null and b/assets/img/proj2/fold1-480.webp differ
diff --git a/assets/img/proj2/fold1-800.webp b/assets/img/proj2/fold1-800.webp
new file mode 100644
index 00000000..a37a343e
Binary files /dev/null and b/assets/img/proj2/fold1-800.webp differ
diff --git a/assets/img/proj2/fold2_mesh-1400.webp b/assets/img/proj2/fold2_mesh-1400.webp
new file mode 100644
index 00000000..eb682373
Binary files /dev/null and b/assets/img/proj2/fold2_mesh-1400.webp differ
diff --git a/assets/img/proj2/fold2_mesh-480.webp b/assets/img/proj2/fold2_mesh-480.webp
new file mode 100644
index 00000000..6ccf6c3b
Binary files /dev/null and b/assets/img/proj2/fold2_mesh-480.webp differ
diff --git a/assets/img/proj2/fold2_mesh-800.webp b/assets/img/proj2/fold2_mesh-800.webp
new file mode 100644
index 00000000..a51ef5f5
Binary files /dev/null and b/assets/img/proj2/fold2_mesh-800.webp differ
diff --git a/assets/img/proj2/iso_rot_killing-1400.webp b/assets/img/proj2/iso_rot_killing-1400.webp
new file mode 100644
index 00000000..5195dd51
Binary files /dev/null and b/assets/img/proj2/iso_rot_killing-1400.webp differ
diff --git a/assets/img/proj2/iso_rot_killing-480.webp b/assets/img/proj2/iso_rot_killing-480.webp
new file mode 100644
index 00000000..841b0751
Binary files /dev/null and b/assets/img/proj2/iso_rot_killing-480.webp differ
diff --git a/assets/img/proj2/iso_rot_killing-800.webp b/assets/img/proj2/iso_rot_killing-800.webp
new file mode 100644
index 00000000..6f4355f6
Binary files /dev/null and b/assets/img/proj2/iso_rot_killing-800.webp differ
diff --git a/assets/img/proj2/stadium-1400.webp b/assets/img/proj2/stadium-1400.webp
new file mode 100644
index 00000000..79a66868
Binary files /dev/null and b/assets/img/proj2/stadium-1400.webp differ
diff --git a/assets/img/proj2/stadium-480.webp b/assets/img/proj2/stadium-480.webp
new file mode 100644
index 00000000..d9ffcd30
Binary files /dev/null and b/assets/img/proj2/stadium-480.webp differ
diff --git a/assets/img/proj2/stadium-800.webp b/assets/img/proj2/stadium-800.webp
new file mode 100644
index 00000000..859a42b9
Binary files /dev/null and b/assets/img/proj2/stadium-800.webp differ
diff --git a/assets/img/proj2/test_fold1-1400.webp b/assets/img/proj2/test_fold1-1400.webp
new file mode 100644
index 00000000..f489d5ef
Binary files /dev/null and b/assets/img/proj2/test_fold1-1400.webp differ
diff --git a/assets/img/proj2/test_fold1-480.webp b/assets/img/proj2/test_fold1-480.webp
new file mode 100644
index 00000000..bbbdca42
Binary files /dev/null and b/assets/img/proj2/test_fold1-480.webp differ
diff --git a/assets/img/proj2/test_fold1-800.webp b/assets/img/proj2/test_fold1-800.webp
new file mode 100644
index 00000000..28e75148
Binary files /dev/null and b/assets/img/proj2/test_fold1-800.webp differ
diff --git a/assets/img/proj2/test_fold2-1400.webp b/assets/img/proj2/test_fold2-1400.webp
new file mode 100644
index 00000000..a6722c13
Binary files /dev/null and b/assets/img/proj2/test_fold2-1400.webp differ
diff --git a/assets/img/proj2/test_fold2-480.webp b/assets/img/proj2/test_fold2-480.webp
new file mode 100644
index 00000000..8064495a
Binary files /dev/null and b/assets/img/proj2/test_fold2-480.webp differ
diff --git a/assets/img/proj2/test_fold2-800.webp b/assets/img/proj2/test_fold2-800.webp
new file mode 100644
index 00000000..24622705
Binary files /dev/null and b/assets/img/proj2/test_fold2-800.webp differ
diff --git a/assets/img/proj3/hexi_roof3-1400.webp b/assets/img/proj3/hexi_roof3-1400.webp
new file mode 100644
index 00000000..c631867d
Binary files /dev/null and b/assets/img/proj3/hexi_roof3-1400.webp differ
diff --git a/assets/img/proj3/hexi_roof3-480.webp b/assets/img/proj3/hexi_roof3-480.webp
new file mode 100644
index 00000000..6114ab76
Binary files /dev/null and b/assets/img/proj3/hexi_roof3-480.webp differ
diff --git a/assets/img/proj3/hexi_roof3-800.webp b/assets/img/proj3/hexi_roof3-800.webp
new file mode 100644
index 00000000..7491f5a0
Binary files /dev/null and b/assets/img/proj3/hexi_roof3-800.webp differ
diff --git a/assets/img/proj3/hexi_roof4-1400.webp b/assets/img/proj3/hexi_roof4-1400.webp
new file mode 100644
index 00000000..d9303e20
Binary files /dev/null and b/assets/img/proj3/hexi_roof4-1400.webp differ
diff --git a/assets/img/proj3/hexi_roof4-480.webp b/assets/img/proj3/hexi_roof4-480.webp
new file mode 100644
index 00000000..641d93c8
Binary files /dev/null and b/assets/img/proj3/hexi_roof4-480.webp differ
diff --git a/assets/img/proj3/hexi_roof4-800.webp b/assets/img/proj3/hexi_roof4-800.webp
new file mode 100644
index 00000000..40c729c9
Binary files /dev/null and b/assets/img/proj3/hexi_roof4-800.webp differ
diff --git a/assets/img/proj3/knet_close-1400.webp b/assets/img/proj3/knet_close-1400.webp
new file mode 100644
index 00000000..8bed1ef5
Binary files /dev/null and b/assets/img/proj3/knet_close-1400.webp differ
diff --git a/assets/img/proj3/knet_close-480.webp b/assets/img/proj3/knet_close-480.webp
new file mode 100644
index 00000000..e264fb53
Binary files /dev/null and b/assets/img/proj3/knet_close-480.webp differ
diff --git a/assets/img/proj3/knet_close-800.webp b/assets/img/proj3/knet_close-800.webp
new file mode 100644
index 00000000..27080c2a
Binary files /dev/null and b/assets/img/proj3/knet_close-800.webp differ
diff --git a/assets/img/proj3/knet_expand-1400.webp b/assets/img/proj3/knet_expand-1400.webp
new file mode 100644
index 00000000..122c6b9b
Binary files /dev/null and b/assets/img/proj3/knet_expand-1400.webp differ
diff --git a/assets/img/proj3/knet_expand-480.webp b/assets/img/proj3/knet_expand-480.webp
new file mode 100644
index 00000000..fe3527bf
Binary files /dev/null and b/assets/img/proj3/knet_expand-480.webp differ
diff --git a/assets/img/proj3/knet_expand-800.webp b/assets/img/proj3/knet_expand-800.webp
new file mode 100644
index 00000000..3f822264
Binary files /dev/null and b/assets/img/proj3/knet_expand-800.webp differ
diff --git a/assets/img/proj3/roof10-1400.webp b/assets/img/proj3/roof10-1400.webp
new file mode 100644
index 00000000..7189ae50
Binary files /dev/null and b/assets/img/proj3/roof10-1400.webp differ
diff --git a/assets/img/proj3/roof10-480.webp b/assets/img/proj3/roof10-480.webp
new file mode 100644
index 00000000..9200acaf
Binary files /dev/null and b/assets/img/proj3/roof10-480.webp differ
diff --git a/assets/img/proj3/roof10-800.webp b/assets/img/proj3/roof10-800.webp
new file mode 100644
index 00000000..b07ff282
Binary files /dev/null and b/assets/img/proj3/roof10-800.webp differ
diff --git a/assets/img/proj3/snet_try_close-1400.webp b/assets/img/proj3/snet_try_close-1400.webp
new file mode 100644
index 00000000..de9bb8a1
Binary files /dev/null and b/assets/img/proj3/snet_try_close-1400.webp differ
diff --git a/assets/img/proj3/snet_try_close-480.webp b/assets/img/proj3/snet_try_close-480.webp
new file mode 100644
index 00000000..08211392
Binary files /dev/null and b/assets/img/proj3/snet_try_close-480.webp differ
diff --git a/assets/img/proj3/snet_try_close-800.webp b/assets/img/proj3/snet_try_close-800.webp
new file mode 100644
index 00000000..99920077
Binary files /dev/null and b/assets/img/proj3/snet_try_close-800.webp differ
diff --git a/assets/img/proj3/snet_try_expand-1400.webp b/assets/img/proj3/snet_try_expand-1400.webp
new file mode 100644
index 00000000..ce50777f
Binary files /dev/null and b/assets/img/proj3/snet_try_expand-1400.webp differ
diff --git a/assets/img/proj3/snet_try_expand-480.webp b/assets/img/proj3/snet_try_expand-480.webp
new file mode 100644
index 00000000..d6a2e5d7
Binary files /dev/null and b/assets/img/proj3/snet_try_expand-480.webp differ
diff --git a/assets/img/proj3/snet_try_expand-800.webp b/assets/img/proj3/snet_try_expand-800.webp
new file mode 100644
index 00000000..a99faa99
Binary files /dev/null and b/assets/img/proj3/snet_try_expand-800.webp differ
diff --git a/assets/img/proj3/unduloid_close-1400.webp b/assets/img/proj3/unduloid_close-1400.webp
new file mode 100644
index 00000000..20b88e59
Binary files /dev/null and b/assets/img/proj3/unduloid_close-1400.webp differ
diff --git a/assets/img/proj3/unduloid_close-480.webp b/assets/img/proj3/unduloid_close-480.webp
new file mode 100644
index 00000000..310aaf52
Binary files /dev/null and b/assets/img/proj3/unduloid_close-480.webp differ
diff --git a/assets/img/proj3/unduloid_close-800.webp b/assets/img/proj3/unduloid_close-800.webp
new file mode 100644
index 00000000..6a52918b
Binary files /dev/null and b/assets/img/proj3/unduloid_close-800.webp differ
diff --git a/assets/img/proj3/unduloid_expand-1400.webp b/assets/img/proj3/unduloid_expand-1400.webp
new file mode 100644
index 00000000..de8db1c8
Binary files /dev/null and b/assets/img/proj3/unduloid_expand-1400.webp differ
diff --git a/assets/img/proj3/unduloid_expand-480.webp b/assets/img/proj3/unduloid_expand-480.webp
new file mode 100644
index 00000000..c2e6bd1e
Binary files /dev/null and b/assets/img/proj3/unduloid_expand-480.webp differ
diff --git a/assets/img/proj3/unduloid_expand-800.webp b/assets/img/proj3/unduloid_expand-800.webp
new file mode 100644
index 00000000..b137ca5e
Binary files /dev/null and b/assets/img/proj3/unduloid_expand-800.webp differ
diff --git a/assets/img/proj4/snet_fig16-1400.webp b/assets/img/proj4/snet_fig16-1400.webp
new file mode 100644
index 00000000..45eb011f
Binary files /dev/null and b/assets/img/proj4/snet_fig16-1400.webp differ
diff --git a/assets/img/proj4/snet_fig16-480.webp b/assets/img/proj4/snet_fig16-480.webp
new file mode 100644
index 00000000..13a807f5
Binary files /dev/null and b/assets/img/proj4/snet_fig16-480.webp differ
diff --git a/assets/img/proj4/snet_fig16-800.webp b/assets/img/proj4/snet_fig16-800.webp
new file mode 100644
index 00000000..4bc0d237
Binary files /dev/null and b/assets/img/proj4/snet_fig16-800.webp differ
diff --git a/assets/img/proj4/snet_fig19-1400.webp b/assets/img/proj4/snet_fig19-1400.webp
new file mode 100644
index 00000000..35c21629
Binary files /dev/null and b/assets/img/proj4/snet_fig19-1400.webp differ
diff --git a/assets/img/proj4/snet_fig19-480.webp b/assets/img/proj4/snet_fig19-480.webp
new file mode 100644
index 00000000..ecaec33d
Binary files /dev/null and b/assets/img/proj4/snet_fig19-480.webp differ
diff --git a/assets/img/proj4/snet_fig19-800.webp b/assets/img/proj4/snet_fig19-800.webp
new file mode 100644
index 00000000..42baffae
Binary files /dev/null and b/assets/img/proj4/snet_fig19-800.webp differ
diff --git a/assets/img/proj5/revol_samples-1400.webp b/assets/img/proj5/revol_samples-1400.webp
new file mode 100644
index 00000000..a0d176f1
Binary files /dev/null and b/assets/img/proj5/revol_samples-1400.webp differ
diff --git a/assets/img/proj5/revol_samples-480.webp b/assets/img/proj5/revol_samples-480.webp
new file mode 100644
index 00000000..942a2b2d
Binary files /dev/null and b/assets/img/proj5/revol_samples-480.webp differ
diff --git a/assets/img/proj5/revol_samples-800.webp b/assets/img/proj5/revol_samples-800.webp
new file mode 100644
index 00000000..070877d8
Binary files /dev/null and b/assets/img/proj5/revol_samples-800.webp differ
diff --git a/assets/img/proj5/slide1-1400.webp b/assets/img/proj5/slide1-1400.webp
new file mode 100644
index 00000000..075ef887
Binary files /dev/null and b/assets/img/proj5/slide1-1400.webp differ
diff --git a/assets/img/proj5/slide1-480.webp b/assets/img/proj5/slide1-480.webp
new file mode 100644
index 00000000..d389f616
Binary files /dev/null and b/assets/img/proj5/slide1-480.webp differ
diff --git a/assets/img/proj5/slide1-800.webp b/assets/img/proj5/slide1-800.webp
new file mode 100644
index 00000000..04f8f3f4
Binary files /dev/null and b/assets/img/proj5/slide1-800.webp differ
diff --git a/assets/img/proj5/slide2-1400.webp b/assets/img/proj5/slide2-1400.webp
new file mode 100644
index 00000000..157fc2c2
Binary files /dev/null and b/assets/img/proj5/slide2-1400.webp differ
diff --git a/assets/img/proj5/slide2-480.webp b/assets/img/proj5/slide2-480.webp
new file mode 100644
index 00000000..ecde3fd0
Binary files /dev/null and b/assets/img/proj5/slide2-480.webp differ
diff --git a/assets/img/proj5/slide2-800.webp b/assets/img/proj5/slide2-800.webp
new file mode 100644
index 00000000..1d19801a
Binary files /dev/null and b/assets/img/proj5/slide2-800.webp differ
diff --git a/assets/img/proj5/slide3-1400.webp b/assets/img/proj5/slide3-1400.webp
new file mode 100644
index 00000000..e641d8dc
Binary files /dev/null and b/assets/img/proj5/slide3-1400.webp differ
diff --git a/assets/img/proj5/slide3-480.webp b/assets/img/proj5/slide3-480.webp
new file mode 100644
index 00000000..fab5fa8f
Binary files /dev/null and b/assets/img/proj5/slide3-480.webp differ
diff --git a/assets/img/proj5/slide3-800.webp b/assets/img/proj5/slide3-800.webp
new file mode 100644
index 00000000..ad37fbf7
Binary files /dev/null and b/assets/img/proj5/slide3-800.webp differ
diff --git a/assets/img/proj5/slide4-1400.webp b/assets/img/proj5/slide4-1400.webp
new file mode 100644
index 00000000..defd4aca
Binary files /dev/null and b/assets/img/proj5/slide4-1400.webp differ
diff --git a/assets/img/proj5/slide4-480.webp b/assets/img/proj5/slide4-480.webp
new file mode 100644
index 00000000..b1f99351
Binary files /dev/null and b/assets/img/proj5/slide4-480.webp differ
diff --git a/assets/img/proj5/slide4-800.webp b/assets/img/proj5/slide4-800.webp
new file mode 100644
index 00000000..8682fdb8
Binary files /dev/null and b/assets/img/proj5/slide4-800.webp differ
diff --git a/assets/img/proj5/slide5-1400.webp b/assets/img/proj5/slide5-1400.webp
new file mode 100644
index 00000000..468be796
Binary files /dev/null and b/assets/img/proj5/slide5-1400.webp differ
diff --git a/assets/img/proj5/slide5-480.webp b/assets/img/proj5/slide5-480.webp
new file mode 100644
index 00000000..34a86d52
Binary files /dev/null and b/assets/img/proj5/slide5-480.webp differ
diff --git a/assets/img/proj5/slide5-800.webp b/assets/img/proj5/slide5-800.webp
new file mode 100644
index 00000000..941a483b
Binary files /dev/null and b/assets/img/proj5/slide5-800.webp differ
diff --git a/assets/img/proj6/app1-1400.webp b/assets/img/proj6/app1-1400.webp
new file mode 100644
index 00000000..2e08a083
Binary files /dev/null and b/assets/img/proj6/app1-1400.webp differ
diff --git a/assets/img/proj6/app1-480.webp b/assets/img/proj6/app1-480.webp
new file mode 100644
index 00000000..54b8b40b
Binary files /dev/null and b/assets/img/proj6/app1-480.webp differ
diff --git a/assets/img/proj6/app1-800.webp b/assets/img/proj6/app1-800.webp
new file mode 100644
index 00000000..6ef08587
Binary files /dev/null and b/assets/img/proj6/app1-800.webp differ
diff --git a/assets/img/proj6/app2-1400.webp b/assets/img/proj6/app2-1400.webp
new file mode 100644
index 00000000..b5d2efe9
Binary files /dev/null and b/assets/img/proj6/app2-1400.webp differ
diff --git a/assets/img/proj6/app2-480.webp b/assets/img/proj6/app2-480.webp
new file mode 100644
index 00000000..6e02f2ea
Binary files /dev/null and b/assets/img/proj6/app2-480.webp differ
diff --git a/assets/img/proj6/app2-800.webp b/assets/img/proj6/app2-800.webp
new file mode 100644
index 00000000..221b4327
Binary files /dev/null and b/assets/img/proj6/app2-800.webp differ
diff --git a/assets/img/proj6/app3-1400.webp b/assets/img/proj6/app3-1400.webp
new file mode 100644
index 00000000..4675e57a
Binary files /dev/null and b/assets/img/proj6/app3-1400.webp differ
diff --git a/assets/img/proj6/app3-480.webp b/assets/img/proj6/app3-480.webp
new file mode 100644
index 00000000..3c8ffa2d
Binary files /dev/null and b/assets/img/proj6/app3-480.webp differ
diff --git a/assets/img/proj6/app3-800.webp b/assets/img/proj6/app3-800.webp
new file mode 100644
index 00000000..90960020
Binary files /dev/null and b/assets/img/proj6/app3-800.webp differ
diff --git a/assets/img/proj6/hops-1400.webp b/assets/img/proj6/hops-1400.webp
new file mode 100644
index 00000000..ba473a3f
Binary files /dev/null and b/assets/img/proj6/hops-1400.webp differ
diff --git a/assets/img/proj6/hops-480.webp b/assets/img/proj6/hops-480.webp
new file mode 100644
index 00000000..7298ebca
Binary files /dev/null and b/assets/img/proj6/hops-480.webp differ
diff --git a/assets/img/proj6/hops-800.webp b/assets/img/proj6/hops-800.webp
new file mode 100644
index 00000000..19ca3817
Binary files /dev/null and b/assets/img/proj6/hops-800.webp differ
diff --git a/assets/img/proj6/singular-1400.webp b/assets/img/proj6/singular-1400.webp
new file mode 100644
index 00000000..a5a06688
Binary files /dev/null and b/assets/img/proj6/singular-1400.webp differ
diff --git a/assets/img/proj6/singular-480.webp b/assets/img/proj6/singular-480.webp
new file mode 100644
index 00000000..0ca53dce
Binary files /dev/null and b/assets/img/proj6/singular-480.webp differ
diff --git a/assets/img/proj6/singular-800.webp b/assets/img/proj6/singular-800.webp
new file mode 100644
index 00000000..5b05326f
Binary files /dev/null and b/assets/img/proj6/singular-800.webp differ
diff --git a/assets/img/proj6/webs-1400.webp b/assets/img/proj6/webs-1400.webp
new file mode 100644
index 00000000..823b1577
Binary files /dev/null and b/assets/img/proj6/webs-1400.webp differ
diff --git a/assets/img/proj6/webs-480.webp b/assets/img/proj6/webs-480.webp
new file mode 100644
index 00000000..2b548156
Binary files /dev/null and b/assets/img/proj6/webs-480.webp differ
diff --git a/assets/img/proj6/webs-800.webp b/assets/img/proj6/webs-800.webp
new file mode 100644
index 00000000..6f34a5d7
Binary files /dev/null and b/assets/img/proj6/webs-800.webp differ
diff --git a/assets/img/proj6/xuerongxing0-1400.webp b/assets/img/proj6/xuerongxing0-1400.webp
new file mode 100644
index 00000000..d2ea0cd0
Binary files /dev/null and b/assets/img/proj6/xuerongxing0-1400.webp differ
diff --git a/assets/img/proj6/xuerongxing0-480.webp b/assets/img/proj6/xuerongxing0-480.webp
new file mode 100644
index 00000000..efbcdf27
Binary files /dev/null and b/assets/img/proj6/xuerongxing0-480.webp differ
diff --git a/assets/img/proj6/xuerongxing0-800.webp b/assets/img/proj6/xuerongxing0-800.webp
new file mode 100644
index 00000000..e686f905
Binary files /dev/null and b/assets/img/proj6/xuerongxing0-800.webp differ
diff --git a/assets/img/proj6/xuerongxing1-1400.webp b/assets/img/proj6/xuerongxing1-1400.webp
new file mode 100644
index 00000000..cd9ec93b
Binary files /dev/null and b/assets/img/proj6/xuerongxing1-1400.webp differ
diff --git a/assets/img/proj6/xuerongxing1-480.webp b/assets/img/proj6/xuerongxing1-480.webp
new file mode 100644
index 00000000..c4b14b31
Binary files /dev/null and b/assets/img/proj6/xuerongxing1-480.webp differ
diff --git a/assets/img/proj6/xuerongxing1-800.webp b/assets/img/proj6/xuerongxing1-800.webp
new file mode 100644
index 00000000..a983e86d
Binary files /dev/null and b/assets/img/proj6/xuerongxing1-800.webp differ
diff --git a/assets/img/proj6/xuerongxing2-1400.webp b/assets/img/proj6/xuerongxing2-1400.webp
new file mode 100644
index 00000000..a8c257ba
Binary files /dev/null and b/assets/img/proj6/xuerongxing2-1400.webp differ
diff --git a/assets/img/proj6/xuerongxing2-480.webp b/assets/img/proj6/xuerongxing2-480.webp
new file mode 100644
index 00000000..817dbe28
Binary files /dev/null and b/assets/img/proj6/xuerongxing2-480.webp differ
diff --git a/assets/img/proj6/xuerongxing2-800.webp b/assets/img/proj6/xuerongxing2-800.webp
new file mode 100644
index 00000000..4d51590b
Binary files /dev/null and b/assets/img/proj6/xuerongxing2-800.webp differ
diff --git a/assets/img/proj6/xuerongxing3-1400.webp b/assets/img/proj6/xuerongxing3-1400.webp
new file mode 100644
index 00000000..bb8cd3fc
Binary files /dev/null and b/assets/img/proj6/xuerongxing3-1400.webp differ
diff --git a/assets/img/proj6/xuerongxing3-480.webp b/assets/img/proj6/xuerongxing3-480.webp
new file mode 100644
index 00000000..61a2af4e
Binary files /dev/null and b/assets/img/proj6/xuerongxing3-480.webp differ
diff --git a/assets/img/proj6/xuerongxing3-800.webp b/assets/img/proj6/xuerongxing3-800.webp
new file mode 100644
index 00000000..77626317
Binary files /dev/null and b/assets/img/proj6/xuerongxing3-800.webp differ
diff --git a/assets/img/proj7/12-1400.webp b/assets/img/proj7/12-1400.webp
new file mode 100644
index 00000000..b1c6ca03
Binary files /dev/null and b/assets/img/proj7/12-1400.webp differ
diff --git a/assets/img/proj7/12-480.webp b/assets/img/proj7/12-480.webp
new file mode 100644
index 00000000..4af8c26c
Binary files /dev/null and b/assets/img/proj7/12-480.webp differ
diff --git a/assets/img/proj7/12-800.webp b/assets/img/proj7/12-800.webp
new file mode 100644
index 00000000..a6edc644
Binary files /dev/null and b/assets/img/proj7/12-800.webp differ
diff --git a/assets/img/proj7/15-1400.webp b/assets/img/proj7/15-1400.webp
new file mode 100644
index 00000000..05fd6a85
Binary files /dev/null and b/assets/img/proj7/15-1400.webp differ
diff --git a/assets/img/proj7/15-480.webp b/assets/img/proj7/15-480.webp
new file mode 100644
index 00000000..55b8892f
Binary files /dev/null and b/assets/img/proj7/15-480.webp differ
diff --git a/assets/img/proj7/15-800.webp b/assets/img/proj7/15-800.webp
new file mode 100644
index 00000000..bd1728e1
Binary files /dev/null and b/assets/img/proj7/15-800.webp differ
diff --git a/assets/img/proj7/2PPQ_1-1400.webp b/assets/img/proj7/2PPQ_1-1400.webp
new file mode 100644
index 00000000..2ad58b72
Binary files /dev/null and b/assets/img/proj7/2PPQ_1-1400.webp differ
diff --git a/assets/img/proj7/2PPQ_1-480.webp b/assets/img/proj7/2PPQ_1-480.webp
new file mode 100644
index 00000000..ff944793
Binary files /dev/null and b/assets/img/proj7/2PPQ_1-480.webp differ
diff --git a/assets/img/proj7/2PPQ_1-800.webp b/assets/img/proj7/2PPQ_1-800.webp
new file mode 100644
index 00000000..17aa9a8e
Binary files /dev/null and b/assets/img/proj7/2PPQ_1-800.webp differ
diff --git a/assets/img/proj7/2PPQ_8-1400.webp b/assets/img/proj7/2PPQ_8-1400.webp
new file mode 100644
index 00000000..d83a4788
Binary files /dev/null and b/assets/img/proj7/2PPQ_8-1400.webp differ
diff --git a/assets/img/proj7/2PPQ_8-480.webp b/assets/img/proj7/2PPQ_8-480.webp
new file mode 100644
index 00000000..a5d9a8b4
Binary files /dev/null and b/assets/img/proj7/2PPQ_8-480.webp differ
diff --git a/assets/img/proj7/2PPQ_8-800.webp b/assets/img/proj7/2PPQ_8-800.webp
new file mode 100644
index 00000000..90088392
Binary files /dev/null and b/assets/img/proj7/2PPQ_8-800.webp differ
diff --git a/assets/img/proj7/9-1400.webp b/assets/img/proj7/9-1400.webp
new file mode 100644
index 00000000..3ce05cad
Binary files /dev/null and b/assets/img/proj7/9-1400.webp differ
diff --git a/assets/img/proj7/9-480.webp b/assets/img/proj7/9-480.webp
new file mode 100644
index 00000000..64136fe4
Binary files /dev/null and b/assets/img/proj7/9-480.webp differ
diff --git a/assets/img/proj7/9-800.webp b/assets/img/proj7/9-800.webp
new file mode 100644
index 00000000..00ecaa14
Binary files /dev/null and b/assets/img/proj7/9-800.webp differ
diff --git a/assets/img/proj7/PPQ1.471-1400.webp b/assets/img/proj7/PPQ1.471-1400.webp
new file mode 100644
index 00000000..67d5af69
Binary files /dev/null and b/assets/img/proj7/PPQ1.471-1400.webp differ
diff --git a/assets/img/proj7/PPQ1.471-480.webp b/assets/img/proj7/PPQ1.471-480.webp
new file mode 100644
index 00000000..aabf7dc7
Binary files /dev/null and b/assets/img/proj7/PPQ1.471-480.webp differ
diff --git a/assets/img/proj7/PPQ1.471-800.webp b/assets/img/proj7/PPQ1.471-800.webp
new file mode 100644
index 00000000..0d9e5d22
Binary files /dev/null and b/assets/img/proj7/PPQ1.471-800.webp differ
diff --git a/assets/img/proj7/PPQ2.472-1400.webp b/assets/img/proj7/PPQ2.472-1400.webp
new file mode 100644
index 00000000..9ee122a6
Binary files /dev/null and b/assets/img/proj7/PPQ2.472-1400.webp differ
diff --git a/assets/img/proj7/PPQ2.472-480.webp b/assets/img/proj7/PPQ2.472-480.webp
new file mode 100644
index 00000000..1392373a
Binary files /dev/null and b/assets/img/proj7/PPQ2.472-480.webp differ
diff --git a/assets/img/proj7/PPQ2.472-800.webp b/assets/img/proj7/PPQ2.472-800.webp
new file mode 100644
index 00000000..78ccecc6
Binary files /dev/null and b/assets/img/proj7/PPQ2.472-800.webp differ
diff --git a/assets/img/proj7/chadstone-1400.webp b/assets/img/proj7/chadstone-1400.webp
new file mode 100644
index 00000000..815ec2d5
Binary files /dev/null and b/assets/img/proj7/chadstone-1400.webp differ
diff --git a/assets/img/proj7/chadstone-480.webp b/assets/img/proj7/chadstone-480.webp
new file mode 100644
index 00000000..c6d1a6f5
Binary files /dev/null and b/assets/img/proj7/chadstone-480.webp differ
diff --git a/assets/img/proj7/chadstone-800.webp b/assets/img/proj7/chadstone-800.webp
new file mode 100644
index 00000000..6a3d0a5b
Binary files /dev/null and b/assets/img/proj7/chadstone-800.webp differ
diff --git a/assets/img/proj7/every5_PPQ1.480-1400.webp b/assets/img/proj7/every5_PPQ1.480-1400.webp
new file mode 100644
index 00000000..22b5b211
Binary files /dev/null and b/assets/img/proj7/every5_PPQ1.480-1400.webp differ
diff --git a/assets/img/proj7/every5_PPQ1.480-480.webp b/assets/img/proj7/every5_PPQ1.480-480.webp
new file mode 100644
index 00000000..1adc37e9
Binary files /dev/null and b/assets/img/proj7/every5_PPQ1.480-480.webp differ
diff --git a/assets/img/proj7/every5_PPQ1.480-800.webp b/assets/img/proj7/every5_PPQ1.480-800.webp
new file mode 100644
index 00000000..b2864c2b
Binary files /dev/null and b/assets/img/proj7/every5_PPQ1.480-800.webp differ
diff --git a/assets/img/proj7/every5_PPQ1.481-1400.webp b/assets/img/proj7/every5_PPQ1.481-1400.webp
new file mode 100644
index 00000000..f06e7901
Binary files /dev/null and b/assets/img/proj7/every5_PPQ1.481-1400.webp differ
diff --git a/assets/img/proj7/every5_PPQ1.481-480.webp b/assets/img/proj7/every5_PPQ1.481-480.webp
new file mode 100644
index 00000000..6361452c
Binary files /dev/null and b/assets/img/proj7/every5_PPQ1.481-480.webp differ
diff --git a/assets/img/proj7/every5_PPQ1.481-800.webp b/assets/img/proj7/every5_PPQ1.481-800.webp
new file mode 100644
index 00000000..90e50f91
Binary files /dev/null and b/assets/img/proj7/every5_PPQ1.481-800.webp differ
diff --git a/assets/img/proj7/every5_PPQ1.483-1400.webp b/assets/img/proj7/every5_PPQ1.483-1400.webp
new file mode 100644
index 00000000..329466fe
Binary files /dev/null and b/assets/img/proj7/every5_PPQ1.483-1400.webp differ
diff --git a/assets/img/proj7/every5_PPQ1.483-480.webp b/assets/img/proj7/every5_PPQ1.483-480.webp
new file mode 100644
index 00000000..1592cce9
Binary files /dev/null and b/assets/img/proj7/every5_PPQ1.483-480.webp differ
diff --git a/assets/img/proj7/every5_PPQ1.483-800.webp b/assets/img/proj7/every5_PPQ1.483-800.webp
new file mode 100644
index 00000000..8a46cd9e
Binary files /dev/null and b/assets/img/proj7/every5_PPQ1.483-800.webp differ
diff --git a/assets/img/proj7/harbin-1400.webp b/assets/img/proj7/harbin-1400.webp
new file mode 100644
index 00000000..fc749786
Binary files /dev/null and b/assets/img/proj7/harbin-1400.webp differ
diff --git a/assets/img/proj7/harbin-480.webp b/assets/img/proj7/harbin-480.webp
new file mode 100644
index 00000000..c4756213
Binary files /dev/null and b/assets/img/proj7/harbin-480.webp differ
diff --git a/assets/img/proj7/harbin-800.webp b/assets/img/proj7/harbin-800.webp
new file mode 100644
index 00000000..fc749786
Binary files /dev/null and b/assets/img/proj7/harbin-800.webp differ
diff --git a/assets/img/proj7/harbin.440-1400.webp b/assets/img/proj7/harbin.440-1400.webp
new file mode 100644
index 00000000..a2f07fa7
Binary files /dev/null and b/assets/img/proj7/harbin.440-1400.webp differ
diff --git a/assets/img/proj7/harbin.440-480.webp b/assets/img/proj7/harbin.440-480.webp
new file mode 100644
index 00000000..8baf2784
Binary files /dev/null and b/assets/img/proj7/harbin.440-480.webp differ
diff --git a/assets/img/proj7/harbin.440-800.webp b/assets/img/proj7/harbin.440-800.webp
new file mode 100644
index 00000000..22152965
Binary files /dev/null and b/assets/img/proj7/harbin.440-800.webp differ
diff --git a/assets/img/proj7/harbin.441-1400.webp b/assets/img/proj7/harbin.441-1400.webp
new file mode 100644
index 00000000..2f3f95a6
Binary files /dev/null and b/assets/img/proj7/harbin.441-1400.webp differ
diff --git a/assets/img/proj7/harbin.441-480.webp b/assets/img/proj7/harbin.441-480.webp
new file mode 100644
index 00000000..47beefb4
Binary files /dev/null and b/assets/img/proj7/harbin.441-480.webp differ
diff --git a/assets/img/proj7/harbin.441-800.webp b/assets/img/proj7/harbin.441-800.webp
new file mode 100644
index 00000000..b618e0f3
Binary files /dev/null and b/assets/img/proj7/harbin.441-800.webp differ
diff --git a/assets/img/proj7/jining-1400.webp b/assets/img/proj7/jining-1400.webp
new file mode 100644
index 00000000..2afe8a8a
Binary files /dev/null and b/assets/img/proj7/jining-1400.webp differ
diff --git a/assets/img/proj7/jining-480.webp b/assets/img/proj7/jining-480.webp
new file mode 100644
index 00000000..f58d3530
Binary files /dev/null and b/assets/img/proj7/jining-480.webp differ
diff --git a/assets/img/proj7/jining-800.webp b/assets/img/proj7/jining-800.webp
new file mode 100644
index 00000000..2afe8a8a
Binary files /dev/null and b/assets/img/proj7/jining-800.webp differ
diff --git a/assets/img/proj7/meixihu-1400.webp b/assets/img/proj7/meixihu-1400.webp
new file mode 100644
index 00000000..3140c7d6
Binary files /dev/null and b/assets/img/proj7/meixihu-1400.webp differ
diff --git a/assets/img/proj7/meixihu-480.webp b/assets/img/proj7/meixihu-480.webp
new file mode 100644
index 00000000..d6f292e1
Binary files /dev/null and b/assets/img/proj7/meixihu-480.webp differ
diff --git a/assets/img/proj7/meixihu-800.webp b/assets/img/proj7/meixihu-800.webp
new file mode 100644
index 00000000..3140c7d6
Binary files /dev/null and b/assets/img/proj7/meixihu-800.webp differ
diff --git a/assets/img/proj7/meixihu.444-1400.webp b/assets/img/proj7/meixihu.444-1400.webp
new file mode 100644
index 00000000..65857cb4
Binary files /dev/null and b/assets/img/proj7/meixihu.444-1400.webp differ
diff --git a/assets/img/proj7/meixihu.444-480.webp b/assets/img/proj7/meixihu.444-480.webp
new file mode 100644
index 00000000..0b3627e3
Binary files /dev/null and b/assets/img/proj7/meixihu.444-480.webp differ
diff --git a/assets/img/proj7/meixihu.444-800.webp b/assets/img/proj7/meixihu.444-800.webp
new file mode 100644
index 00000000..42a84d2c
Binary files /dev/null and b/assets/img/proj7/meixihu.444-800.webp differ
diff --git a/assets/img/proj7/meixihu.450-1400.webp b/assets/img/proj7/meixihu.450-1400.webp
new file mode 100644
index 00000000..a88565e9
Binary files /dev/null and b/assets/img/proj7/meixihu.450-1400.webp differ
diff --git a/assets/img/proj7/meixihu.450-480.webp b/assets/img/proj7/meixihu.450-480.webp
new file mode 100644
index 00000000..9ec859ba
Binary files /dev/null and b/assets/img/proj7/meixihu.450-480.webp differ
diff --git a/assets/img/proj7/meixihu.450-800.webp b/assets/img/proj7/meixihu.450-800.webp
new file mode 100644
index 00000000..8730066b
Binary files /dev/null and b/assets/img/proj7/meixihu.450-800.webp differ
diff --git a/assets/img/proj8/AG_vault-1400.webp b/assets/img/proj8/AG_vault-1400.webp
new file mode 100644
index 00000000..9cacf4d9
Binary files /dev/null and b/assets/img/proj8/AG_vault-1400.webp differ
diff --git a/assets/img/proj8/AG_vault-480.webp b/assets/img/proj8/AG_vault-480.webp
new file mode 100644
index 00000000..2506cd22
Binary files /dev/null and b/assets/img/proj8/AG_vault-480.webp differ
diff --git a/assets/img/proj8/AG_vault-800.webp b/assets/img/proj8/AG_vault-800.webp
new file mode 100644
index 00000000..142aa17a
Binary files /dev/null and b/assets/img/proj8/AG_vault-800.webp differ
diff --git a/assets/img/proj8/Eike_AAG_shell-1400.webp b/assets/img/proj8/Eike_AAG_shell-1400.webp
new file mode 100644
index 00000000..86e312b3
Binary files /dev/null and b/assets/img/proj8/Eike_AAG_shell-1400.webp differ
diff --git a/assets/img/proj8/Eike_AAG_shell-480.webp b/assets/img/proj8/Eike_AAG_shell-480.webp
new file mode 100644
index 00000000..97229154
Binary files /dev/null and b/assets/img/proj8/Eike_AAG_shell-480.webp differ
diff --git a/assets/img/proj8/Eike_AAG_shell-800.webp b/assets/img/proj8/Eike_AAG_shell-800.webp
new file mode 100644
index 00000000..ffd74bd8
Binary files /dev/null and b/assets/img/proj8/Eike_AAG_shell-800.webp differ
diff --git a/assets/img/proj8/constraints-1400.webp b/assets/img/proj8/constraints-1400.webp
new file mode 100644
index 00000000..b356057e
Binary files /dev/null and b/assets/img/proj8/constraints-1400.webp differ
diff --git a/assets/img/proj8/constraints-480.webp b/assets/img/proj8/constraints-480.webp
new file mode 100644
index 00000000..c2a092a1
Binary files /dev/null and b/assets/img/proj8/constraints-480.webp differ
diff --git a/assets/img/proj8/constraints-800.webp b/assets/img/proj8/constraints-800.webp
new file mode 100644
index 00000000..78a53f5a
Binary files /dev/null and b/assets/img/proj8/constraints-800.webp differ
diff --git a/assets/img/proj8/file-1400.webp b/assets/img/proj8/file-1400.webp
new file mode 100644
index 00000000..f6582797
Binary files /dev/null and b/assets/img/proj8/file-1400.webp differ
diff --git a/assets/img/proj8/file-480.webp b/assets/img/proj8/file-480.webp
new file mode 100644
index 00000000..a0d25704
Binary files /dev/null and b/assets/img/proj8/file-480.webp differ
diff --git a/assets/img/proj8/file-800.webp b/assets/img/proj8/file-800.webp
new file mode 100644
index 00000000..a4d5b9e9
Binary files /dev/null and b/assets/img/proj8/file-800.webp differ
diff --git a/assets/img/proj9/dome-1400.webp b/assets/img/proj9/dome-1400.webp
new file mode 100644
index 00000000..6189bced
Binary files /dev/null and b/assets/img/proj9/dome-1400.webp differ
diff --git a/assets/img/proj9/dome-480.webp b/assets/img/proj9/dome-480.webp
new file mode 100644
index 00000000..ed27367f
Binary files /dev/null and b/assets/img/proj9/dome-480.webp differ
diff --git a/assets/img/proj9/dome-800.webp b/assets/img/proj9/dome-800.webp
new file mode 100644
index 00000000..39d097a0
Binary files /dev/null and b/assets/img/proj9/dome-800.webp differ
diff --git a/assets/img/proj9/mini-1400.webp b/assets/img/proj9/mini-1400.webp
new file mode 100644
index 00000000..6894f625
Binary files /dev/null and b/assets/img/proj9/mini-1400.webp differ
diff --git a/assets/img/proj9/mini-480.webp b/assets/img/proj9/mini-480.webp
new file mode 100644
index 00000000..a51ee5b2
Binary files /dev/null and b/assets/img/proj9/mini-480.webp differ
diff --git a/assets/img/proj9/mini-800.webp b/assets/img/proj9/mini-800.webp
new file mode 100644
index 00000000..3f364667
Binary files /dev/null and b/assets/img/proj9/mini-800.webp differ
diff --git a/assets/img/proj9/work-1400.webp b/assets/img/proj9/work-1400.webp
new file mode 100644
index 00000000..26d694d4
Binary files /dev/null and b/assets/img/proj9/work-1400.webp differ
diff --git a/assets/img/proj9/work-480.webp b/assets/img/proj9/work-480.webp
new file mode 100644
index 00000000..79bff0ae
Binary files /dev/null and b/assets/img/proj9/work-480.webp differ
diff --git a/assets/img/proj9/work-800.webp b/assets/img/proj9/work-800.webp
new file mode 100644
index 00000000..f1d9589a
Binary files /dev/null and b/assets/img/proj9/work-800.webp differ
diff --git a/assets/img/proj9/workshop-1400.webp b/assets/img/proj9/workshop-1400.webp
new file mode 100644
index 00000000..156c8433
Binary files /dev/null and b/assets/img/proj9/workshop-1400.webp differ
diff --git a/assets/img/proj9/workshop-480.webp b/assets/img/proj9/workshop-480.webp
new file mode 100644
index 00000000..94953270
Binary files /dev/null and b/assets/img/proj9/workshop-480.webp differ
diff --git a/assets/img/proj9/workshop-800.webp b/assets/img/proj9/workshop-800.webp
new file mode 100644
index 00000000..a4e7684b
Binary files /dev/null and b/assets/img/proj9/workshop-800.webp differ
diff --git a/assets/img/projects-screenshot-1400.webp b/assets/img/projects-screenshot-1400.webp
new file mode 100644
index 00000000..a3e2d3ca
Binary files /dev/null and b/assets/img/projects-screenshot-1400.webp differ
diff --git a/assets/img/projects-screenshot-480.webp b/assets/img/projects-screenshot-480.webp
new file mode 100644
index 00000000..4235f86a
Binary files /dev/null and b/assets/img/projects-screenshot-480.webp differ
diff --git a/assets/img/projects-screenshot-800.webp b/assets/img/projects-screenshot-800.webp
new file mode 100644
index 00000000..cbf75e7a
Binary files /dev/null and b/assets/img/projects-screenshot-800.webp differ
diff --git a/assets/img/publications-screenshot-1400.webp b/assets/img/publications-screenshot-1400.webp
new file mode 100644
index 00000000..616ead35
Binary files /dev/null and b/assets/img/publications-screenshot-1400.webp differ
diff --git a/assets/img/publications-screenshot-480.webp b/assets/img/publications-screenshot-480.webp
new file mode 100644
index 00000000..3c357db2
Binary files /dev/null and b/assets/img/publications-screenshot-480.webp differ
diff --git a/assets/img/publications-screenshot-800.webp b/assets/img/publications-screenshot-800.webp
new file mode 100644
index 00000000..73fa3621
Binary files /dev/null and b/assets/img/publications-screenshot-800.webp differ
diff --git a/assets/img/thesis-1400.webp b/assets/img/thesis-1400.webp
new file mode 100644
index 00000000..b62accaa
Binary files /dev/null and b/assets/img/thesis-1400.webp differ
diff --git a/assets/img/thesis-480.webp b/assets/img/thesis-480.webp
new file mode 100644
index 00000000..b09327ed
Binary files /dev/null and b/assets/img/thesis-480.webp differ
diff --git a/assets/img/thesis-800.webp b/assets/img/thesis-800.webp
new file mode 100644
index 00000000..a307d45f
Binary files /dev/null and b/assets/img/thesis-800.webp differ
diff --git a/bin/cibuild b/bin/cibuild
deleted file mode 100755
index d5c9e195..00000000
--- a/bin/cibuild
+++ /dev/null
@@ -1 +0,0 @@
-bundle exec jekyll build
diff --git a/bin/deploy b/bin/deploy
deleted file mode 100755
index 070e2f75..00000000
--- a/bin/deploy
+++ /dev/null
@@ -1,112 +0,0 @@
-#!/usr/bin/env bash
-
-# Run this script to deploy the app to Github Pages
-
-# Parse cmd arguments
-
-SRC_BRANCH="master"
-DEPLOY_BRANCH="gh-pages"
-
-USAGE_MSG="usage: deploy [-h|--help] [-u|--user] [-s|--src SRC_BRANCH] [-d|--deploy DEPLOY_BRANCH] [--verbose] [--no-push]"
-
-while [[ $# > 0 ]]; do
- key="$1"
-
- case $key in
- -h|--help)
- echo $USAGE_MSG
- exit 0
- ;;
- -u|--user)
- SRC_BRANCH="source"
- DEPLOY_BRANCH="master"
- ;;
- -s|--src)
- SRC_BRANCH="$2"
- shift
- ;;
- -d|--deploy)
- DEPLOY_BRANCH="$2"
- shift
- ;;
- --verbose)
- set -x
- ;;
- --no-push)
- NO_PUSH="--no-push"
- ;;
- *)
- echo "Option $1 is unknown." >&2
- echo $USAGE_MSG >&2
- exit 1
- ;;
- esac
- shift
-done
-
-# Exit if any subcommand fails
-set -e
-
-echo "Deploying..."
-echo "Source branch: $SRC_BRANCH"
-echo "Deploy branch: $DEPLOY_BRANCH"
-
-read -r -p "Do you want to proceed? [y/N] " response
-if [[ ! $response =~ ^([yY][eE][sS]|[yY])+$ ]]
-then
- echo "Aborting."
- [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
-fi
-
-# Check if there are any uncommitted changes
-if ! git diff-index --quiet HEAD --; then
- echo "Changes to the following files are uncommitted:"
- git diff-index --name-only HEAD --
- echo "Please commit the changes before proceeding."
- echo "Aborting."
- [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
-fi
-
-# Check if there are any untracked files
-if ! test -z "$(git ls-files --exclude-standard --others)"; then
- echo "There are untracked files:"
- git ls-files --exclude-standard --others
- echo "Please commit those files or stash them before proceeding."
- echo "Aborting."
- [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
-fi
-
-# Switch to source branch (creates it if necessary from the current branch)
-if [ `git branch | grep $SRC_BRANCH | tr ' ' '\n' | tail -1` ]
-then
- git checkout $SRC_BRANCH
-else
- git checkout -b $SRC_BRANCH
-fi
-
-# Checkout DEPLOY_BRANCH branch
-if [ `git branch | grep $DEPLOY_BRANCH` ]
-then
- git branch -D $DEPLOY_BRANCH
-fi
-git checkout -b $DEPLOY_BRANCH
-
-# Build site
-bundle exec jekyll build
-
-# Delete and move files
-find . -maxdepth 1 ! -name '_site' ! -name '.git' ! -name 'CNAME' ! -name '.gitignore' -exec rm -rf {} \;
-mv _site/* .
-rm -R _site/
-
-# Push to DEPLOY_BRANCH
-git add -fA
-git commit --allow-empty -m "$(git log -1 --pretty=%B) [ci skip]"
-[[ ${NO_PUSH} ]] || git push -f -q origin $DEPLOY_BRANCH
-
-# Move back to SRC_BRANCH
-git checkout $SRC_BRANCH
-
-echo "Deployed successfully!"
-
-exit 0
diff --git a/blog/2021/index.html b/blog/2021/index.html
new file mode 100644
index 00000000..95be5505
--- /dev/null
+++ b/blog/2021/index.html
@@ -0,0 +1,246 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ | Hui Wang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
“Learn from your past and be better because of your past,” she would say, “but don’t cry about your past. Life is fully of pain. Let the pain sharpen you, but don’t hold on to it. Don’t be bitter.”
+
+
+
+
Revenge truly is sweet. It takes you to a dark place, but, man, it satisfies a thirst.
+
+
+
+
People always lecture the poor: “Take responsibility for yourself! Make something of yourself!” But with what raw materials are the poor to make something of themselves.
+
+
+
+
People love to say,”Give a man a fish, and he’ll eat for a day. Teach a man to fish, and he’ll eat for a lifetime.” What they don’t say is,”And it would be nice if you gave him a fishing rod.”That’s the part of the analogy that’s missing.
一对哥本哈根的母女创作和编织了很多的纸张模型,包括球面,气球面,火箭,篮子,心形,星形等小手工品. 二人2015年出版教程书籍”the art of paper weaving”. 女儿是个建筑师,妈妈是个化学工程师和风险分析员. 纸张编织起源于德国,在丹麦和挪威都有很长历史的传统. 可以作为艺术品摆件或者赠送贺卡.
Nothing feels like it was there yesterday, and nothing feels like it will be there tomorrow, but every day it looks exactly the same.
+
+
+
+
Hustling is to work what surfing the Internet is to reading.If you add up how much you read in a year on the Internet –tweets, Facebook posts, lists– you’ve read the equivalent of a shit ton of books, but in fact you’ve read no books in a year. When I look back on it, that’s what hustling was, It’s maximal effort put into minimal gain. It’s a hamster weel. If I’d put all that energy into studying I’d have earned an MBA. Instead I was majoring in hustling, something no universtiy would give me a degree for.
> 仁, 人心也; 义, 人路也. 舍其路而弗由, 放其心而不知求, 哀哉! 人有鸡犬放,而知求之; 有放心而不知求. 学问之道无他, 求其放心而已矣.
+>
+> Benevolence is a person’s heart, and righteousness is a person’s path. What a pitiful thing to abandon your path and not follow it or lose your heart and not search for it. If a person loses a chicken or dog, he knows enough to search for it. But people who lose their hearts don't know the same. The principle behind learning is none other than searching for one's lost heart.
+
+
+
+
《史记,世说新语》
+
+
+
> 天下熙熙皆为利来, 天下攘攘皆为利往.
+
+
+
+
《庄子说》
+
+
+
> 人世的生活在庄子看来是“无生命的秩序”, 他追求的是“有生命的无秩序”.
+
+
+
+
《Interstellar 星际穿越》
+
+
+
> Murphy’s Law — whatever can happen will happen.
+
+> Love means social utility, child rearing, social bonding. 爱意味着社会效用, 生儿育女, 人际往来.
+
+> Love is the one thing we’re capable of perceiving that transcends dimensions of time and space. 爱是一种力量,我们能够穿越时空的维度感受到它的存在.
+
+> Love, like gravity, which could move across time and dimensions. 爱,如重力一样, 能贯穿时空.
+
The triumph of democracy over apartheid is sometimes called the Bloodless Revolution. It is called that because very little white blood was spilled. Black blood ran in the streets.
+
+
+
+
The first thing I learned about having money was that it gives you choices. People don’t want to be rich. They want to be able to choose. The richer you are, the more choices you have. That is the freedom of money.
+
+
+
+
We spend so much time being afraid of failure, afraid of rejection. But regret is the thing we should fear most. Failure is an answer. Rejection is an answer. Regret is an eternal question you will never have the answer to. “What if…” “If only…” “I wonder what would have…” You will never, never know, and it will haunt you for the rest of your days.
Very happy to attend the one-week (29th Jan. - 2nd Feb.) Computational Architecture workshop held by VCC, KAUST. 5 experts(Eike Schling, Dominik L. Michels, Florian Rist, Helmut Pottmann and Peter Wonka)from architecture, geometry and computer science gave related talks about the reasonable and scientific ways to design things. I attended it together with 13 other architectural undergraduates selected from Saudi Arabia. It was my first time attending an architectural workshop, very interesting and fruitful! Not only I learnt how are the differences between theory, optimization results and the actual constructed model, but I also learnt some new experiences from the 10 girls and 3 boys, how they came up with their design ideas, how they handled construction details, and how they caught up with time to gave attractive presentations successfully.
+
+
+
+
+
+
+
+
Results
+
+
+
+
+
+
+
+
+ In the first afternoon, at the guide of Prof. Eike Schling, we built this beam shell with a triangle face at the top.
+
+
+
+
+
+
+
+
+
+ This model was made together with Xinye Li and Bolun Wang.
+ We bent 12 straight congruent strips and fixed them with 36 joints at computed positions to construct.
+ We tried to get an asymptotic net as orthogonal as possible, which is corresponding to a minimal net.
+ It is a trivial result, but it took us two days to finish it (in fact, we replaced the first day's plan and only took one day to finish together with the presentation).
+ During the construction time, we met many small problems, like how to choose good joints, how to bend the strips against with its resilience, how to bear the small pins from the FRP strips, how to group the 12 strips into a near rotational shape, how to make the intersection angle as 90 degree as possible...
+ Thanksfully, the result was not bad.
+
+
+
+
+
+
+
+
+
+ Here is a zoom-in view of the model.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ After we tested with three kinds of different joints, the final one can even make the two families of strips rotate, which forms the kinetic behavior of the asymptotic shell (left).
+ This deformed progress can be simulated by Kangoroo in Grasshoppper.
+ The two families of strips can be unrolled into flat rectangular shape in plane.
+
+
+
Presentation
+
+
I gave the around 10mins’ presentation together with Xinye, here is the pdf
During the first two days of the Advances in Architectural Geometry (AAG2023) conference held from October 4-7 in Stuggart, I attended the Structural Origami workshop led by Tomohiro Tachi, Rupert Maleczek and Yves Klett.
+
+
+
+
+
+
+
+
+
+
+
+
+
I completed an Origami shell model together with Xinye Li during the workshop.
+
+
+
+
+
+
+
+
+
+
+
+
+ Left: The flat patterns reveal the 'periodic' trends of the curves. When folded along these curved creases, the model takes on montains and valleys in the convex '凸' and concave '凹' ways, which showcases more interesting characteristics compared to the common Curved Pleat Structures.
+ Right: There are multiple degrees of freedom to transform the model isometrically. This particular state demonstrates higher stiffness and stability.
+
+
+
Design
+
+
+
+
+
+
+
+
+ The 2D pattern is designed using a parametric approach. We begin with two scaled ellipses, and then adjust the position and size of the central ellipse. As a result, the corresponding curved patterns are designed accordingly. To export the file, we use Rhino and save it as a .svg file.
+
+
+
Simulation
+
+
+
+
+
+
+
+
+ The curved folding process can be simulated using the online algorithm 'Origami Simulator'. The results of the simulation are similar to the physical model.
+
+
+
A research paper on this topic will be discussed in the near future.
+
+ A beautiful, simple, clean, and responsive Jekyll theme for academics.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Honors and Awards
+
+
+
+
+
+
+
+
+
+ 1921
+
+
+
+
+
+
+
+
+
+
+
+
+ Nobel Prize in Physics
+
+
+
+
+
+ Matteucci Medal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2029
+
+
+
+
+
+
+
+
+
+
+
+
+ Max Planck Medal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Academic Interests
+
+
+
+
+
+
Topic 1.
+
+
+
+
Description 1.
+
+
Description 2.
+
+
+
+
+
+
+
Topic 2.
+
+
+
+
Description 1.
+
+
Description 2.
+
+
+
+
+
+
+
+
+
+
+
+
Other Interests
+
+
+
+
+
+Hobbies: Hobby 1, Hobby 2, etc.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/feed.xml b/feed.xml
new file mode 100644
index 00000000..be6d762a
--- /dev/null
+++ b/feed.xml
@@ -0,0 +1,1732 @@
+Jekyll2023-10-13T13:14:09+00:00https://www.huiwang.me/feed.xmlblankPersonal research website.
+Curved folding shell2023-10-12T00:01:00+00:002023-10-12T00:01:00+00:00https://www.huiwang.me/blog/2023/issue25During the first two days of the Advances in Architectural Geometry (AAG2023) conference held from October 4-7 in Stuggart, I attended the Structural Origami workshop led by Tomohiro Tachi, Rupert Maleczek and Yves Klett.
+
+
+
+
+
+
+
+
+
+
+
+
+
I completed an Origami shell model together with Xinye Li during the workshop.
+
+
+
+
+
+
+
+
+
+
+
+
+ Left: The flat patterns reveal the 'periodic' trends of the curves. When folded along these curved creases, the model takes on montains and valleys in the convex '凸' and concave '凹' ways, which showcases more interesting characteristics compared to the common Curved Pleat Structures.
+ Right: There are multiple degrees of freedom to transform the model isometrically. This particular state demonstrates higher stiffness and stability.
+
+
+
Design
+
+
+
+
+
+
+
+
+ The 2D pattern is designed using a parametric approach. We begin with two scaled ellipses, and then adjust the position and size of the central ellipse. As a result, the corresponding curved patterns are designed accordingly. To export the file, we use Rhino and save it as a .svg file.
+
+
+
Simulation
+
+
+
+
+
+
+
+
+ The curved folding process can be simulated using the online algorithm 'Origami Simulator'. The results of the simulation are similar to the physical model.
+
+
+
A research paper on this topic will be discussed in the near future.
Very happy to attend the one-week (29th Jan. - 2nd Feb.) Computational Architecture workshop held by VCC, KAUST. 5 experts(Eike Schling, Dominik L. Michels, Florian Rist, Helmut Pottmann and Peter Wonka)from architecture, geometry and computer science gave related talks about the reasonable and scientific ways to design things. I attended it together with 13 other architectural undergraduates selected from Saudi Arabia. It was my first time attending an architectural workshop, very interesting and fruitful! Not only I learnt how are the differences between theory, optimization results and the actual constructed model, but I also learnt some new experiences from the 10 girls and 3 boys, how they came up with their design ideas, how they handled construction details, and how they caught up with time to gave attractive presentations successfully.
+
+
+
+
+
+
+
+
Results
+
+
+
+
+
+
+
+
+ In the first afternoon, at the guide of Prof. Eike Schling, we built this beam shell with a triangle face at the top.
+
+
+
+
+
+
+
+
+
+ This model was made together with Xinye Li and Bolun Wang.
+ We bent 12 straight congruent strips and fixed them with 36 joints at computed positions to construct.
+ We tried to get an asymptotic net as orthogonal as possible, which is corresponding to a minimal net.
+ It is a trivial result, but it took us two days to finish it (in fact, we replaced the first day's plan and only took one day to finish together with the presentation).
+ During the construction time, we met many small problems, like how to choose good joints, how to bend the strips against with its resilience, how to bear the small pins from the FRP strips, how to group the 12 strips into a near rotational shape, how to make the intersection angle as 90 degree as possible...
+ Thanksfully, the result was not bad.
+
+
+
+
+
+
+
+
+
+ Here is a zoom-in view of the model.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ After we tested with three kinds of different joints, the final one can even make the two families of strips rotate, which forms the kinetic behavior of the asymptotic shell (left).
+ This deformed progress can be simulated by Kangoroo in Grasshoppper.
+ The two families of strips can be unrolled into flat rectangular shape in plane.
+
+
+
Presentation
+
+
I gave the around 10mins’ presentation together with Xinye, here is the pdf
]]>ArchGeo建筑几何(第 22 期)2022-10-30T00:01:00+00:002022-10-30T00:01:00+00:00https://www.huiwang.me/blog/2022/issue22Parts of images from the internet. If there is any copyright infringement, please notify me at once and I’ll delete it.
+
+
]]>ArchGeo建筑几何(第 21 期)2022-09-04T00:01:00+00:002022-09-04T00:01:00+00:00https://www.huiwang.me/blog/2022/issue21Parts of images from the internet. If there is any copyright infringement, please notify me at once and I’ll delete it.
+
+
]]>ArchGeo建筑几何(第 20 期)2022-08-31T00:01:00+00:002022-08-31T00:01:00+00:00https://www.huiwang.me/blog/2022/issue20Part of images from the internet. If there is any copyright infringement, please notify me at once and I’ll delete it.
+
+
]]>ArchGeo建筑几何(第 18 期)2022-06-28T00:01:00+00:002022-06-28T00:01:00+00:00https://www.huiwang.me/blog/2022/issue18Part images from the internet. If there is any copyright infringement, please notify me at once and I’ll delete it.
+
+
]]>ArchGeo建筑几何(第 17 期)2022-05-28T00:01:00+00:002022-05-28T00:01:00+00:00https://www.huiwang.me/blog/2022/issue17Part images from the internet. If there is any copyright infringement, please notify me at once and I’ll delete it.
+
+
+ Our paper Rectifying Strip Patterns has been accepted by the SIGGRAPH Asia 2023 conference, which will take place in Sydney, Australia during Dec.12-15.
+
+
+
+
+
May 31, 2023
+
+ Our paper Discrete Orthogonal Structures has been accepted by the Shape Modeling International (SMI 2023) conference, which will take place from July 4th to 6th in Genova, Italy.
+
+
+
+
+
Apr 21, 2023
+
+ Our paper Asymptotic Geodesic Hybrid Timber Gridshell has been accepted by the Advances in Architectural Geometry (AAG 2023) conference, which will take place from Oct. 4th to 7th in Stuttgart, Germany.
+
+
+
+
+
Dec 24, 2022
+
+ Our paper On Helical Surfaces with a Constant Ratio of Principal Curvatures has been published in Beiträge zur Algebra und Geometrie.
+
+
+
+
+
Dec 21, 2022
+
+ Our paper Architectural Structures from Quad Meshes with Planar Parameter Lines has been published in Computer-Aided Design (CAD).
+
+
Our paper Asymptotic Geodesic Hybrid Timber Gridshell has been accepted by the Advances in Architectural Geometry (AAG 2023) conference, which will take place from Oct. 4th to 7th in Stuttgart, Germany.
Our paper Discrete Orthogonal Structures has been accepted by the Shape Modeling International (SMI 2023) conference, which will take place from July 4th to 6th in Genova, Italy.
Announcements and news can be much longer than just quick inline posts. In fact, they can have all the features available for the standard blog posts. See below.
+
+
+
+
Jean shorts raw denim Vice normcore, art party High Life PBR skateboard stumptown vinyl kitsch. Four loko meh 8-bit, tousled banh mi tilde forage Schlitz dreamcatcher twee 3 wolf moon. Chambray asymmetrical paleo salvia, sartorial umami four loko master cleanse drinking vinegar brunch. Pinterest DIY authentic Schlitz, hoodie Intelligentsia butcher trust fund brunch shabby chic Kickstarter forage flexitarian. Direct trade cold-pressed meggings stumptown plaid, pop-up taxidermy. Hoodie XOXO fingerstache scenester Echo Park. Plaid ugh Wes Anderson, freegan pug selvage fanny pack leggings pickled food truck DIY irony Banksy.
+
+
Hipster list
+
+
brunch
+
fixie
+
raybans
+
messenger bag
+
+
+
Hoodie Thundercats retro, tote bag 8-bit Godard craft beer gastropub. Truffaut Tumblr taxidermy, raw denim Kickstarter sartorial dreamcatcher. Quinoa chambray slow-carb salvia readymade, bicycle rights 90’s yr typewriter selfies letterpress cardigan vegan.
+
+
+
+
Pug heirloom High Life vinyl swag, single-origin coffee four dollar toast taxidermy reprehenderit fap distillery master cleanse locavore. Est anim sapiente leggings Brooklyn ea. Thundercats locavore excepteur veniam eiusmod. Raw denim Truffaut Schlitz, migas sapiente Portland VHS twee Bushwick Marfa typewriter retro id keytar.
+
+
+
We do not grow absolutely, chronologically. We grow sometimes in one dimension, and not in another, unevenly. We grow partially. We are relative. We are mature in one realm, childish in another.
+—Anais Nin
+
+
+
Fap aliqua qui, scenester pug Echo Park polaroid irony shabby chic ex cardigan church-key Odd Future accusamus. Blog stumptown sartorial squid, gastropub duis aesthetic Truffaut vero. Pinterest tilde twee, odio mumblecore jean shorts lumbersexual.
+ Our paper Rectifying Strip Patterns has been accepted by the SIGGRAPH Asia 2023 conference, which will take place in Sydney, Australia during Dec.12-15.
+
+
+
+
+
May 31, 2023
+
+ Our paper Discrete Orthogonal Structures has been accepted by the Shape Modeling International (SMI 2023) conference, which will take place from July 4th to 6th in Genova, Italy.
+
+
+
+
+
Apr 21, 2023
+
+ Our paper Asymptotic Geodesic Hybrid Timber Gridshell has been accepted by the Advances in Architectural Geometry (AAG 2023) conference, which will take place from Oct. 4th to 7th in Stuttgart, Germany.
+
+
+
+
+
Dec 24, 2022
+
+ Our paper On Helical Surfaces with a Constant Ratio of Principal Curvatures has been published in Beiträge zur Algebra und Geometrie.
+
+
+
+
+
Dec 21, 2022
+
+ Our paper Architectural Structures from Quad Meshes with Planar Parameter Lines has been published in Computer-Aided Design (CAD).
+
+
+
+
+
Jul 30, 2022
+
+ Our paper Designing asymptotic geodesic hybrid gridshells has been published in Computer-Aided Design (CAD).
+
+
+
+
+
Jun 23, 2022
+
+ I gave a talk about Designing Asymptotic Geodesic Hybrid Gridshells in the Curves and Surfaces 2022 live conference in Arcachon, France.
+
+
+
+
+
Mar 1, 2022
+
+ Our paper Characteristic parameterizations of surfaces with a constant ratio of principal curvatures has been published in CAGD.
+
+
+
+
+
Dec 1, 2021
+
+ My Phd thesis Construction of Meshes and Smooth Surfaces in Architectural Geometry wins the Outstanding Doctoral Dissertation Award 2020 in DUT.
+
+
+
+
+
Nov 1, 2021
+
+ Our paper Shape-morphing Mechanical Metamaterials has been published in CAD.
+
+
+
+
+
Aug 1, 2021
+
+ Our paper Using isometries for computational design and fabrication has been presented in SIGGRAPH 2021.
+
+
+
+
+
Jun 1, 2020
+
+ Our paper Architectural freeform surfaces designed for cost-effective paneling through mold re-use has been accepted by AAG 2020.
+
+
+
+
+
May 1, 2020
+
+ Our paper Principal Symmetric Meshes has been accepted by ACM SIGGRAPH 2020.
+
+
+
+
+
Mar 18, 2020
+
+ I successfully defended my thesis titled Construction of Mesh and Smooth Surfaces in Architectural Geometry online.
+
+
+
+
+
Nov 18, 2019
+
+ I gave a presentation together with Davide Pellis about Discrete Geodesic Parallel Coordinates in SIGGRAPH Asia 2019 in Brisbane.
+
+
+
+
+
Aug 28, 2019
+
+ Our paper Discrete Geodesic Parallel Coordinates has been accepted by ACM SIGGRAPH Asia 2019.
+
+
+
+
+
Jan 15, 2016
+
+ A simple inline announcement with Markdown emoji!
+
+
Orthogonal multi-nets, Principal meshes, Developable surfaces, CMC surfaces, Principal stress net
+
+
+
+
+
+
+Publication
+
+
It was accepted by the Shape Modeling International (SMI2023) conference, and presented during the International Geometry Summit (IGS2023) from July 3rd to 7th in Genova, Italy.
+This paper won the \({\color{red}Best Paper (Honourable Mention)}\) out of the 20 accepted papers (63 submissions).
+It has been published in the Computers & Graphics journal.
+
+
+
+
+
+
+
+
+Authors
+
+
Felix Dellinger, Xinye Li, and Hui Wang* (corresponding author)
+ Torsion-free gridshell structure, whose underlying net is an orthogonal planar-quad net (PQ-net), i.e. principal curvature net.
+
+
+
+
+
+
+
+
+
+ Minimal gridshell structure, whose underlying net is an orthogonal Asymptotic net (A-net), i.e. minimal net.
+
+
+
+
+
+
+
+
+
+ Circular gridshell structure, whose underlying net is an orthogonal principal symmetric net (S-net) with a constant radius, i.e. constant mean curvature net (CMC-net).
+
+
+
+
+
+
+
+
+
+ Principal stress (equilibrium) structure, whose underlying net is an orthogonal furnicular net, i.e. principal stress net.
+
Computational design and fabrication, Shading system, Gridshell,Pseudo-geodesic, Developable strips
+
+
+
+
+
+Publication
+
+
ACM Transactions on Graphics;
+Accepted by the SIGGRAPH Asia 2023 conference (Dec.12-15, Sydney, Australia).
+
+
+Authors
+
+
Bolun Wang, Hui Wang, Eike Schling, Helmut Pottmann
+
+
Abstract
+
Straight flat strips of inextensible material can be bent into curved strips aligned with arbitrary space curves. The large shape variety of these socalled rectifying strips makes them candidates for shape modeling, especially in applications such as architecture where simple elements are preferred for the fabrication of complex shapes. In this paper, we provide computational tools for the design of shapes from rectifying strips. They can form various patterns and fulfill constraints which are required for specific applications such as gridshells or shading systems. The methodology is based on discrete models of rectifying strips, a discrete level-set formulation and optimization-based constrained mesh design and editing. We also analyse the geometry at nodes and present remarkable quadrilateral arrangements of rectifying strips with torsion-free nodes.
Pseudo-geodesic curves of a surface was first studied by Walter Wunderlich in 1950. They are the curves whose osculating planes have a constant angle \(\theta\) with the tangent planes of the surface.
+When \(\theta=90^o\), they are geodesic;
+when \(\theta=0^o\), they are asymptotic curves.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A smooth pseugo-geodesic on a rotational cylinder can be explicitly represented by $x = \cos(t); y= \sin(t); z = \tan(\theta) ch(t/\tan(\theta))$ with parameter $t$.
+ Left: changing interval $t$. Right: changing tilt angle $\theta$.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A family of pseudo-geodesics on a mesh. Left: A family of pseudo-geodesic with $\theta=60^o$ are constructed as level-sets from a triangle mesh. Right: A family of pseudo-geodesics with $\theta=45^o$ are optimized from geodesics ($\theta=90^o$) of the quad mesh, where the binormals along the pseudo-geodesics form the so-called **Rectifying Strips** that are developable.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The rectifying strips, materialized by metal or wodden sheets, along the designed pseudo-geodesics on a free-form surface can be functioned as shading facades.
+ Light and shadow effects with time changing from morning to afteroon. Left: outside. Right: inside view with focal lenth 10.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Four facades of an architecture function differently. Left: lighting and shading effects with changing sunlight directions at different time. Center-Right: turn-table views.
+
During the first two days of the Advances in Architectural Geometry (AAG2023) conference held from October 4-7 in Stuggart, I attended the Structural Origami workshop led by Tomohiro Tachi, Rupert Maleczek and Yves Klett. I completed an Origami shell model together with Xinye Li during the workshop.
+
+
+
+
+
+
+
+
+
+
+
+
+ Left: The flat patterns reveal the 'periodic' trends of the curves. When folded along these curved creases, the model takes on montains and valleys in the convex '凸' and concave '凹' ways, which showcases more interesting characteristics compared to the common Curved Pleat Structures.
+ Right: There are multiple degrees of freedom to transform the model isometrically. This particular state demonstrates higher stiffness and stability.
+
+
+
Design
+
+
+
+
+
+
+
+
+ The 2D pattern is designed using a parametric approach. We begin with two scaled ellipses, and then adjust the position and size of the central ellipse. As a result, the corresponding curved patterns are designed accordingly. To export the file, we use Rhino and save it as a .svg file.
+
+
+
Simulation
+
+
+
+
+
+
+
+
+ The curved folding process can be simulated using the online algorithm 'Origami Simulator'. The results of the simulation are similar to the physical model.
+
+
+
A research paper on this topic will be discussed in the near future.
Surfaces with a constant ratio of principal curvatures
+
Discrete differential geometry, Architectural geometry, Weingarten surface, Characteristic parameterization, Constant ratio of principal curvatures, Principal symmetric net
Motivated by applications in architectural geometry, we study and compute surfaces with a constant ratio of principal curvatures (CRPC surfaces) based on their characteristic parameterizations. For negative Gaussian curvature K, these parameterizations are asymptotic. For positive K they are conjugate and symmetric with respect to the principal curvature directions. CRPC surfaces are described by characteristic parameterizations whose parameter lines form a constant angle. We use them to derive characteristic parameterizations of rotational CRPC surfaces in a simple geometric way. Pairs of such surfaces with principal curvature ratio k1/k2=±a can be seen as equilibrium shapes and reciprocal force diagrams of each other. We then introduce discrete CRPC surfaces, expressed via discrete isogonal characteristic nets, and show how to efficiently compute them through numerical optimization. In particular, we derive discrete helical and spiral CRPC surfaces. We provide various ways how these and other special types of CRPC surfaces can serve as a basis for computational design of more general CRPC surfaces. Our computational tools may also serve as an experimental basis for mathematical studies of the largely unexplored class of CRPC surfaces.
+
+
+
+
Figures
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Fig.1: Architectural design study exhibiting a structure from planar panels based on a discrete CRPC surface with a = 0.45. The constant node angle (≠π/2) and the principal symmetric arrangement lead to a more interesting visual appearance than a mesh aligned with principal curvature directions would have.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Fig.2: Gridshells based on CRPC surfaces of positive curvature.
+ I followed a tutorial to make an Earth (spherical one) with texture in Blender. Then I came up with the idea to generate it to torus. I really found some images online... Then I made one like this.
+
We solve the task of representing free forms by an arrangement of panels
+that are manufacturable by precise isometric bending of surfaces made from
+a small number of molds. In fact we manage to solve the paneling task with
+surfaces of constant Gaussian curvature alone. This includes the case of
+developable surfaces which exhibit zero curvature. Our computations are
+based on an existing discrete model of isometric mappings between surfaces
+which for this occasion has been refined to obtain higher numerical accuracy.
+Further topics are interesting connections of the paneling problem with the
+geometry of Killing vector fields, designing and actuating isometries, curved
+folding in the double-curved case, and quad meshes with rigid faces that are
+nevertheless flexible
+
+
+
+
Figures
+
+
+
+
+
+
+
+
Fig.: Smooth freeform skins from flexible panels. It turns out that constant
+Gaussian curvature surfaces, i.e., spheres and pseudospheres, provide almost
+universal molds for the manufacturing of panels bending isometrically. Here
+a design by Zaha Hadid Architects is covered by panels struck from a small
+number of spherical molds (red) and pseudospherical molds (blue), as well
+as single-curved panels that are intrinsically flat (white).
+
+
+
+
+
+
+
+
Fig.1: Infinitesimal isometries tangential to surfaces (Killing fields) exist on
+surfaces isometric to rotational surfaces (above surfaces all isometric to rotational ones, deformed used the method in “Discrete Geodesic Parallel Coordinates” paper). Otherwise
+vector fields that are as Killing as possible yield information on paneling.
+The color coding is according to Gaussian curvature — true Killing fields
+must follow its level sets.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Fig.2: Simulating the bending process (isometric deformation) of the Strelitzia Reginae flower.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Fig.3: Isometric deformation of meshes.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Fig.4: Felixion behavior of meshes.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Fig.5: Flexion facade design analogous to the “flectofin” shading elements (Lienhard et al. 2011).
+ During the AAG2020 conference workshop, I made and rendered this Asymptotic Gridshell model with rectangular steel slats. Its underlying surface is helicoid, which works well to have nice two families of straight developments.
+
+ Followed a tutorial to design the spherical packings on the subdivided Dodecahedron (top), Icosahedron (center), and Dipyramid (bottom). This is optimized by the Sphere Packing component in Kangaroo Solver.
+ However, these packings are not really complete sphere packings. The spheres are NEARLY tangent or intersected to each other, which can be seen from the gaps or overlaps between the circle disks on the right column.
+
+ Breakwater Beacon is a landmark building of KAUST. It was completed in 2009. The design information can be found
+ here . This
+ free-download .stl file model in GrabCAD was designed by a 3D printer tutor in KAUST in 2015.
+
+ VisIt
+ is an open-source scientific visualization application, especially for large datasets.
+ It's based on VTK, similar to mayavi.
+ Above are two velocity flows learned from the
+ workshop.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Left: density isovolumn. Right: velocity visualized by ellipsoids.
+
Small-scale cut and fold patterns imposed on sheet material enable its morphing into three-dimensional shapes. This manufacturing paradigm has been receiving much attention in recent years and poses challenges in both fabrication and computation. It is intimately connected with the interpretation of patterned sheets as mechanical metamaterials, typically of negative Poisson ratio. We here present an affirmative solution to a fundamental geometric question, namely the targeted programming of a shape morph. We use optimization to compute kirigami patterns that realize a morph between shapes, in particular between a flat sheet and a surface in space. The shapes involved can be arbitrary; in fact we are able to approximate any mapping between shapes whose principal distortions do not exceed certain bounds. This amounts to a solution of the so-called inverse problem for kirigami cut and fold patterns. The methods we employ include a differential–geometric interpretation of the morph, besides drawing on recent progress in geometric computing.
+
+
+
+
Figures
+
+
+
+
+
+
+
+
Fig.: Example of a quad-based metamaterial where a planar closed state morphs to a maximally open spatial state. The computation according to stages 1–3 involves a constant mean stretch mapping from a planar domain to the given design surface at right.
+
+
+
+
+
+
+
+
Fig.1: Auxetic behavior of regular squares can be considered by square corners gliding on the frame with same speed (the sizes of squares get scaled here).
+
+
+
+
+
+
+
+
+
+
+
+
Fig.2: Joint optimization of quad-based metamaterials in closed state and fully open spatial state. “Fully open quads” means that all the hole quards are circular.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Fig.3: Lamps design from fully closed states to fully open states.
+
+
+
+
+
+
+
+
+
+
+
+
Fig.4: Roof design from fully closed planar states to fully open curved states.
+ Paraview
+ is an open-source scientific visualization application.
+ Topology Toolkit, short as TTK, as a plugin in ParaView helps to do some calculations and visualization, like getting the critical point, contour curves and segmentation of the shape.
+ Above examples learned from the
+ workshop.
+ ParaView itself also has some special geometry models, like minimal surface, Boy's surface, spiral surfaces et. al.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Left: segmentation of the pegasus model. Right: contour curve and Gaussian curvature of the Soumaya Museum mesh (.obj).
+
+ Referring to the real shell ( Bamboo Structure Project / Pouya Khazaeli Parsa ) in Iran and a recent research project ( Kinetic Structure by Elastic Strips ) by Prof.Yimin Xie's Lab, I designed this twisting shell with twisting strips. Note: during the rotation, the strips get changed from straight ones (i.e. strips with straight boundary) to curved ones (i.e. curved boundary with inflection), they are not isometric to the beginning ones. It's just a imaginary simulation.
+
+ Referred to KnitCandela designed by Zaha Hadid Architects. The resulting meshes are regular quad meshes (without singularities), since they are topologically in annulus shape.
+
+ Zaha Hadid Architects designed this Metro Station in Ukraine. There are two different structures according to their rendering pictures, one is with 3 curved pleated shells and the other is with 5 curved pleated shells. Here I modeled the later one by Rhino and animated it using Keyshot. Hoping they can come to be constructed one day.
+
+ A very simple curved pleated structure from given two boundary curves. Firstly, set two freeform 3D curves as initial boundaries. Secondly, tween the two curves to produce a series of internal curves between them. Thirdly, move up-down the curves. Finally, loft the curves to get the surface.
+
+ I like designer Marc Fornes' colorful and cheerful sculptures, one of his famouse design is a pleated shell for a French school (left). I similarly did this simple pleated shell (center).
+ There are several steps to do: 1. get some random points inside a rectangular region. 2. get a Voronoi diagram from the points. 3. do the offset of the polygon and union the region. 4. loft offsets to get a simple mesh and then refine it. 5. float the mesh with some fixed boundary points by Kangaroo optimization. 6. get individual connected strips by the plugin Stripper (right).
+ This simple test integrates the modeling and fabrication process: the first 5 steps are for the modeling, and the last step is for fabrication.
+
The isolines of principal symmetric surface parametrizations run symmetrically to the principal directions. We describe two discrete versions of these
+special nets/quad meshes which are dual to each other and show their usefulness for various applications in the context of fabrication and architectural
+design. Our discretization of a principal symmetric mesh comes naturally
+with a family of spheres, the so-called Meusnier and Mannheim spheres. In
+our representation of principal symmetric meshes, we have direct control
+over the radii of theses spheres and the intersection angles of the parameter
+lines. This facilitates tasks such as generating Weingarten surfaces including constant mean curvature surfaces and minimal surfaces. We illustrate
+the potential of Weingarten surfaces for paneling doubly curved freeform facades by significantly reducing the number of necessary molds. Moreover,
+we have direct access to curvature adaptive tool paths for cylindrical CNC
+milling with circular edges as well as flank milling with rotational cones.
+Furthermore, the construction of curved support structures from congruent
+circular strips is easily managed by constant sphere radii. The underlying
+families of spheres are in a natural way discrete curvature spheres in analogy
+to smooth Möbius and Laguerre geometry which further leads to a novel
+discrete curvature theory for principal symmetric meshes.
+
+
+
+
Figures
+
+
+
+
+
+
+
Fig.: Architectural design of a modern mountain leisure and tourism center. The geometric shape of the hull is a discrete principal symmetric parametrization
+(an S-net) of a Weingarten surface of type aκ1 + bκ2 = c. The big advantage lies in the fabrication of its doubly curved panels by a substantial
+reduction of necessary molds, as the same mold can be used along curves of constant curvature illustrated by isolines (b). Panels with identical molds are
+clustered together and highlighted by the same color (a). The network of this S-net assumes constant intersection angles which contributes to its aesthetic.
Geodesic parallel coordinates are orthogonal nets on surfaces where one
+of the two families of parameter lines are geodesic curves. We describe a
+discrete version of these special surface parameterizations and show that
+they are very useful for specific applications, most of which are related to
+the design and fabrication of surfaces in architecture. With the new discrete surface model, it is easy to control strip widths between neighboring
+geodesics. This facilitates tasks such as cladding a surface with strips of
+originally straight flat material or designing geodesic gridshells and timber
+rib shells. It is also possible to model nearly developable surfaces. These are
+characterized by geodesic strips with almost constant strip widths and are
+used for generating shapes that can be manufactured from materials which
+allow for some stretching or shrinking like felt, leather, or thin wooden
+boards. Most importantly, we show how to constrain the strip width parameters to model a class of intrinsically symmetric surfaces. These surfaces are
+isometric to surfaces of revolution and can be covered with doubly-curved
+panels that are produced with only a few molds when working with flexible
+materials like metal sheets.
+
+
+
+
+
+
Figures
+
+
+
+
+
+
+
Fig.: Architectural design in reference to designs by architect Frank Gehry. In our case the four surface patches are not developable, but are isometric to the
+same surface of revolution. The rectangular metal sheets covering the surface can be produced using just one comparably small sector between two meridian
+curves of the corresponding surface of revolution as a mold (left and Figure 16). The long vertical strip (left; gray) of the surface of revolution is either one big
+mold or can be segmented into smaller molds if necessary. Metal sheets covering surface areas with almost vanishing Gaussian curvature can be produced
+without a special mold, i.e., as developable surface patches.
+
+
+
+
+
+
+
+
Fig.1: In this paper, we model a geodesic parallel mesh with a regular quad grid by choosing a geodesic direction and asking for the geodesic parallel angles constraint. We furthermore ask for equal edge lengths along parallel polylines to get a discrete surface isometric to a surface of revolution. Instead, with angle constraint, equal edge lengths along geodesic polylines, and the discrete Jacobi equation, we can model discrete developable surfaces.
+
+
+
+
+
+
+
+
Fig.2: Cuting along a profile curve of the rotatioanl surface, isometrically deform it to get freeform patches.
+
+
+
+
+
+
+
+
Fig.3: The variety of surface patches (top) isometric to surfaces of revolution (bottom).
+
+
+
+
+
+
+
+
Fig.4: Geodesic parallel meshes can approximate a nearly developable surface like for instance a folded felt. The process is the following. We first scanned a folded felt to get a mesh model. We start then from a planar quad mesh. With geodesic parallel and developability constraints on, we optimize for closeness with the scanned mesh. We observe a good approximation, and the corresponding surface of revolution is an almost right cylinder. On bottom right, the nearly developable surface has been developed into the plane. Also here we can observe small distortions.
+
+
+
+
+
+
+
+
Fig.5: Geodesic parallel meshes very naturally leads to real-world applications. First of all, geodesics on a surface can be easily materialized with thin elongated quadrilateral timber strips(straight strips). Moreover, parallel geodesics are fairly distributed over a surface. Geodesic parallel meshes are then well suited for the design of architectural geodesic gridshells. A design procedure can be the following. Given a freeform reference surface, we can cover the surface with a geodesic parallel mesh. In this way, we get a first family of geodesic curves on the surface. A second mesh with different orientation can be used for a second family of geodesic curves to get a network. If a reference surface is not given, a generic geodesic parallel mesh can be used as a reference for the second one. To test our design procedure, we built a small scale model made of straight wooden strips, shown on the left. Here we can see how well the model match our geodesic parallel mesh on the right.
+
+
+
+
GIF
+
+
+
+
+
+
+
+
+
+
+
+ Interactive design of the geodesic parallel meshes.
+
Eike Schling∗, Hui Wang∗, Sebastian Hoyer, Helmut Pottmann
+(∗Joint first authors)
+
+
Abstract
+
Fabrication and assembly of freeform shells can be simplified significantly when controlling the curvature of structural elements during the design phase. This approach has produced fundamental insights to bending-active construction, using the elastic property of elements to form efficient load-bearing structures. This paper is focused on gridshells that are built from straight and flat slats. The slats are combined in two orientations, tangential and normal to the design surface, to create robust and versatile triangulated grids. For this purpose, we generate hybrid webs of asymptotic and geodesic paths on freeform surfaces. The research combines geometric computing with architectural building practice. We present a computational workflow for the design and interactive modification of hybrid asymptotic geodesic webs. At its core are discrete models that are based on concepts of differential geometry and allow to compute constrained structures within an optimization framework. The resulting webs are tested for architectural applications. We derive a strategy for the elastic erection process, in which geodesic lamellas are used as a guide and bracing of the spatial structure. Two architectural scenarios, a timber roof and a steel facade are presented. Their feasibility for construction is verified through prototypical joints and physical models. The research introduces a new class of networks and related surfaces and offers insights into the practical challenges of freeform construction from elastic slats.
Fig.2: Discussions in Fig.1 are confined to nets and webs of regular combinatorics, which limits the shape variety. For such meshes with a singularity of valence 6 or valence 8, we divide the web into 6 or 8 regular quad patches. Each patch is an AAG-web. Right column are two designs.
+
+
Applications
+
+
+
+
+
+
+
+
Fig.3: We designed and built a timber roof structure from straight lamellas.
+The Top and bottom mesh boundaries of the computed rotational AAG gridshell have square and circular shapes, respectively. The real model is one-quarter of it.
+
+
+
+
+
+
+
+
Fig.4: We redesigned the Emporia shopping center façade and successfully built a small-scaled steel AAG gridshell from straight rectangular steel slats. The original façade has obvious unsmooth supporting structures.
+Our optimized AAG-web approximates the shape with 4 original planar boundaries, the shell improves the structure’s appearance.
+
+
+
+
+
+
+
+
Fig.5: We roughly approximated the negatively curved part of the Soumaya Museum Model by an AAG web. This web results from the carefully-controlled optimization.
+Given any negatively curved mesh, we cannot directly approximate it to be an AGG or AAG-web. Only special shapes are possible.
+How to approximate a given curved shape is still an open question.
+A promising way to investigate the generation of webs is by using a level set approach.
+It will be our future work.
+
+
+
+
+
+
+
+
+
+
+
+
Fig.6: During the Winter Olympic Games Beijing 2022, many steel landscape sculptures called Xuerong Stars(namely Edelweiss Stars) appeared in front of the National Stadium and Ice Cube. They were designed by Prof. Weixin Huang’s team from Tsinghua University. These steel models are designed based on the regular icosahedron, where 6 pairs of triangular faces are used to form the congruent curved patches and the other 8 left triangular faces are deleted.
+
+
+
+
+
+
+
+
+
+
+
Fig.7: Still based on a regular icosahedron, I redesigned another AAG-gridshell with 20 patches congruent to each other. The red strips are tangent along the geodesic curves of each simple negatively-curved patch, and the other two families of diagonal strips are orthogonal along the asymptotic curves of the patch.
+
+
+
+
GIF
+
+
+
+
+
+
+
+
+
+
+
+ Interactive design of AGG-web (left) and AAG-web(right). In this way, a sequence of freeform webs are produced.
+
A user-friendly design tool has been realized by integrating the optimization into the CAD system Rhinoceros3D. Our plugin allows the user to define the main inputs to the optimization, the initial mesh, the web type, strip width and optimization parameters like the number of iterations and weights. The results, namely the optimized mesh,
+strip boundaries in piecewise quintic Bezier form, ruling vectors, the developable strips as well as their developments are returned as Rhinoceros3D geometry objects. The optimization is implemented in CPython and called from Grasshopper, Rhinoceros’ parametric design extension, using the Hops component. This allows the user to offload the actual computation to a more powerful remote machine, if desired. We will make our plugin available to the architectural community in the near future.
Cheng Wang, Caigui Jiang, Hui Wang, Xavier Tellier, Helmut Pottmann
+
+
Abstract
+
We address the computational design of architectural structures which are based on a frame of intersecting beams that are
+aligned with the parameter lines of a quad mesh. While previous work mainly put a planarity constraint onto the faces of
+the mesh, we focus on the planarity of long-range supporting beams which follow selected polylines in the underlying mesh.
+In addition to that, we impose further constraints including planarity of faces, right node angles and static equilibrium, and
+discuss in which way these may be combined. Some of the studied meshes are discrete counterparts of certain well-known
+surfaces in classical geometry, whose knowledge is helpful for initializing the proposed optimization algorithms.
Fig.1: Inspired by the glass roof of Chadstone Shopping Centre in Melbourne, I designed a quad mesh with planar faces and one family of planar polylines (P+PQ type).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Fig.2: Different from the one in Fig.1, every fifth polyline of a family is planar.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Fig.3: Left: MAD Architects-designed Harbin Opera House in China. Right-two: Inspired by it, I designed a supporting structure with two families of orthogonal planar polylines (PP+90 type).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Fig.4: Left: Zaha Hadid Architects-designed Changsha Meixihu International Culture and Art Centre in China.
+Right-two: Based on the left corner one, I designed another supporting structure with two families of orthogonal planar polylines (PP+90 type).
+
+
+
+
+
+
+
+
+
+
+
+
Fig.5: Left: A quad mesh with planar faces and one family of piecewise planar polylines (in colors) approximating the surface on the top of the Lilium Tower model by Zaha Hadid Architects.
+Right: A quad mesh in static equilibrium rationalized with planar faces and one family of piecewise planar polylines (in colors).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Fig.6: A P+PQ mesh with its support structure generates different shading patterns during a day at 9:00, 12:00 and 15:00. When the light is parallel to those planar polylines, the respective parts in the shading pattern are lighter. The base curve comes from the Ryue Nishizawa-designed Jining Art Museum in China.
Very happy that a triply symmetric wooden shell structure designed by my numerical optimization result has been built in real life. More construction details see Asymptotic Geodesic Timber Vault by Prof.Eike Schling et al.
Our research paper Asymptotic Geodesic Hybrid Timber Gridshell has been accepted in Advances in Architectural Geometry (AAG) 2023 conference, which will be held in Stuttgart, Germany.
+ Compared with the later construction pipeline, what I did seems the most basic and easier one, since I only handled with scripts in the computer. It's a great chance for me to learn how an even simple project could be built in real life and to know how many steps to be followed into the final stage. Cheers for all the people involved!
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Animations. Numerical results that can be transferred into real life, touched, shared, and enjoyed by people is a great honor for the person sitting in front of the computer all day. It shows how well the algorithm and the construction are compatible with each other.
+
+
+
Constraints
+
+
+
+
+
+
+
+
+ Although this structure looks not so complex with many symmetries, it took me longer time to finally get the constructable mesh, since it satisfies so many constraints for a single mesh patch as seen above.
+
+
+
+
+
+
+
+
+
+ Here is the final AAG-web with orthogonal straight strips along the asymptotic curves and tangent straight strips along the geodesics, which was optimized as discussed in this project .
+
Very happy to attend the one-week (29th Jan. - 2nd Feb.) Computational Architecture workshop held by VCC, KAUST. 5 experts(Eike Schling, Dominik L. Michels, Florian Rist, Helmut Pottmann and Peter Wonka)from architecture, geometry and computer science gave related talks about the reasonable and scientific ways to design things. I attended it together with 13 other architectural undergraduates selected from Saudi Arabia. It was my first time attending an architectural workshop, very interesting and fruitful! Not only I learnt how are the differences between theory, optimization results and the actual constructed model, but I also learnt some new experiences from the 10 girls and 3 boys, how they came up with their design ideas, how they handled construction details, and how they caught up with time to gave attractive presentations successfully.
+
+
+
+
+
+
+
+
Results
+
+
+
+
+
+
+
+
+ In the first afternoon, at the guide of Prof. Eike Schling, we built this beam shell with a triangle face at the top.
+
+
+
+
+
+
+
+
+
+ This model was made together with Xinye Li and Bolun Wang.
+ We bent 12 straight congruent strips and fixed them with 36 joints at computed positions to construct.
+ We tried to get an asymptotic net as orthogonal as possible, which is corresponding to a minimal net.
+ It is a trivial result, but it took us two days to finish it (in fact, we replaced the first day's plan and only took one day to finish together with the presentation).
+ During the construction time, we met many small problems, like how to choose good joints, how to bend the strips against with its resilience, how to bear the small pins from the FRP strips, how to group the 12 strips into a near rotational shape, how to make the intersection angle as 90 degree as possible...
+ Thanksfully, the result was not bad.
+
+
+
+
+
+
+
+
+
+ Here is a zoom-in view of the model.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ After we tested with three kinds of different joints, the final one can even make the two families of strips rotate, which forms the kinetic behavior of the asymptotic shell (left).
+ This deformed progress can be simulated by Kangoroo in Grasshoppper.
+ The two families of strips can be unrolled into flat rectangular shape in plane.
+
+
+
Presentation
+
+
I gave the around 10mins’ presentation together with Xinye, here is the pdf
Materials for courses you taught. Replace this text with your description.
+
+
+
+
For now, this page is assumed to be a static description of your courses. You can convert it to a collection similar to _projects/ so that you can have a dedicated page for each course.
+
+
Organize your courses by years, topics, or universities, however you like!