:root{--sans:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--display:ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;--mono:"SFMono-Regular", Consolas, "Liberation Mono", monospace;color:#171717;font-family:var(--sans);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f7f7f5;font-size:16px;line-height:1.6}*{box-sizing:border-box}html{scroll-behavior:smooth;overflow-x:clip}body{background:#f7f7f5;min-width:320px;margin:0;overflow-x:clip}a{color:inherit}.project-link{text-decoration:none}.project-link:hover{text-decoration:underline}h1,h2,h3,p{margin:0}h1,h2,h3{color:var(--heading);font-weight:540;line-height:1.04}#root{min-height:100vh}.site-shell{--bg:#f7f7f5;--surface:#fff;--surface-muted:#f0f0ed;--text:#242424;--text-muted:#666662;--heading:#121212;--border:#e1e1dc;--border-strong:#bdbdb6;--accent:#121212;--accent-soft:#e8e8e4;--button-text:#fff;--code-bg:#f1f1ee;--code-text:#121212;--header-bg:#f7f7f5d1;--shadow:0 24px 70px #0000000f;--radius:8px;background:linear-gradient(135deg, #00000007 1px, transparent 1px), var(--bg);color:var(--text);background-size:38px 38px,auto;min-height:100vh;transition:background-color .18s,color .18s}.site-shell[data-theme=dark]{--bg:#121212;--surface:#1b1b1b;--surface-muted:#242424;--text:#eeeeec;--text-muted:#aaa9a4;--heading:#fff;--border:#303030;--border-strong:#464646;--accent:#fff;--accent-soft:#242424;--button-text:#050505;--code-bg:#202020;--code-text:#f4f4f0;--header-bg:#121212d1;--shadow:0 28px 80px #00000047;background:linear-gradient(135deg, #ffffff09 1px, transparent 1px), var(--bg);background-size:38px 38px,auto}.site-header{background:var(--header-bg);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-bottom:1px solid var(--border);z-index:10;justify-content:space-between;align-items:center;gap:1rem;padding:1rem max(1.25rem,50vw - 560px);display:flex;position:sticky;top:0}.site-logo{color:var(--heading);letter-spacing:0;font-size:.95rem;font-weight:680;text-decoration:none}.site-logo:after{color:var(--text-muted);content:" / portfolio";font-weight:520}.header-actions{justify-content:flex-end;align-items:center;gap:1rem;display:flex}.site-nav{isolation:isolate;pointer-events:none;z-index:20;gap:.8rem;width:9.2rem;display:grid;position:fixed;top:50%;left:clamp(6rem,9vw,8.5rem);transform:translateY(-50%)}.site-nav a{color:#8a8a84;pointer-events:auto;text-align:center;background:0 0;border-radius:999px;min-width:7.35rem;padding:.42rem .82rem;font-size:1.09rem;font-weight:650;text-decoration:none;transition:background-color .16s,color .16s,opacity .16s}.site-nav a.active,.site-nav a:hover{color:var(--heading);opacity:1;background:0 0}.site-nav a.active{font-weight:760}.theme-toggle{color:var(--text-muted);cursor:pointer;font:inherit;background:0 0;border:0;align-items:center;gap:.5rem;padding:0;font-size:.86rem;font-weight:650;display:inline-flex}.theme-toggle:hover{color:var(--heading)}.toggle-track{background:var(--surface);border:1px solid var(--border-strong);border-radius:999px;width:2.45rem;height:1.35rem;padding:.15rem;display:inline-flex}.toggle-thumb{background:var(--heading);border-radius:999px;width:.95rem;height:.95rem;transition:transform .16s;display:block;transform:translate(0)}.site-shell[data-theme=dark] .toggle-thumb{transform:translate(1.08rem)}.site-main{max-width:1040px;margin:0 auto;padding:0 1.25rem}.hero-section{grid-template-columns:minmax(0,1fr) minmax(13rem,17rem);align-items:start;gap:clamp(2rem,5vw,4rem);min-height:calc(100svh - 3.65rem);padding:clamp(1.5rem,3vw,2.25rem) 8rem clamp(2rem,4vw,3rem) 0;display:grid;position:relative}.about-hero{text-align:center;grid-template-columns:minmax(0,1fr);place-items:center}.hero-content{gap:1.45rem;display:grid}.about-hero .hero-content{justify-items:center;transform:translate(clamp(1.5rem,4vw,3.75rem))}.project-card-meta{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:.45rem;font-size:.82rem;font-weight:680;display:flex}.project-card-meta span,.tag-list li{border:1px solid var(--border);border-radius:999px;padding:.22rem .52rem}.hero-section h1{font-family:var(--display);letter-spacing:0;max-width:790px;font-size:clamp(2.15rem,4.7vw,4.35rem);line-height:1.02}.hero-copy{color:var(--text-muted);max-width:680px;font-size:clamp(1rem,1.4vw,1.14rem)}.hero-actions{flex-wrap:wrap;gap:.75rem;margin-top:.6rem;display:flex}.about-hero .hero-actions{justify-content:center}.floating-connect{color:var(--text-muted);font-family:var(--mono);text-transform:uppercase;font-size:.78rem;font-weight:700;text-decoration:none;transition:color .16s,transform .16s;position:absolute;bottom:clamp(1rem,3vw,1.8rem);left:50%;transform:translate(-50%)}.floating-connect:after{content:"";opacity:.42;background:currentColor;width:1px;height:1.35rem;margin:.35rem auto 0;display:block}.floating-connect:hover{color:var(--heading);transform:translate(-50%,2px)}.button-link{background:var(--accent);border:1px solid var(--accent);border-radius:var(--radius);color:var(--button-text);align-items:center;min-height:2.8rem;padding:.7rem 1rem;font-weight:720;text-decoration:none;transition:opacity .16s,transform .16s;display:inline-flex}.button-link:hover{opacity:.86;transform:translateY(-1px)}.button-secondary{border-color:var(--border-strong);color:var(--heading);background:0 0}.post-card,.project-card{background:color-mix(in srgb, var(--surface) 88%, transparent);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.page-heading p,.post-card p,.project-card p,.post-header p{color:var(--text-muted)}.post-card time,.post-header time{color:var(--text-muted);font-size:.9rem}.eyebrow{color:var(--text-muted);font-family:var(--mono);text-transform:uppercase;font-size:.78rem;font-weight:700}.page-section{gap:clamp(1.5rem,4vw,2.5rem);padding-top:clamp(1rem,2.4vw,2rem);display:grid}.page-heading{gap:.8rem;max-width:780px;display:grid}.page-heading-wide{max-width:860px}.page-heading h1,.post-header h1,.empty-state h1{font-family:var(--display);letter-spacing:0;font-size:clamp(2rem,4.1vw,3.35rem)}.post-grid,.project-grid{gap:1rem;display:grid}.project-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.post-card,.project-card{gap:.85rem;padding:clamp(1.15rem,3vw,1.55rem);display:grid}.project-card{align-content:start;min-height:15.5rem}.post-card h2,.project-card h2,.project-card h3{font-size:1.45rem}.project-card h3{color:var(--heading);margin:0;line-height:1.12}.post-card a{text-underline-offset:.2em;text-decoration-color:#0000}.post-card a:hover,.text-link:hover,.back-link:hover{text-decoration-color:currentColor}.tag-list{flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.tag-list li{color:var(--text-muted);font-family:var(--mono);font-size:.76rem}.social-links{flex-wrap:wrap;align-items:center;gap:.55rem;display:flex}.social-links a{border:1px solid var(--border);color:var(--text-muted);border-radius:999px;align-items:center;gap:.42rem;min-height:2.25rem;padding:.42rem .68rem;text-decoration:none;transition:border-color .16s,color .16s;display:inline-flex}.social-links a:hover{border-color:var(--border-strong);color:var(--heading)}.social-links svg{fill:currentColor;flex:none;width:1rem;height:1rem}.social-links span{font-size:.82rem;font-weight:680}.button-link,.text-link,.back-link{font-weight:720}.text-link,.back-link{color:var(--heading);-webkit-text-decoration-color:var(--border-strong);text-decoration-color:var(--border-strong);text-underline-offset:.22em}.post-page{gap:2rem;display:grid}.post-header{border-bottom:1px solid var(--border);gap:.8rem;padding-bottom:2rem;display:grid}.markdown-content{color:var(--text);gap:1.1rem;max-width:760px;display:grid}.markdown-content h2,.markdown-content h3{margin-top:1.2rem}.markdown-content ul,.markdown-content ol{margin:0;padding-left:1.4rem}.markdown-content code{background:var(--code-bg);color:var(--code-text);font-family:var(--mono);border-radius:6px;padding:.12rem .28rem;font-size:.92em}.markdown-content pre{background:var(--code-bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--code-text);margin:0;padding:1rem;overflow-x:auto}.markdown-content pre code{color:inherit;background:0 0;padding:0;display:block}.empty-state{gap:1rem;display:grid}.site-footer{background:var(--heading);color:var(--button-text);margin-inline:calc(50% - 50vw);border-top:0;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:clamp(1.5rem,4vw,3rem);margin-top:0;padding:clamp(2.25rem,5vw,4rem) max(1.25rem,50vw - 560px);scroll-margin-top:5rem;display:flex}.site-footer p{font-size:.9rem;font-weight:700}.site-footer h2{color:var(--button-text);font-family:var(--display);max-width:620px;font-size:clamp(1.65rem,3.2vw,2.8rem);line-height:1.05}.site-footer .eyebrow{color:color-mix(in srgb, var(--button-text) 62%, transparent)}.site-footer .social-links a{border-color:color-mix(in srgb, var(--button-text) 26%, transparent);color:color-mix(in srgb, var(--button-text) 72%, transparent)}.site-footer .social-links a:hover{border-color:var(--button-text);color:var(--button-text)}.footer-social-links{justify-content:flex-end}@media (width<=820px){.site-header{flex-direction:column;align-items:flex-start}.header-actions{flex-direction:row;justify-content:space-between;align-items:center;width:100%}.site-nav{pointer-events:auto;flex-direction:row;order:2;align-self:center;gap:.15rem;width:auto;height:auto;display:flex;position:static;top:auto;right:auto;overflow-x:visible;transform:none}.site-nav a{min-width:0;font-size:.95rem;position:static}.project-grid,.hero-section{grid-template-columns:1fr;padding-right:0}.about-hero .hero-content{transform:none}.project-card{min-height:0}}@media (width<=520px){.site-logo:after{content:""}.site-nav a{padding-inline:.65rem}.hero-section{min-height:calc(100svh - 8.4rem);padding-top:2rem;padding-bottom:5.5rem}.floating-connect{left:0;transform:none}.floating-connect:hover{transform:translateY(2px)}.site-footer{flex-direction:column;align-items:flex-start}.footer-social-links{justify-content:flex-start}}
