@import"https://fonts.cdnfonts.com/css/departure-mono";@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@300;400;500;600&display=swap";:root{--bg: #0c0c0a;--bg-elevated: #131310;--text: #e8e4dc;--text-secondary: #9a9488;--text-muted: #5e594f;--accent: #c9a96e;--accent-dim: rgba(201, 169, 110, .1);--line: rgba(232, 228, 220, .06);--line-hover: rgba(232, 228, 220, .13)}[data-theme=light]{--bg: #f5f2ec;--bg-elevated: #ece8e0;--text: #1a1917;--text-secondary: #5a564e;--text-muted: #8a8478;--accent: #8b6b3e;--accent-dim: rgba(139, 107, 62, .08);--line: rgba(26, 25, 23, .08);--line-hover: rgba(26, 25, 23, .15)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:IBM Plex Mono,Departure Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14px;line-height:1.65;background:var(--bg);color:var(--text);min-height:100vh;overflow-x:hidden}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse 70% 50% at 15% 30%,rgba(201,169,110,.035),transparent 55%);pointer-events:none;z-index:0}[data-theme=light] body:before{background:radial-gradient(ellipse 70% 50% at 15% 30%,rgba(139,107,62,.05),transparent 55%)}a{color:inherit;text-decoration:none}button,input{font:inherit}::selection{background:var(--accent);color:var(--bg)}.site-header{position:sticky;top:0;z-index:100;display:flex;align-items:center;justify-content:space-between;padding:14px clamp(20px,4vw,48px);border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg) 86%,transparent);-webkit-backdrop-filter:blur(18px) saturate(1.1);backdrop-filter:blur(18px) saturate(1.1)}.site-header-name{font-family:Departure Mono,monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--text)}.site-header-links{display:flex;gap:clamp(18px,3vw,32px)}.site-header-links a{font-family:Departure Mono,monospace;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);transition:color .2s ease}.site-header-links a:hover{color:var(--accent)}.theme-toggle{font-family:Departure Mono,monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);background:transparent;border:1px solid var(--line);padding:6px 10px;cursor:pointer;transition:all .2s ease}.theme-toggle:hover{color:var(--accent);border-color:var(--line-hover)}.portfolio-layout{width:min(1100px,calc(100% - 48px));margin:0 auto;display:grid;grid-template-columns:minmax(300px,.82fr) minmax(0,1fr);gap:clamp(40px,6vw,88px);align-items:start;position:relative;z-index:1}.hero{position:sticky;top:60px;min-height:calc(100vh - 60px);display:flex;flex-direction:column;justify-content:center;gap:28px;padding:48px 0 80px;animation:fade-up .6s ease both}@keyframes fade-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.hero-kicker{font-family:Departure Mono,monospace;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted)}.hero-main{display:flex;flex-direction:column;gap:18px}.hero-photo{width:68px;height:68px;border-radius:50%;overflow:hidden;background:var(--bg-elevated);border:1px solid var(--line);transition:border-color .3s ease}.hero-photo:hover{border-color:var(--line-hover)}.hero-photo img{width:100%;height:100%;object-fit:cover;filter:grayscale(.25) contrast(1.05);transition:filter .4s ease}.hero-photo:hover img{filter:grayscale(0) contrast(1.08)}.hero-name{font-size:clamp(42px,5.5vw,68px);font-weight:500;letter-spacing:-.06em;line-height:.95;color:var(--text)}.hero-description{max-width:480px;font-size:clamp(13px,1.4vw,15px);line-height:1.7;color:var(--text-secondary)}.hero-meta{display:flex;flex-wrap:wrap;gap:6px 14px;font-family:Departure Mono,monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted)}.hero-meta span{position:relative}.hero-meta span:not(:last-child):after{content:"·";margin-left:14px;color:var(--line-hover)}.hero-links{display:flex;flex-wrap:wrap;gap:8px;padding-top:6px}.hero-links a{font-size:12px;color:var(--text-secondary);border:1px solid var(--line);padding:7px 12px;transition:all .2s ease}.hero-links a:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-dim)}main{padding:72px 0 96px}.section{padding:48px 0;scroll-margin-top:64px}.section:not(:first-child){border-top:1px solid var(--line)}.section-header{margin-bottom:24px}.section-label{font-family:Departure Mono,monospace;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent)}.experience-list,.projects-list,.blog-list,.contact-grid{display:flex;flex-direction:column}.experience-item,.project-item,.blog-item,.contact-card{padding:18px 0;transition:opacity .2s ease}.experience-item:not(:last-child),.project-item:not(:last-child),.blog-item:not(:last-child){border-bottom:1px solid var(--line)}.experience-item:hover .experience-role,.project-item:hover .project-name,.blog-item:hover .blog-title,.contact-card:hover .contact-value{color:var(--accent)}.experience-header{display:flex;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:5px}.experience-company,.experience-date{font-family:Departure Mono,monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted)}.experience-role,.project-name,.blog-title,.contact-value{font-size:clamp(15px,1.6vw,18px);font-weight:500;letter-spacing:-.02em;line-height:1.4;color:var(--text);transition:color .2s ease}.experience-description,.project-description{margin-top:5px;max-width:600px;font-size:13px;line-height:1.7;color:var(--text-secondary)}.project-item,.blog-item{display:grid;grid-template-columns:1fr auto;gap:16px;align-items:start;text-decoration:none;color:inherit}.project-info,.blog-content{min-width:0}.project-tech,.blog-meta{margin-top:6px;font-family:Departure Mono,monospace;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}.project-arrow,.blog-arrow,.contact-arrow{font-family:Departure Mono,monospace;font-size:11px;color:var(--text-muted);opacity:0;transform:translate(-4px);transition:all .2s ease;align-self:center}.project-item:hover .project-arrow,.blog-item:hover .blog-arrow,.contact-card:hover .contact-arrow{opacity:1;transform:translate(0);color:var(--accent)}.contact-grid{display:grid;grid-template-columns:1fr;gap:0}.contact-card{display:flex;align-items:center;justify-content:space-between;gap:16px;text-decoration:none;color:inherit;border-bottom:1px solid var(--line)}.contact-card:last-child{border-bottom:none}.contact-label{font-family:Departure Mono,monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted)}.contact-value{margin-top:3px;font-size:14px}.spotify-widget{position:fixed;right:20px;bottom:20px;z-index:50;display:flex;align-items:center;gap:12px;border:1px solid var(--line);background:color-mix(in srgb,var(--bg) 90%,transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);padding:10px 14px;max-width:320px}.spotify-album-art{width:36px;height:36px;flex-shrink:0;overflow:hidden}.spotify-album-art img{width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(.9)}.spotify-info{min-width:0}.spotify-track,.spotify-artist{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:Departure Mono,monospace;font-size:10px;letter-spacing:.06em}.spotify-track{color:var(--text)}.spotify-artist{color:var(--text-muted)}.site-footer{width:min(1100px,calc(100% - 48px));margin:0 auto;padding:32px 0 64px;border-top:1px solid var(--line);font-family:Departure Mono,monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);text-align:center}.reading-container{width:min(720px,calc(100% - 48px));margin:0 auto;padding:56px 0 96px;position:relative;z-index:1}.back-link{display:inline-block;margin-bottom:36px;font-family:Departure Mono,monospace;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);transition:color .2s ease}.back-link:hover{color:var(--accent)}.reading-header{margin-bottom:44px;padding-bottom:28px;border-bottom:1px solid var(--line)}.reading-label{font-family:Departure Mono,monospace;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted)}.reading-title{margin:14px 0 10px;font-size:clamp(30px,4.5vw,52px);font-weight:500;letter-spacing:-.05em;line-height:1.05;color:var(--text)}.reading-date{font-family:Departure Mono,monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted)}.reading-content{font-size:15px;line-height:1.8;color:var(--text-secondary)}.reading-content h2,.reading-content h3{margin:44px 0 16px;font-size:20px;font-weight:500;letter-spacing:-.02em;color:var(--text)}.reading-content p{margin-bottom:20px}.reading-content a{color:var(--accent);border-bottom:1px solid transparent;transition:border-color .2s ease}.reading-content a:hover{border-bottom-color:var(--accent)}.reading-content code{font-family:IBM Plex Mono,monospace;font-size:.88em;background:var(--bg-elevated);padding:2px 6px;color:var(--accent)}.reading-content pre{background:var(--bg-elevated);padding:18px;overflow-x:auto;border:1px solid var(--line);margin:20px 0}.reading-content pre code{background:none;padding:0;color:var(--text-secondary)}.reading-content img{max-width:100%;height:auto;border:1px solid var(--line)}@media (max-width: 860px){.portfolio-layout{display:block;width:calc(100% - 40px)}.hero{position:static;min-height:auto;padding:36px 0 44px}.hero-name{font-size:clamp(38px,11vw,60px)}.hero-links a{flex:1 1 auto;text-align:center}main{padding:0 0 56px}.section{padding:40px 0}.site-footer{width:calc(100% - 40px)}.reading-container{width:calc(100% - 40px);padding-top:36px}.spotify-widget{display:none}}@media (max-width: 520px){.site-header{padding-inline:16px}.site-header-links{display:none}.portfolio-layout,.site-footer,.reading-container{width:calc(100% - 32px)}.hero-name{font-size:clamp(34px,13vw,52px)}.hero-links a{font-size:11px;padding:6px 10px}.experience-header{flex-direction:column;gap:4px}.project-item,.blog-item{grid-template-columns:1fr;gap:6px}.project-arrow,.blog-arrow{display:none}}
