@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,300;0,400;0,500;1,300;1,400&display=swap";:root{--color-bg: #f5f0eb;--color-text: #1a1a1a;--color-text-secondary: #5c5550;--color-text-muted: #9a918a;--color-accent: #c4917c;--color-border: rgba(26, 26, 26, .12);--color-border-light: rgba(26, 26, 26, .06);--font: "IBM Plex Mono", "SF Mono", monospace;--size-xs: 10px;--size-sm: 12px;--size-base: 14px;--size-lg: 16px;--size-xl: 20px;--size-2xl: 28px;--size-3xl: clamp(36px, 6vw, 52px);--size-hero: clamp(48px, 8vw, 72px);--transition: .2s ease}*{margin:0;padding:0;box-sizing:border-box}html{overflow:hidden;height:100%}body{font-family:var(--font);background-color:var(--color-bg);color:var(--color-text);line-height:1.7;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:var(--size-base);height:100%;overflow:hidden;text-transform:lowercase}#root{height:100%;overflow:hidden;position:relative}#root:before{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;background:radial-gradient(ellipse 600px 500px at 15% 20%,rgba(196,145,124,.12),transparent),radial-gradient(ellipse 500px 400px at 80% 70%,rgba(169,180,156,.1),transparent),radial-gradient(ellipse 400px 350px at 50% 50%,rgba(196,172,145,.08),transparent);animation:bgDrift 20s ease-in-out infinite alternate}#root:after{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;background:radial-gradient(ellipse 450px 500px at 70% 15%,rgba(196,145,124,.09),transparent),radial-gradient(ellipse 550px 450px at 25% 80%,rgba(156,169,180,.08),transparent);animation:bgDrift2 25s ease-in-out infinite alternate}@keyframes bgDrift{0%{transform:translate(0) scale(1)}33%{transform:translate(30px,-20px) scale(1.02)}66%{transform:translate(-20px,15px) scale(.98)}to{transform:translate(15px,-10px) scale(1.01)}}@keyframes bgDrift2{0%{transform:translate(0) scale(1)}50%{transform:translate(-25px,20px) scale(1.03)}to{transform:translate(20px,-15px) scale(.97)}}::-moz-selection{background:var(--color-accent);color:var(--color-bg)}::selection{background:var(--color-accent);color:var(--color-bg)}h1,h2,h3,h4,h5,h6{font-family:var(--font);font-weight:400;line-height:1.15;color:var(--color-text);text-transform:lowercase}p{font-weight:300;color:var(--color-text-secondary);line-height:1.8}a{color:var(--color-text);text-decoration:none;transition:color var(--transition),opacity var(--transition)}a:hover{color:var(--color-accent)}button{cursor:pointer;font-family:inherit;border:none;outline:none;font-weight:400;background:transparent;text-transform:lowercase}:focus-visible{outline:1px solid var(--color-accent);outline-offset:3px}img{display:block}.nav{position:fixed;top:0;left:0;right:0;z-index:100;padding:20px 32px;display:flex;justify-content:space-between;align-items:center;background:#f5f0ebcc;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.nav-tabs{display:flex;gap:28px;align-items:center}.nav-tab{font-size:var(--size-sm);color:var(--color-text-muted);cursor:pointer;padding:2px 0;position:relative;transition:color var(--transition);letter-spacing:.02em;background:none;border:none;font-family:var(--font);text-transform:lowercase}.nav-tab:after{content:"";position:absolute;bottom:-2px;left:0;width:0;height:1px;background:var(--color-accent);transition:width var(--transition)}.nav-tab:hover{color:var(--color-text)}.nav-tab:hover:after{width:100%}.nav-tab.active{color:var(--color-text)}.nav-tab.active:after{width:100%;background:var(--color-text)}.nav-name{font-size:var(--size-sm);font-weight:500;color:var(--color-text);letter-spacing:.02em}.main-content{height:100vh;padding-top:60px;overflow:hidden;position:relative;z-index:1}.tab-content{height:calc(100vh - 60px);overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--color-border) transparent}.tab-content::-webkit-scrollbar{width:4px}.tab-content::-webkit-scrollbar-track{background:transparent}.tab-content::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:2px}.page{max-width:720px;margin:0 auto;padding:48px 32px 80px}.home-name{font-size:var(--size-hero);font-weight:400;line-height:1.05;margin-bottom:16px;color:var(--color-text);letter-spacing:-.03em}.home-tagline{font-size:var(--size-base);color:var(--color-text-muted);font-weight:300;margin-bottom:40px;line-height:1.6}.home-rule{width:40px;height:1px;background:var(--color-accent);border:none;margin:32px 0}.now-section{margin-top:0}.now-label{font-size:var(--size-sm);color:var(--color-text-muted);margin-bottom:12px;font-weight:400;letter-spacing:.04em}.now-items{display:flex;flex-direction:column;gap:6px}.now-item{font-size:var(--size-sm);color:var(--color-text-secondary);font-weight:300;line-height:1.7}.spotify-now-playing{margin-top:4px}.spotify-link{display:inline-flex;align-items:center;gap:8px;font-size:var(--size-sm);color:var(--color-text-secondary);font-weight:300;line-height:1.7;text-decoration:none;transition:all var(--transition);position:relative}.spotify-link:hover{color:var(--color-text)}.spotify-link:hover .spotify-icon{animation:bounce .6s ease-in-out infinite}.spotify-icon{--c: var(--color-accent);width:1px;height:1px;position:relative;display:inline-block;flex-shrink:0;margin-right:13px;margin-bottom:8px;image-rendering:pixelated;animation:pixelPulse 2s ease-in-out infinite;box-shadow:4px 0 0 var(--c),5px 0 0 var(--c),6px 0 0 var(--c),7px 0 0 var(--c),8px 0 0 var(--c),9px 0 0 var(--c),3px 1px 0 var(--c),10px 1px 0 var(--c),2px 2px 0 var(--c),11px 2px 0 var(--c),2px 3px 0 var(--c),11px 3px 0 var(--c),1px 4px 0 var(--c),12px 4px 0 var(--c),1px 5px 0 var(--c),12px 5px 0 var(--c),1px 6px 0 var(--c),12px 6px 0 var(--c),0 7px 0 var(--c),1px 7px 0 var(--c),2px 7px 0 var(--c),0 8px 0 var(--c),1px 8px 0 var(--c),2px 8px 0 var(--c),0 9px 0 var(--c),1px 9px 0 var(--c),2px 9px 0 var(--c),0 10px 0 var(--c),1px 10px 0 var(--c),2px 10px 0 var(--c),11px 7px 0 var(--c),12px 7px 0 var(--c),13px 7px 0 var(--c),11px 8px 0 var(--c),12px 8px 0 var(--c),13px 8px 0 var(--c),11px 9px 0 var(--c),12px 9px 0 var(--c),13px 9px 0 var(--c),11px 10px 0 var(--c),12px 10px 0 var(--c),13px 10px 0 var(--c)}.spotify-icon-muted{--c: var(--color-text-muted);width:1px;height:1px;position:relative;display:inline-block;flex-shrink:0;margin-right:13px;margin-bottom:8px;opacity:.6;image-rendering:pixelated;transition:opacity var(--transition);box-shadow:4px 0 0 var(--c),5px 0 0 var(--c),6px 0 0 var(--c),7px 0 0 var(--c),8px 0 0 var(--c),9px 0 0 var(--c),3px 1px 0 var(--c),10px 1px 0 var(--c),2px 2px 0 var(--c),11px 2px 0 var(--c),2px 3px 0 var(--c),11px 3px 0 var(--c),1px 4px 0 var(--c),12px 4px 0 var(--c),1px 5px 0 var(--c),12px 5px 0 var(--c),1px 6px 0 var(--c),12px 6px 0 var(--c),0 7px 0 var(--c),1px 7px 0 var(--c),2px 7px 0 var(--c),0 8px 0 var(--c),1px 8px 0 var(--c),2px 8px 0 var(--c),0 9px 0 var(--c),1px 9px 0 var(--c),2px 9px 0 var(--c),0 10px 0 var(--c),1px 10px 0 var(--c),2px 10px 0 var(--c),11px 7px 0 var(--c),12px 7px 0 var(--c),13px 7px 0 var(--c),11px 8px 0 var(--c),12px 8px 0 var(--c),13px 8px 0 var(--c),11px 9px 0 var(--c),12px 9px 0 var(--c),13px 9px 0 var(--c),11px 10px 0 var(--c),12px 10px 0 var(--c),13px 10px 0 var(--c)}.spotify-link:hover .spotify-icon-muted{opacity:1}@keyframes pixelPulse{0%,to{opacity:.7;transform:translateY(0)}50%{opacity:1;transform:translateY(-1px)}}@keyframes bounce{0%,to{transform:translateY(0)}25%{transform:translateY(-3px)}50%{transform:translateY(0)}75%{transform:translateY(-1px)}}.spotify-text{display:inline}.spotify-idle{color:var(--color-text-muted)}.spotify-idle:hover{color:var(--color-text-secondary)}.home-bio{font-size:var(--size-base);color:var(--color-text-secondary);font-weight:300;line-height:1.8;margin-bottom:12px}.home-links{display:flex;gap:20px;margin-top:32px}.home-link{font-size:var(--size-sm);color:var(--color-text-muted);position:relative;padding-bottom:2px}.home-link:after{content:"";position:absolute;bottom:0;left:0;width:0;height:1px;background:var(--color-accent);transition:width var(--transition)}.home-link:hover{color:var(--color-text)}.home-link:hover:after{width:100%}.section-header{font-size:var(--size-2xl);margin-bottom:40px;font-weight:400;letter-spacing:-.02em}.work-list{display:flex;flex-direction:column}.work-entry{padding:24px 0;border-top:1px solid var(--color-border)}.work-entry:last-child{border-bottom:1px solid var(--color-border)}.work-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:4px;gap:16px;flex-wrap:wrap}.work-company{font-size:var(--size-lg);font-weight:400;color:var(--color-text)}.work-role-date{font-size:var(--size-sm);color:var(--color-text-muted);font-weight:300;text-align:right;flex-shrink:0}.work-description{margin-top:8px;display:flex;flex-direction:column;gap:3px}.work-highlight{font-size:var(--size-sm);color:var(--color-text-secondary);font-weight:300;line-height:1.7}.projects-list{display:flex;flex-direction:column}.project-entry{padding:20px 0;border-top:1px solid var(--color-border)}.project-entry:last-child{border-bottom:1px solid var(--color-border)}.project-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:2px;gap:12px}.project-title{font-size:var(--size-lg);font-weight:400;color:var(--color-text)}.project-year{font-size:var(--size-sm);color:var(--color-text-muted);font-weight:300;flex-shrink:0}.project-desc{font-size:var(--size-sm);color:var(--color-text-secondary);font-weight:300;line-height:1.7;margin-top:4px}.project-links{display:flex;gap:14px;margin-top:8px}.project-link{font-size:var(--size-xs);color:var(--color-text-muted);position:relative;padding-bottom:1px}.project-link:after{content:"";position:absolute;bottom:0;left:0;width:0;height:1px;background:var(--color-accent);transition:width var(--transition)}.project-link:hover{color:var(--color-text)}.project-link:hover:after{width:100%}.contact-note{font-size:var(--size-base);color:var(--color-text-muted);font-weight:300;margin-bottom:36px;line-height:1.7}.contact-links{display:flex;flex-direction:column;gap:14px}.contact-item{display:flex;align-items:baseline;gap:16px}.contact-label{font-size:var(--size-sm);color:var(--color-text-muted);width:70px;flex-shrink:0;font-weight:300}.contact-value{font-size:var(--size-base);color:var(--color-text);position:relative;padding-bottom:1px}.contact-value:after{content:"";position:absolute;bottom:0;left:0;width:0;height:1px;background:var(--color-accent);transition:width var(--transition)}.contact-value:hover{color:var(--color-accent)}.contact-value:hover:after{width:100%}.contact-footer{margin-top:60px;padding-top:20px;border-top:1px solid var(--color-border-light)}.contact-footer-text{font-size:var(--size-xs);color:var(--color-text-muted);font-weight:300}.writing-list{display:flex;flex-direction:column}.writing-entry{padding:18px 0;border-top:1px solid var(--color-border);transition:opacity var(--transition)}.writing-entry:hover{opacity:.7}.writing-entry:last-child{border-bottom:1px solid var(--color-border)}.writing-title{font-size:var(--size-lg);font-weight:400;color:var(--color-text);margin-bottom:4px}.writing-meta{font-size:var(--size-sm);color:var(--color-text-muted);font-weight:300}.pokemon-sprite{image-rendering:pixelated;image-rendering:crisp-edges;width:64px;height:64px;-o-object-fit:contain;object-fit:contain;animation:pokemonBounce 3.6s steps(3,end) infinite;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;mix-blend-mode:multiply;flex-shrink:0}.pokemon-sprite.delay-1{animation-delay:.6s}.pokemon-sprite.delay-2{animation-delay:1.3s}.pokemon-sprite.delay-3{animation-delay:2s}@keyframes pokemonBounce{0%{transform:translateY(0)}33%{transform:translateY(-7px)}66%{transform:translateY(-3px)}to{transform:translateY(0)}}.page-with-sprites{display:flex;gap:24px;align-items:flex-start}.page-content{flex:1;min-width:0}.sprite-col{display:flex;flex-direction:column;gap:32px;padding-top:8px;flex-shrink:0}@media (max-width: 768px){.sprite-col{display:none}.nav{padding:16px 20px}.nav-tabs{gap:16px}.nav-tab{font-size:var(--size-xs)}.page{padding:32px 20px 64px}.home-name{font-size:clamp(36px,10vw,52px)}.home-hero{flex-direction:column-reverse;gap:20px}.home-photo{width:140px!important;height:170px!important}.work-top{flex-direction:column;gap:2px}.work-role-date{text-align:left}.project-top{flex-direction:column;gap:2px}.home-links{flex-wrap:wrap;gap:14px}.contact-item{flex-direction:column;gap:4px}.contact-label{width:auto}}@media (max-width: 480px){.nav-tabs{gap:10px}.nav-name{display:none}.home-name{font-size:clamp(28px,10vw,40px)}.home-photo{width:120px!important;height:150px!important}}
