@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&display=swap";html,body,#root{margin:0;padding:0;width:100%;min-height:100vh}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit;margin:0;padding:0}a{text-decoration:none;transition:opacity .2s ease}a:hover{opacity:.7}.portfolio-container{max-width:640px;margin:0 auto;padding:48px 0}@media (max-width: 480px){.portfolio-container{padding:32px 16px}}.header-content{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px;gap:16px}.header-name{font-size:16px;font-weight:600;margin-bottom:2px;letter-spacing:-.01em}.header-title{font-size:13px}@media (max-width: 480px){.header-name{font-size:15px}.header-title{font-size:12px}}.bio-text{font-size:13px;margin-bottom:16px}@media (max-width: 480px){.bio-text{font-size:12px;max-width:100%}}.social-links{display:flex;gap:24px;font-size:13px;flex-wrap:wrap}@media (max-width: 480px){.social-links{gap:16px;font-size:12px}}.project-section{margin-bottom:64px}.project-section:last-of-type{margin-bottom:48px}.project-title{font-size:13px;font-weight:500;margin-bottom:16px;letter-spacing:-.01em}.project-text{font-size:13px;margin-bottom:12px}.outcome-list{list-style:none;padding:0;margin:0}.outcome-list li{font-size:13px;margin-bottom:4px;position:relative;padding-left:12px}.outcome-list li:before{content:"•";position:absolute;left:0}@media (max-width: 480px){.project-section{margin-bottom:48px}.project-section:last-of-type{margin-bottom:32px}.project-title{font-size:12px;margin-bottom:12px}.project-text,.outcome-list li{font-size:12px;margin-bottom:10px}}.image-grid{margin:24px 0;height:410px}.image-grid>div{border-radius:12px;height:100%!important}.image-grid img,.image-grid video{width:100%;height:100%;object-fit:cover}@media (max-width: 480px){.image-grid{margin:16px 0;height:250px}}.theme-toggle{background:none;border-radius:50%;width:36px;height:36px;min-width:36px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}@media (max-width: 768px){.mobile-top-bar .theme-toggle{width:36px;height:36px;min-width:36px}}.side-projects-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-bottom:64px}.side-project-card{display:flex;flex-direction:column;gap:16px}.side-project-image-container{width:100%;aspect-ratio:1;border-radius:12px;overflow:hidden}.side-project-image{width:100%;height:100%;object-fit:cover;display:block}.side-project-header{display:flex;align-items:center;gap:12px;margin-bottom:4px}.side-project-title{font-size:13px;font-weight:600}.status-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:4px;font-size:11px;font-weight:500;line-height:1}.status-dot{width:6px;height:6px;border-radius:50%}.side-project-description{font-size:13px}@media (max-width: 480px){.side-projects-grid{grid-template-columns:1fr;gap:32px;margin-bottom:48px}}.about-section,.bio-container{margin-bottom:64px}.bio-image{width:140px;height:140px;border-radius:12px;object-fit:cover;margin-bottom:24px;display:block}.bio-headline{font-size:13px;font-weight:600;margin-bottom:16px}.bio-text-paragraph{font-size:13px;line-height:1.6;margin-bottom:16px;max-width:600px}@media (max-width: 480px){.bio-image{width:100px;height:100px}}.philosophy-grid{display:grid;grid-template-columns:1fr 1fr;gap:48px 24px}.philosophy-item{display:flex;flex-direction:column;gap:12px}.philosophy-icon{width:48px;height:48px;margin-bottom:4px}.philosophy-title{font-size:13px;font-weight:600}.philosophy-desc{font-size:13px;line-height:1.6}@media (max-width: 480px){.philosophy-grid{grid-template-columns:1fr;gap:32px}}.contact-section{display:flex;justify-content:space-between;align-items:flex-start;gap:32px}.contact-left{flex:1}.contact-heading{font-size:16px;font-weight:600;margin-bottom:16px;letter-spacing:-.01em}.contact-description{font-size:13px;line-height:1.6;max-width:360px}.contact-links{display:flex;flex-direction:column;align-items:flex-end;gap:8px;font-size:13px;flex-shrink:0}.footer-bar{display:flex;justify-content:space-between;align-items:center}.footer-status{display:flex;align-items:center;gap:8px;font-size:13px}.footer-location{font-size:13px}@media (max-width: 480px){.contact-section{flex-direction:column;gap:24px}.contact-links{align-items:flex-start}.footer-bar{flex-direction:column;align-items:flex-start;gap:12px}.footer-status,.footer-location{font-size:12px}}.snackbar{position:fixed;bottom:24px;left:50%;transform:translate(-50%) translateY(100px);padding:12px 24px;border-radius:12px;font-family:IBM Plex Mono,monospace;font-size:13px;font-weight:500;box-shadow:0 4px 12px #00000026;opacity:0;transition:transform .3s ease,opacity .3s ease;z-index:1000;pointer-events:none}.snackbar.visible{transform:translate(-50%) translateY(0);opacity:1}.toc-rail-nav{position:fixed;left:24px;top:64px;z-index:100;display:flex;align-items:flex-start;gap:0}.toc-rail-lines{display:flex;flex-direction:column;gap:12px;padding:16px 8px}.toc-rail-link{display:flex;align-items:center;padding:4px 0;cursor:pointer;text-decoration:none}.toc-rail-line{display:block;width:24px;height:2px;background-color:#ccc;border-radius:1px;transition:all .3s ease;transform-origin:left center}.toc-rail-line.active{background-color:#333;width:32px}.toc-rail-card{position:absolute;left:0;top:50%;transform:translateY(-50%);background:#eee;border:1px solid #DDDDDD;border-radius:12px;padding:8px 16px;display:flex;flex-direction:column;gap:0;opacity:0;pointer-events:none;transition:opacity .35s cubic-bezier(.25,.1,.25,1);white-space:nowrap;width:184px}.toc-rail-card.visible{opacity:1;pointer-events:auto}.toc-rail-card-link{font-family:IBM Plex Mono,monospace;font-size:13px;color:#666;text-decoration:none;cursor:pointer;transition:color .2s ease;height:40px;display:flex;align-items:center}.toc-rail-card-link:hover{opacity:.7}.toc-rail-nav.dark .toc-rail-line{background-color:#404040}.toc-rail-nav.dark .toc-rail-line.active{background-color:#e5e5e5}.toc-rail-nav.dark .toc-rail-card{background:#1a1a1a;border-color:#333}.toc-rail-nav.dark .toc-rail-card-link{color:#888}.toc-rail-nav.dark .toc-rail-card-link:hover{opacity:.7}.mobile-top-bar{display:none}@media (max-width: 768px){.mobile-top-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.desktop-only{display:none!important}}.toc-mobile-trigger{width:36px;height:36px;border-radius:50%;border:1px solid #ddd;background:none;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color .3s ease,border-color .3s ease}.toc-mobile-trigger.dark{border-color:#333}.toc-hamburger{display:flex;flex-direction:column;gap:5px;width:16px}.toc-hamburger span{display:block;height:2px;width:100%;background:currentColor;border-radius:1px;transition:transform .3s ease,opacity .3s ease}.toc-hamburger.open span:first-child{transform:translateY(3.5px) rotate(45deg)}.toc-hamburger.open span:last-child{transform:translateY(-3.5px) rotate(-45deg)}.toc-mobile-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000004d;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);z-index:999;opacity:0;pointer-events:none;transition:opacity .3s ease}.toc-mobile-overlay.visible{opacity:1;pointer-events:auto}.toc-mobile-menu{position:fixed;top:80px;left:16px;z-index:1000;background:#ffffffeb;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid #ddd;border-radius:12px;padding:8px 0;display:flex;flex-direction:column;opacity:0;transform:translateY(-8px) scale(.96);pointer-events:none;transition:opacity .25s ease,transform .25s ease;min-width:180px}.toc-mobile-menu.visible{opacity:1;transform:translateY(0) scale(1);pointer-events:auto}.toc-mobile-menu.dark{background:#1a1a1aeb;border-color:#333}.toc-mobile-link{font-family:IBM Plex Mono,monospace;font-size:13px;color:#666;text-decoration:none;padding:12px 20px;transition:color .2s ease,background-color .2s ease}.toc-mobile-link:hover{background:#0000000a}.toc-mobile-link.active{color:#333;font-weight:500}.toc-mobile-menu.dark .toc-mobile-link{color:#888}.toc-mobile-menu.dark .toc-mobile-link.active{color:#e5e5e5}.toc-mobile-menu.dark .toc-mobile-link:hover{background:#ffffff0d}@media (max-width: 768px){.toc-rail-nav{display:none}}
