:root{--bg:#f9f8f5;--fg:#191919;--muted:#585858;--line:#1f1f1f;--surface:#fff;--max:760px}[data-theme=dark]{--bg:#141414;--fg:#eceae6;--muted:#b4b0a8;--line:#868079;--surface:#1d1d1d}*,:before,:after{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--fg);flex-direction:column;min-height:100vh;padding-left:6.4rem;font-family:Cormorant Garamond,Georgia,serif;font-size:1.2rem;line-height:1.72;display:flex}a{color:inherit;text-decoration:none}.container{width:min(var(--max), calc(100% - 2rem));margin:0 auto}.floating-nav{z-index:200;flex-direction:column;align-items:center;gap:.65rem;display:flex;position:fixed;top:50%;left:2rem;transform:translateY(-50%)}.nav-float-link{border:1px solid var(--line);background:var(--surface);width:38px;height:38px;color:var(--muted);border-radius:12px;place-items:center;transition:all .15s;display:grid}.nav-float-link svg{fill:currentColor;width:17px;height:17px}.nav-float-link.active,.nav-float-link:hover,.nav-float-link:focus-visible{background:var(--fg);color:var(--bg)}.theme-toggle{border:1px solid var(--line);background:var(--surface);color:var(--muted);cursor:pointer;padding:0}.theme-toggle svg{fill:currentColor;width:16px;height:16px}main{flex:1}.section{padding:2.4rem 0}.hero{min-height:auto}.hero-grid{width:min(760px,100% - 2rem);padding:1.2rem 0}.profile-row{flex-wrap:wrap;align-items:center;gap:2rem;display:flex}.profile-photo{border:1px solid var(--line);object-fit:cover;filter:grayscale();border-radius:999px;width:136px;height:136px;display:block}h1,h2,h3{margin-top:0;font-family:Cormorant Garamond,Georgia,serif;line-height:1.1}h1{margin-bottom:.7rem;font-size:clamp(2.6rem,5.2vw,4.2rem)}h2{margin-bottom:1.5rem;font-size:clamp(1.8rem,2.5vw,2.4rem)}.bio{max-width:64ch;color:var(--fg);margin-top:1rem;font-size:1.42rem}.social-row{flex-wrap:wrap;gap:.7rem;margin-top:1.25rem;display:flex}.social-link{width:auto;height:auto;color:var(--fg);place-items:center;transition:color .16s,transform .16s,opacity .16s;display:grid}.social-link svg{fill:currentColor;width:24px;height:24px}.social-link:hover,.social-link:focus-visible{color:var(--muted);opacity:.9;transform:translateY(-1px)}.page-intro{color:var(--muted);max-width:52ch;margin:0}.project-section h1{font-size:clamp(2.2rem,4vw,3.2rem)}.project-section+.project-section{margin-top:3.2rem}.project-section h2{margin-bottom:.3rem}.project-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:1rem;margin-top:1.5rem;display:grid}.project-card{border:1px solid var(--line);background:var(--surface);border-radius:14px;flex-direction:column;gap:.7rem;padding:1.25rem 1.3rem 1.35rem;transition:transform .15s,box-shadow .15s;display:flex;position:relative}.project-card:has(.project-link):hover,.project-card:has(.project-link):focus-within{box-shadow:4px 4px 0 var(--line);transform:translate(-2px,-2px)}.project-tags{flex-wrap:wrap;gap:.4rem;display:flex}.project-tag,.project-role{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-family:IBM Plex Mono,Courier New,monospace;font-size:.64rem}.project-tag{border:1px solid var(--line);border-radius:6px;padding:.1rem .45rem}.project-title{margin:0;font-size:1.35rem}.project-link{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-top:auto;padding-top:.2rem;font-family:IBM Plex Mono,Courier New,monospace;font-size:.66rem;transition:color .15s}.project-link:after{content:"";position:absolute;inset:0}.project-link-arrow{transition:transform .15s;display:inline-block}.project-card:hover .project-link,.project-card:focus-within .project-link{color:var(--fg)}.project-card:hover .project-link-arrow,.project-card:focus-within .project-link-arrow{transform:translate(2px,-2px)}.project-role{margin:-.35rem 0 0}.project-desc{margin:0;font-size:1rem;line-height:1.55}.project-desc a{z-index:1;text-decoration:underline;position:relative}.posts-list{border-top:1px solid var(--line);margin-top:1.2rem}.post-item{border-bottom:1px solid var(--line);gap:.55rem;padding:1rem 0;display:grid}.post-title{font-size:1.55rem}.post-meta{text-transform:uppercase;letter-spacing:.1em;color:var(--muted);font-family:IBM Plex Mono,Courier New,monospace;font-size:.68rem}.post-excerpt{max-width:68ch}.post-title:hover,.post-title:focus-visible{text-underline-offset:.15em;text-decoration:underline}.rss-wrap{align-items:center;gap:.55rem;margin-top:2.1rem;display:flex}.rss-btn{border:1px solid var(--line);text-transform:uppercase;letter-spacing:.1em;padding:.55rem .9rem;font-family:IBM Plex Mono,Courier New,monospace;font-size:.68rem;display:inline-block}.rss-btn:hover,.rss-btn:focus-visible{background:var(--fg);color:var(--bg)}.rss-icon-link{border:1px solid var(--line);border-radius:8px;place-items:center;width:34px;height:34px;display:grid}.rss-icon-link svg{fill:currentColor;width:18px;height:18px}.rss-icon-link:hover,.rss-icon-link:focus-visible{background:var(--fg);color:var(--bg)}.reading-view{width:min(700px,100% - 2rem)}.reading-view p{font-size:1.26rem}.back-link{text-transform:uppercase;letter-spacing:.1em;border-bottom:1px solid var(--line);font-family:IBM Plex Mono,Courier New,monospace;font-size:.67rem}.back-link:hover,.back-link:focus-visible{background:var(--fg);color:var(--bg)}.site-footer{letter-spacing:.08em;color:var(--muted);text-align:center;padding:1rem 0 1.2rem;font-family:IBM Plex Mono,Courier New,monospace;font-size:.7rem}@media (width<=640px){body{padding-bottom:4.7rem;padding-left:0}.floating-nav{border:1px solid var(--line);background:var(--surface);border-radius:14px;flex-direction:row;padding:.45rem;top:auto;bottom:1rem;left:50%;transform:translate(-50%)}.hero-grid{padding:.8rem 0}.profile-row{gap:1.2rem}.profile-photo{width:104px;height:104px}.project-card{padding:1.1rem 1.1rem 1.2rem}}
