:root{--bg:#fff;--text:rgba(0,0,0,.84);--border:#ccc;--menu-color:#000;--footer-text:#999;--footer-border:#ccc;--hero-subtitle:#555;--stat-number:#000;--stat-label:#666;--project-border:#ececec;--project-border-hover:#000;--dropdown-bg:#f9f9f9;--dropdown-hover:#f1f1f1;--dropdown-text:#000;--skill-item-bg:#000;--skill-item-color:#fff;--skill-item-hover:#333;--code-bg:#333;--code-color:#eee;--blockquote-color:#ccc;--photos-caption:rgba(0,0,0,.6);--blog-color:#000;--blog-h1:#1a202c;--blog-date:#718096;--github-border:#ccc;--github-btn-bg:#000;--github-btn-border:#000;--github-btn-color:#fff;--toggle-color:#000;--card-bg:#fff;--card-separator:#f0f0f0;--text-secondary:#666;--text-muted:#444;--skills-bg:#fafafa;--skills-dot:#d0d0d0;--timeline-line-start:#e0e0e0;--timeline-line-end:#ccc;--scrollbar-color:#ccc}@media (prefers-color-scheme:dark){:root{--bg:#111;--text:hsla(0,0%,100%,.84);--border:#333;--menu-color:#e0e0e0;--footer-text:#666;--footer-border:#333;--hero-subtitle:#aaa;--stat-number:#fff;--stat-label:#888;--project-border:#333;--project-border-hover:#e0e0e0;--dropdown-bg:#1e1e1e;--dropdown-hover:#2a2a2a;--dropdown-text:#e0e0e0;--skill-item-bg:#2a2a2a;--skill-item-color:#fff;--skill-item-hover:#444;--code-bg:#2a2a2a;--code-color:#eee;--blockquote-color:#555;--photos-caption:hsla(0,0%,100%,.5);--blog-color:hsla(0,0%,100%,.84);--blog-h1:#e2e8f0;--blog-date:#a0aec0;--github-border:#333;--github-btn-bg:#2a2a2a;--github-btn-border:#555;--github-btn-color:#fff;--toggle-color:#e0e0e0;--card-bg:#1e1e1e;--card-separator:#2a2a2a;--text-secondary:#ccc;--text-muted:#bbb;--skills-bg:#111;--skills-dot:#2a2a2a;--timeline-line-start:#333;--timeline-line-end:#444;--scrollbar-color:#444}}[data-theme=light]{--bg:#fff;--text:rgba(0,0,0,.84);--border:#ccc;--menu-color:#000;--footer-text:#999;--footer-border:#ccc;--hero-subtitle:#555;--stat-number:#000;--stat-label:#666;--project-border:#ececec;--project-border-hover:#000;--dropdown-bg:#f9f9f9;--dropdown-hover:#f1f1f1;--dropdown-text:#000;--skill-item-bg:#000;--skill-item-color:#fff;--skill-item-hover:#333;--code-bg:#333;--code-color:#eee;--blockquote-color:#ccc;--photos-caption:rgba(0,0,0,.6);--blog-color:#000;--blog-h1:#1a202c;--blog-date:#718096;--github-border:#ccc;--github-btn-bg:#000;--github-btn-border:#000;--github-btn-color:#fff;--toggle-color:#000;--card-bg:#fff;--card-separator:#f0f0f0;--text-secondary:#666;--text-muted:#444;--skills-bg:#fafafa;--skills-dot:#d0d0d0;--timeline-line-start:#e0e0e0;--timeline-line-end:#ccc;--scrollbar-color:#ccc}[data-theme=dark]{--bg:#111;--text:hsla(0,0%,100%,.84);--border:#333;--menu-color:#e0e0e0;--footer-text:#666;--footer-border:#333;--hero-subtitle:#aaa;--stat-number:#fff;--stat-label:#888;--project-border:#333;--project-border-hover:#e0e0e0;--dropdown-bg:#1e1e1e;--dropdown-hover:#2a2a2a;--dropdown-text:#e0e0e0;--skill-item-bg:#2a2a2a;--skill-item-color:#fff;--skill-item-hover:#444;--code-bg:#2a2a2a;--code-color:#eee;--blockquote-color:#555;--photos-caption:hsla(0,0%,100%,.5);--blog-color:hsla(0,0%,100%,.84);--blog-h1:#e2e8f0;--blog-date:#a0aec0;--github-border:#333;--github-btn-bg:#2a2a2a;--github-btn-border:#555;--github-btn-color:#fff;--toggle-color:#e0e0e0;--card-bg:#1e1e1e;--card-separator:#2a2a2a;--text-secondary:#ccc;--text-muted:#bbb;--skills-bg:#111;--skills-dot:#2a2a2a;--timeline-line-start:#333;--timeline-line-end:#444;--scrollbar-color:#444}body{font-family:Source Sans Pro,sans-serif;letter-spacing:-.004em;font-style:normal;color:var(--text);background-color:var(--bg);font-family:-apple-system,BlinkMacSystemFont,Source Sans Pro,Helvetica Neue,sans-serif;text-rendering:optimizeLegibility;-webkit-font-smoothing:subpixel-antialiased}li,p{font-size:18px;line-height:1.58}h1{font-weight:300;margin:0}h2{font-size:40px;line-height:1.05;letter-spacing:.008em;margin:20px 0}h2,h3{font-weight:500}h3{font-size:24px;line-height:1.20849;letter-spacing:.015em}code:not(pre *){background:var(--code-bg);color:var(--code-color);padding:4px 9px;border-radius:3px}ul h4,ul p{margin:0}p{margin-bottom:20px}.footer,.text-center{text-align:center}.footer{border-top:1px solid var(--footer-border);padding:10px;color:var(--footer-text);margin-top:30px}.footer p{font-size:10px}.footer a{color:var(--footer-text)}ul.menu{list-style:none;text-align:center;padding:0;margin-top:10px}ul.menu li{display:inline-block;position:relative}ul.menu li a{color:var(--menu-color);text-decoration:none;font-size:13px;padding-right:7px}ul.menu li a:hover{text-decoration:underline}ul.menu>li+li:before{color:var(--menu-color);content:"// ";padding:0 8px}@media (max-width:768px){#mainimage{height:300px;background-position:50%}}ul.projectlist{list-style-type:square;max-width:600px;margin-top:50px}ul.projectlist a{color:var(--menu-color)}ul.projectlist p{font-weight:300}ul.projectlist h3{font-weight:700;margin-bottom:7px}ul.projectlist li{margin-bottom:30px}ul.projectlist li a:hover{color:#777}.dropdown .dropbtn{cursor:pointer}.dropdown-content{display:none;position:absolute;background-color:var(--dropdown-bg);min-width:105px;box-shadow:0 8px 16px 0 rgba(0,0,0,.2);z-index:1}.dropdown-content a{color:var(--dropdown-text);padding:12px 16px;text-decoration:none;text-align:center;display:block}.dropdown-content a:hover{background-color:var(--dropdown-hover)}.dropdown:hover .dropdown-content{display:block}.skill-list{display:flex;flex-direction:column;margin:20px}.skill-item-container-one{margin-top:50px}.skill-item-container,.skill-item-container-one{display:flex;align-items:center;margin-bottom:20px}.skill-item-container-end{display:flex;align-items:center;margin-bottom:60px}.skill-key,.skill-key-left{font-weight:700;margin-right:20px;min-width:200px;flex-shrink:0}.skill-key-left{margin-left:20px}.skill-value{display:flex;flex-wrap:wrap}.skill-item{display:inline-block;background-color:var(--skill-item-bg);color:var(--skill-item-color);border:none;border-radius:20px;padding:10px 20px;font-size:16px;text-align:center;text-decoration:none;margin:5px;cursor:pointer;box-shadow:0 2px 5px rgba(0,0,0,.15);transition:background-color .3s ease}.skill-item:hover{background-color:var(--skill-item-hover)}.content{margin:100px 0}#photos{text-align:center}#photos>div{font-size:14px;line-height:1.4;color:var(--photos-caption);letter-spacing:0;margin:0 auto 50px;text-align:center}#photos img,#photos>div{max-width:600px;display:block}#photos img{margin:0 auto 10px}img.grayscale{-moz-filter:grayscale(100%);filter:grayscale(100%)}#quote{margin:0 auto;text-align:center}blockquote{margin:1.5em 10px;padding:.5em 10px;quotes:"\201C""\201D""\2018""\2019"}blockquote:before{color:var(--blockquote-color);content:open-quote;font-size:4em;line-height:.1em;margin-right:.25em;vertical-align:-.4em}blockquote p{display:inline}.container{max-width:850px;margin-right:auto;padding-left:15px;padding-right:15px;margin-left:auto}#logo{float:left;font-size:20px;margin-top:7px;margin-right:20px}#logo a{color:inherit;text-decoration:none}ul.menu{text-align:right}.theme-toggle-btn{background:none;border:none;cursor:pointer;padding:0 7px 0 0;vertical-align:middle;transition:transform .15s ease}.theme-toggle-btn img{width:25px;height:25px;object-fit:contain;vertical-align:middle;display:inline-block}.theme-toggle-btn:hover{transform:scale(1.2)}.theme-toggle-corner{position:fixed;bottom:24px;right:24px;background:none;border:none;cursor:pointer;padding:8px;line-height:1;z-index:1000;border-radius:50%;transition:transform .15s ease,opacity .15s ease;opacity:.7}.theme-toggle-corner img{width:50px;height:50px;object-fit:contain;display:block}.theme-toggle-corner:hover{transform:scale(1.15);opacity:1}#hero{margin-top:15vh}#hero h1{font-size:46px}#hero h2{font-weight:300;font-size:24px;line-height:1.4;color:var(--hero-subtitle)}.quick-stats{display:flex;gap:40px;margin:30px 0;justify-content:flex-start}.stat-item{display:flex;flex-direction:column;align-items:flex-start}.stat-item strong{font-size:2rem;font-weight:700;color:var(--stat-number);line-height:1}.stat-item span{font-size:.85rem;color:var(--stat-label);margin-top:5px}.project-link{padding:2px 6px;border-bottom:2px solid var(--project-border);text-decoration:none;color:inherit;font-weight:500}.project-link:hover{border-bottom-color:var(--project-border-hover)}.project-link img{width:18px;margin-right:6px}.project-link:hover img{filter:grayscale(0)}ul#homepage-projects{list-style-type:square}ul#homepage-projects li{font-size:15px}ul#homepage-projects>li{margin-top:30px}ul#homepage-projects>li ul{padding-left:10px}ul#homepage-projects>li ul li{margin-top:15px}.badge{display:inline-block;text-decoration:none;padding:0 3px;filter:saturate(.8)}.badge:hover{filter:saturate(1)}.badge svg{width:16px}.badge span{font-size:12px;font-weight:700;vertical-align:top}.badge.hn{color:#f0652f;fill:#f0652f}.badge.ph{color:#da552f;fill:#da552f}.blog{color:var(--blog-color)}.blog h1{color:var(--blog-h1);font-weight:800;font-size:2.25em;margin-top:50px;margin-bottom:.8888889em;line-height:1.1111111}.blog h3{font-size:1.25em}.blog h3,.blog h4{margin-top:1.6em;margin-bottom:.6em;line-height:1.6;font-weight:600}.blog h4{font-size:1.2em}.blog img{max-width:100%;margin-top:1.6em;margin-bottom:1.6em}.blog .meta{margin-bottom:3rem}.blog .meta .date{color:var(--blog-date)}.blog .meta .link-back{float:right}.blog .list-item{margin:40px 0;max-width:540px}.blog .list-item a{color:unset;text-decoration:none}.blog .list-item .desc{margin-bottom:.5em;margin-top:0;font-size:1rem;line-height:1.75}.blog .list-item .date{font-size:.875rem;color:var(--blog-date)}.blog .list-item .read-more-link{margin-left:.25rem}.blog .list-item .read-more-link,.blog .subscribe-text a{color:var(--blog-date);text-decoration:underline}.github-issues{margin-top:50px;padding-top:20px;border-top:1px solid var(--github-border)}.github-issues .btn-add-comment{background-color:var(--github-btn-bg);border:.1rem solid var(--github-btn-border);border-radius:.4rem;color:var(--github-btn-color);cursor:pointer;display:inline-block;font-size:.7rem;font-weight:700;height:2.8rem;letter-spacing:.1rem;line-height:2.8rem;padding:0 2rem;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}.github-issues .comment{margin:10px 20px;padding:30px 0;border-bottom:1px solid var(--github-border)}.github-issues .comment-header{font-size:1.25em;font-weight:600;margin-bottom:.5em}.github-issues .comment-header-date{font-size:.875rem;color:var(--blog-date)}.github-issues .comment-header-info{display:inline-block;vertical-align:top;margin-left:5px}.github-issues .comment-header-info a{color:inherit;text-decoration:none}.github-issues .comment-header img{width:40px;border-radius:50%;margin-right:5px}.github-issues .comment-body-text{font-size:1rem;line-height:1.75}.github-issues .comment-body-text img{max-width:100%}