.page{max-width:900px;margin:0 auto;padding:2rem}.page nav{margin-bottom:2rem}.page nav a{color:inherit;text-decoration:none;font-weight:300;transition:opacity .2s}.page nav a:hover{opacity:.6}.page main{line-height:1.6}.page h1{font-size:2rem;font-weight:300;margin-bottom:1.5rem}.blog-index{display:flex;flex-direction:column;gap:2rem}.blog-year-group{display:flex;gap:2rem;align-items:baseline}.blog-year{font-size:1.5rem;font-weight:300;min-width:5rem;flex-shrink:0;margin:0}.blog-year-posts{flex:1;display:flex;flex-direction:column;gap:1rem}.blog-preview{display:flex;align-items:baseline;gap:.5rem;font-size:1.1rem;font-weight:300}.blog-preview a{color:inherit;text-decoration:none;white-space:nowrap}.blog-preview a:hover{opacity:.6}.blog-dots{flex:1;border-bottom:1px dotted rgba(0,0,0,.3);margin:0 .5rem;min-width:2rem}.blog-preview time{font-size:1.1rem;opacity:.75;white-space:nowrap}@media(prefers-color-scheme:dark){.blog-dots{border-bottom-color:#ffffff4d}}.blog-post h1{font-size:2rem;font-weight:300;margin-bottom:.75rem}.post-content{line-height:1.7}.post-content p{margin-bottom:1rem}.post-content h2{font-size:1.5rem;font-weight:400;margin-top:2rem;margin-bottom:1rem}.post-content h3{font-size:1.25rem;font-weight:400;margin-top:1.5rem;margin-bottom:.75rem}.post-content ul,.post-content ol{margin-bottom:1rem;padding-left:2rem}.post-content li{margin-bottom:.5rem}.post-content a{font-weight:600;text-decoration:underline;text-underline-offset:2px;color:#000}.post-content a:visited{color:#888}.post-content a:before{content:"";display:inline-block;width:.75em;height:.75em;margin-right:.25em;vertical-align:baseline;background-color:currentColor;mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71'/%3E%3Cpath d='M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71'/%3E%3C/svg%3E");mask-size:contain;mask-repeat:no-repeat;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71'/%3E%3Cpath d='M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71'/%3E%3C/svg%3E");-webkit-mask-size:contain;-webkit-mask-repeat:no-repeat}@media(prefers-color-scheme:dark){.post-content a{color:#fff}.post-content a:visited{color:#888}}.post-content blockquote{margin:1.5rem 0;padding:.75rem 1.5rem;border-left:3px solid rgba(0,0,0,.2);background-color:#00000008;font-style:italic}.post-content blockquote p{margin:.5rem 0}.post-content blockquote p:first-child{margin-top:0}.post-content blockquote p:last-child{margin-bottom:0}.post-content code{font-family:SF Mono,Monaco,Inconsolata,Fira Mono,Droid Sans Mono,Source Code Pro,monospace;font-size:.95em;padding:.2em .4em;background-color:#0000000f;border-radius:3px;border:1px solid rgba(0,0,0,.1)}.post-content pre{font-family:SF Mono,Monaco,Inconsolata,Fira Mono,Droid Sans Mono,Source Code Pro,monospace;font-size:.9em;padding:1rem;background-color:#0000000f;border-radius:4px;border:1px solid rgba(0,0,0,.1);overflow-x:auto;margin:1.5rem 0}.post-content pre code{padding:0;background-color:transparent;border:none;font-size:1em}.post-content table{width:100%;border-collapse:collapse;margin:1.5rem 0;font-size:.95rem}.post-content th,.post-content td{padding:.4rem .75rem;text-align:left;border:1px solid rgba(0,0,0,.1)}.post-content th{font-weight:600;background-color:#0000000d}.post-content tr:nth-child(2n){background-color:#00000005}@media(prefers-color-scheme:dark){.post-content code,.post-content pre{background-color:#ffffff0f;border-color:#ffffff1a}.post-content th,.post-content td{border-color:#ffffff1a}.post-content th{background-color:#ffffff0d}.post-content tr:nth-child(2n){background-color:#ffffff05}.post-content blockquote{border-left-color:#fff3;background-color:#ffffff08}}.post-content p:has(>img){position:relative;display:inline-block;width:100%}@keyframes subtle-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.post-content p:has(>img):after{content:"Hover for color";position:absolute;bottom:2.25rem;right:.75rem;font-size:.75rem;font-weight:300;letter-spacing:.04em;color:#000000e6;background:#ffffffd9;padding:.25rem .5rem;border-radius:2px;pointer-events:none;opacity:1;transition:opacity .3s ease;animation:subtle-bounce 2s ease-in-out infinite}.post-content p:has(>img):hover:after{opacity:0;animation:none}.post-content img{max-width:100%;height:auto;display:block;margin:1.5rem auto;border-radius:2px;border:1px solid rgba(0,0,0,.1);filter:grayscale(100%);opacity:.88;transition:filter .3s ease,opacity .3s ease}.post-content img:hover{filter:grayscale(0%);opacity:1}@media(prefers-color-scheme:dark){.post-content img{border-color:#ffffff1a}.post-content p:has(>img):after{color:#ffffffe6;background:#000000e6}}.resume-content{line-height:1.7;font-weight:300}.resume-content p{margin-bottom:1rem}.resume-content h1{font-size:2rem;font-weight:400;margin-bottom:1.5rem}.resume-content h2{font-size:1.5rem;font-weight:400;margin-top:2rem;margin-bottom:1rem}.resume-content strong{font-weight:400}.resume-content ul{list-style-type:none;padding-left:0}.resume-content li{margin-bottom:.5rem;padding-left:1rem;position:relative}.resume-content li:before{content:"•";position:absolute;left:0;opacity:.5}@media(prefers-color-scheme:dark){.resume-content{color:#ffffffe6}}.resume-page{display:flex;flex-direction:column;gap:1rem}.resume-summary{font-size:1.1rem;font-weight:300;line-height:1.6;margin-bottom:1rem;opacity:.95}.resume-section{margin-bottom:0}.resume-items{display:flex;flex-direction:column;gap:1rem}.resume-item{padding:1rem;border:1px solid rgba(0,0,0,.1);border-radius:4px;transition:border-color .2s ease}.resume-item:hover{border-color:#0003}.resume-item-header{margin-bottom:.75rem}.resume-item-title{font-size:1rem;font-weight:400;margin:0 0 .25rem}.resume-item-additional{font-size:.9rem;font-weight:300;opacity:.9;margin:.25rem 0}.resume-item-subtitle{font-size:.9rem;font-weight:300;opacity:.85;font-style:italic}.resume-item-content{font-size:.9rem;font-weight:300;line-height:1.6}.resume-item-content ul{list-style-type:none;padding-left:0;margin:0}.resume-item-content li{margin-bottom:.5rem;padding-left:1rem;position:relative;opacity:.9}.resume-item-content li:before{content:"•";position:absolute;left:0;opacity:.5}.resume-item-content p{margin:.5rem 0}.resume-item-content strong{font-weight:400}@media(prefers-color-scheme:dark){.resume-item{border-color:#ffffff1a}.resume-item:hover{border-color:#fff3}}.resume-item-collapsible{cursor:pointer;transition:border-color .2s ease}.resume-item-header-collapsible{display:flex;align-items:flex-start;gap:1rem}.resume-item-info{flex:1}.caret{flex-shrink:0;margin-top:.15rem;opacity:.7;transition:transform .2s ease,opacity .2s ease}.caret-up{transform:rotate(180deg)}.caret-down{transform:rotate(0)}.resume-item-collapsible:hover .caret{opacity:1}.resume-item-content-expanded{margin-top:.75rem}.resume-item-with-logo{display:flex;align-items:flex-start;gap:1rem}.resume-item-logo{flex-shrink:0;width:48px;height:48px;display:flex;align-items:center;justify-content:center}.resume-item-logo img{width:100%;height:100%;object-fit:contain;filter:grayscale(100%);opacity:.8}.upenn-logo{overflow:hidden}.upenn-logo img{transform:scale(1.8);object-fit:cover}.resume-item-content-wrapper{flex:1;min-width:0}@media(prefers-color-scheme:dark){.resume-item-logo img{opacity:.7}}.blog-tags{display:inline-flex;gap:.5rem;margin-left:.5rem}.blog-tag{font-size:.85rem;opacity:.75;font-weight:300;white-space:nowrap}.post-meta{display:flex;align-items:center;gap:1rem;margin-bottom:2.5rem;flex-wrap:wrap;padding-bottom:1.5rem;border-bottom:1px solid rgba(0,0,0,.1)}.post-meta time{font-size:.9rem;opacity:.8;font-weight:300}.post-tags{display:flex;gap:.5rem}.post-tag{font-size:.85rem;opacity:.75;padding:.2rem .6rem;background-color:#0000000a;border:1px solid rgba(0,0,0,.08);border-radius:3px;font-weight:300;transition:opacity .2s ease}.post-tag:hover{opacity:.9}@media(prefers-color-scheme:dark){.post-meta{border-bottom-color:#ffffff1a}.post-tag{background-color:#ffffff0a;border-color:#ffffff14}}
