@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:300;src:url(../media/ibm-plex-mono-latin-300-normal.54ceade5.woff2)format("woff2"),url(../media/ibm-plex-mono-latin-300-normal.98ac1bf4.woff)format("woff")}
@font-face{font-family:IBM Plex Mono;font-style:italic;font-display:swap;font-weight:300;src:url(../media/ibm-plex-mono-latin-300-italic.967585d5.woff2)format("woff2"),url(../media/ibm-plex-mono-latin-300-italic.e173cadf.woff)format("woff")}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/ibm-plex-mono-latin-400-normal.e1d6b3bf.woff2)format("woff2"),url(../media/ibm-plex-mono-latin-400-normal.73d9f091.woff)format("woff")}
@font-face{font-family:IBM Plex Mono;font-style:italic;font-display:swap;font-weight:400;src:url(../media/ibm-plex-mono-latin-400-italic.0d7d6882.woff2)format("woff2"),url(../media/ibm-plex-mono-latin-400-italic.2c648a47.woff)format("woff")}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(../media/ibm-plex-mono-latin-500-normal.6c2181b8.woff2)format("woff2"),url(../media/ibm-plex-mono-latin-500-normal.8206b19e.woff)format("woff")}
@font-face{font-family:IBM Plex Mono;font-style:italic;font-display:swap;font-weight:500;src:url(../media/ibm-plex-mono-latin-500-italic.7e13f8be.woff2)format("woff2"),url(../media/ibm-plex-mono-latin-500-italic.fba63aab.woff)format("woff")}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(../media/ibm-plex-mono-latin-600-normal.4050d131.woff2)format("woff2"),url(../media/ibm-plex-mono-latin-600-normal.c45bc78a.woff)format("woff")}
@font-face{font-family:IBM Plex Mono;font-style:italic;font-display:swap;font-weight:600;src:url(../media/ibm-plex-mono-latin-600-italic.e6dba987.woff2)format("woff2"),url(../media/ibm-plex-mono-latin-600-italic.cc366e49.woff)format("woff")}
:root{--bg:#fafaf9;--text:#1c1917;--text-secondary:#78716c;--border:#d6d3d1;--font-ibm-plex-mono:"IBM Plex Mono";--nav-hover:#57534e}[data-theme=dark]{--bg:#0c0a09;--text:#e7e5e4;--text-secondary:#a8a29e;--border:#292524;--nav-hover:#d6d3d1}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0c0a09;--text:#e7e5e4;--text-secondary:#a8a29e;--border:#292524;--nav-hover:#d6d3d1}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-behavior:smooth}body{background-color:var(--bg);color:var(--text);font-family:var(--font-ibm-plex-mono),monospace;min-height:100vh;font-size:14px;font-weight:300;line-height:1.7;transition:background-color .3s,color .3s}.page-container{opacity:0;max-width:640px;margin:0 auto;padding:80px 24px 120px;animation:.6s forwards fadeIn}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.chat-messages a{color:#a8d4ff;text-decoration:underline}.header{justify-content:space-between;align-items:center;margin-bottom:48px;display:flex}.site-title{cursor:default;font-weight:400}.theme-toggle{border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:4px;padding:4px 8px;font-family:inherit;font-size:12px;transition:all .2s}.theme-toggle:hover{border-color:var(--text);color:var(--text)}.nav{gap:24px;margin-bottom:80px;display:flex}.nav-link{color:var(--text);text-decoration:none;transition:color .2s;position:relative}.nav-link:hover{color:var(--nav-hover)}.nav-link:after{content:"";background:var(--text);opacity:0;width:100%;height:2px;position:absolute;bottom:-2px;left:0}.nav-link:first-child:after{animation:10s step-end 1s infinite terminalCursor}.nav-link:nth-child(2):after{animation:10s step-end 3s infinite terminalCursor}.nav-link:nth-child(3):after{animation:10s step-end 5s infinite terminalCursor}.nav-link:nth-child(4):after{animation:10s step-end 7s infinite terminalCursor}.nav-link:nth-child(5):after{animation:10s step-end 9s infinite terminalCursor}@keyframes terminalCursor{0%,16%{opacity:1}8%,20%,to{opacity:0}4%,12%{opacity:0}}.section{margin-bottom:48px;scroll-margin-top:40px}.section-title{text-transform:uppercase;letter-spacing:.1em;color:var(--text-secondary);margin-bottom:24px;font-size:12px;display:block}.footer{border-top:1px solid var(--border);color:var(--text-secondary);padding-top:32px;font-size:12px}.work-entry,.project-entry{border-bottom:1px solid var(--border);padding:24px 0}.work-entry:last-child,.project-entry:last-child{border-bottom:none}.work-header,.project-header{justify-content:space-between;align-items:baseline;margin-bottom:8px;display:flex}.company-name,.project-name{font-size:14px;font-weight:500}.work-period{color:var(--text-secondary);font-size:12px}.work-description,.project-description{font-size:13px;font-weight:300;line-height:1.6}.project-description{color:var(--text-secondary);margin-bottom:12px}.project-entry-expandable{cursor:pointer;-webkit-user-select:none;user-select:none}.project-expand-icon{color:var(--text-secondary);font-size:14px;transition:transform .2s}.project-expand-icon.expanded{transform:rotate(45deg)}.project-view-more{color:var(--text-secondary);margin-top:4px;font-size:12px;display:block}.project-details{cursor:default;-webkit-user-select:text;user-select:text;margin-top:12px}.project-media-zoomable{cursor:zoom-in}.project-details-text{color:var(--text-secondary);margin-bottom:12px;font-size:13px;font-weight:300;line-height:1.6}.project-link{color:var(--text);margin-top:8px;font-size:13px;text-decoration:none;transition:opacity .2s;display:inline-block}.project-link:hover{opacity:.7}.project-media{border:1px solid var(--border);border-radius:8px;max-width:100%;margin-top:16px;overflow:hidden}[data-theme=dark] .project-media{box-shadow:0 4px 20px #0006}.project-media img,.project-media video{width:100%;height:auto;display:block}.project-media-grid{grid-template-columns:1fr 1fr;gap:12px;margin-top:16px;display:grid}.writing-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:baseline;padding:12px 0;display:flex}.writing-row:last-child{border-bottom:none}.writing-title{color:var(--text);font-size:14px;text-decoration:none;transition:opacity .2s}.writing-title:hover{opacity:.6}.writing-source{color:var(--text-secondary);font-size:12px}.contact-row{gap:24px;margin-top:24px;display:flex}.contact-link{color:var(--text-secondary);font-size:13px;text-decoration:none;transition:color .2s}.contact-link:hover{color:var(--text)}.bio-intro{align-items:flex-start;gap:24px;display:flex}.bio-text{flex:1}.profile-photo{border:1px solid var(--border);flex-shrink:0;width:180px;height:auto}@media (max-width:480px){.bio-intro{flex-direction:column-reverse}.profile-photo{width:140px}}.about-footer{color:var(--text-secondary);margin-top:32px;font-size:12px}.photo-grid{grid-template-columns:1fr;gap:32px;display:grid}.photo-item{cursor:pointer}.photo-item img{border:1px solid var(--border);border-radius:4px;width:100%;box-shadow:0 2px 8px #00000014}[data-theme=dark] .photo-item img{box-shadow:0 2px 8px #0000004d}.photo-caption{color:var(--text-secondary);text-underline-offset:2px;margin-top:4px;font-size:13px;text-decoration:underline}.lightbox-overlay{z-index:1000;background:#000000e6;justify-content:center;align-items:center;padding:40px;display:flex;position:fixed;inset:0}.lightbox-content{flex-direction:column;align-items:center;max-width:90vw;max-height:90vh;display:flex}.lightbox-content img{object-fit:contain;border-radius:4px;max-width:100%;max-height:80vh}.lightbox-caption{color:#fff;text-underline-offset:2px;margin-top:16px;font-size:14px;text-decoration:underline}.text-secondary{color:var(--text-secondary)}::selection{background-color:var(--text);color:var(--bg)}@media (max-width:640px){.page-container{padding-top:40px;padding-bottom:80px}.header{margin-bottom:32px}.nav{gap:16px;margin-bottom:60px}.section{margin-bottom:40px}}@media (max-width:480px){.page-container{padding-left:16px;padding-right:16px}.nav{flex-wrap:wrap;gap:12px 16px}.work-header{flex-direction:column;align-items:flex-start;gap:4px}.project-media-grid{grid-template-columns:1fr}.writing-row{flex-direction:column;align-items:flex-start;gap:4px}}
