:root{color:#f5f5f5;font-synthesis:none;text-rendering:optimizelegibility;font-smooth:always;font-optical-sizing:auto;--bg:#050505;--surface:#0f0f0f;--soft:#a5a5a5;--dim:#6c6c6c;--line:#252525;--white:#f5f5f5;--mono:"DM Mono","JetBrains Mono",monospace;background:#050505;font-family:Manrope,Inter,system-ui,sans-serif;font-weight:400}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);min-width:320px;margin:0}button,input,textarea,select{font:inherit}button,a{color:inherit}button{cursor:pointer}a{text-decoration:none}.mono{font-family:var(--mono);letter-spacing:.08em}.tiny{color:var(--dim);text-transform:uppercase;font-size:10px}.label{font:11px var(--mono);letter-spacing:.12em;color:#888;text-transform:uppercase}.site-shell{max-width:1440px;min-height:100vh;margin:auto;padding:0 7.1%;position:relative;overflow:hidden}.grain{pointer-events:none;opacity:.05;z-index:5;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.36'/%3E%3C/svg%3E");position:fixed;inset:0}.topbar{border-bottom:1px solid var(--line);z-index:8;justify-content:space-between;align-items:center;height:78px;display:flex;position:relative}.brand{font:11px var(--mono);letter-spacing:.09em;align-items:center;gap:10px;display:inline-flex}.brand i{color:#656565;margin:0 2px;font-style:normal}.brand-icon{color:#ddd;border:1px solid #3a3a3a;place-items:center;width:25px;height:25px;display:grid}.nav{align-items:center;gap:34px;display:flex}.nav>a:not(.github-link){color:#868686;font-size:12px;transition:color .2s}.nav>a:hover,.nav>a.active{color:#fff}.nav>a.active:after{content:"";background:#fff;height:1px;margin-top:7px;display:block}.nav-separator{border-left:1px solid #303030;height:20px}.github-link{color:#aaa;display:flex}.menu-toggle{background:0 0;border:0;display:none}.hero{border-bottom:1px solid var(--line);min-height:546px;padding:108px 0 72px;position:relative}.hero-kicker{color:#aaa;align-items:center;gap:11px;font-size:10px;display:flex}.live-dot{background:#eee;border-radius:50%;width:6px;height:6px;box-shadow:0 0 10px #fff7}.kicker-slash{color:#555}.hero h1,.page-intro h1{letter-spacing:-.085em;margin:38px 0 26px;font-size:clamp(66px,9.8vw,138px);font-weight:500;line-height:.94}.hero-bottom{justify-content:space-between;align-items:end;max-width:800px;display:flex}.hero-bottom p{color:#aaa;margin:0;font-size:14px;line-height:1.8}.circle-button{background:0 0;border:1px solid #414141;border-radius:50%;place-items:center;width:50px;height:50px;transition:background .2s,color .2s;display:grid}.circle-button:hover{color:#050505;background:#f5f5f5}.hero-stamp{color:#555;font:10px var(--mono);align-items:center;gap:8px;display:flex;position:absolute;top:190px;right:0}.hero-stamp span{border:1px solid #313131;place-items:center;width:43px;height:43px;font-size:20px;font-weight:700;display:grid}.section{padding:100px 0 113px}.section-head{justify-content:space-between;align-items:end;margin-bottom:35px;display:flex}.section-head h2{letter-spacing:-.06em;margin:14px 0 0;font-size:38px;font-weight:500}.text-link{color:#ddd;background:0 0;border:0;align-items:center;gap:9px;padding:8px 0;font-size:12px;display:inline-flex}.text-link:hover{color:#888}.post-list{border-top:1px solid var(--line)}.post-row{border:0;border-bottom:1px solid var(--line);text-align:left;background:0 0;grid-template-columns:60px 1fr auto;align-items:center;gap:15px;width:100%;padding:24px 0;display:grid}.post-index{font:11px var(--mono);color:#555}.post-main{flex-direction:column;gap:8px;display:flex}.post-title{letter-spacing:-.025em;font-size:18px}.post-excerpt{color:#777;max-width:620px;font-size:12px;line-height:1.7}.post-meta{font:10px var(--mono);letter-spacing:.06em;color:#777;align-items:center;gap:25px;display:flex}.post-row:hover .post-title{color:#aaa}.post-row:hover .post-meta svg{transform:translate(2px,-2px)}.post-meta svg{transition:transform .2s}.state{color:#777;padding:35px 0;font-size:13px}.error,.form-error{color:#e18d8d}.project-callout{border-top:1px solid var(--line);padding:90px 0 100px}.callout-grid{grid-template-rows:auto 1fr;grid-template-columns:1fr 1fr;align-items:end;gap:35px 50px;display:grid}.callout-icon{color:#aaa;border:1px solid #333;justify-self:end;padding:14px}.callout-grid h2{letter-spacing:-.08em;margin:0;font-size:clamp(48px,7vw,86px);font-weight:500;line-height:.98}.callout-grid>div{max-width:370px}.callout-grid p{color:#888;margin:0 0 26px;font-size:13px;line-height:1.9}.outline-button{background:0 0;border:1px solid #4a4a4a;align-items:center;gap:22px;padding:12px 16px;font-size:11px;display:inline-flex}.outline-button:hover{border-color:#aaa}.ticker{border-top:1px solid var(--line);border-bottom:1px solid var(--line);color:#777;font:10px var(--mono);letter-spacing:.12em;white-space:nowrap;justify-content:space-around;align-items:center;margin:0 -8.3%;padding:17px 0;display:flex;overflow:hidden}.ticker i{color:#ccc;font-size:15px;font-style:normal}.footer{justify-content:space-between;align-items:center;gap:15px;min-height:95px;display:flex}.footer-star{color:#ddd;margin:0 5px}.admin-shortcut{color:#333;font:10px var(--mono);background:0 0;border:0}.admin-shortcut:hover{color:#aaa}.page-section{min-height:72vh;padding:85px 0 115px}.page-intro>p{color:#888;max-width:470px;font-size:13px;line-height:1.8}.filterbar{justify-content:space-between;align-items:center;gap:18px;padding:15px 0 22px;display:flex}.searchbox{color:#777;border-bottom:1px solid #333;align-items:center;gap:10px;width:280px;padding:9px 0;display:flex}.searchbox input{color:#eee;background:0 0;border:0;outline:none;width:100%;font-size:12px}.chips{gap:8px;display:flex}.chip{font:10px var(--mono);text-transform:uppercase;letter-spacing:.05em;color:#777;background:0 0;border:1px solid #2c2c2c;padding:8px 11px}.chip.selected,.chip:hover{color:#eee;border-color:#888}.article-page{max-width:800px;min-height:70vh;margin:0 auto;padding:64px 0 130px}.back-link{color:#888;font:10px var(--mono);letter-spacing:.1em;background:0 0;border:0;align-items:center;gap:10px;padding:0;display:inline-flex}.back-link:hover{color:#fff}.article-kicker{color:#777;margin-top:70px;font-size:10px}.article-page h1{letter-spacing:-.065em;margin:24px 0;font-size:clamp(42px,6vw,74px);font-weight:500;line-height:1.05}.article-lede{color:#aaa;max-width:650px;font-size:17px;line-height:1.8}.article-tags{gap:8px;margin:25px 0 45px;display:flex}.article-tags span,.tech-list span{color:#888;font:9px var(--mono);text-transform:uppercase;border:1px solid #333;padding:6px 9px}.article-content{color:#bbb;border-top:1px solid #292929;padding-top:28px;font-size:15px;line-height:1.95}.article-content h2,.article-content h3{color:#eee;letter-spacing:-.03em;margin-top:2em}.article-content a{color:#fff;text-underline-offset:3px;text-decoration:underline}.article-content pre{font:12px var(--mono);background:#101010;padding:18px;overflow:auto}.article-content code{font:.9em var(--mono);color:#ddd}.article-content blockquote{color:#888;border-left:1px solid #777;margin:25px 0;padding-left:20px}.article-actions{border-top:1px solid #292929;justify-content:space-between;align-items:center;margin-top:55px;padding-top:20px;display:flex}.like-button{color:#aaa;background:0 0;border:1px solid #333;align-items:center;gap:9px;padding:11px 14px;font-size:11px;display:flex}.like-button:hover,.like-button.liked{color:#fff;border-color:#888}.like-button.liked svg{fill:#fff}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.project-card{background:#0a0a0a;border:1px solid #272727;flex-direction:column;min-height:250px;padding:23px;display:flex}.project-top,.project-bottom{justify-content:space-between;align-items:center;display:flex}.project-mark{color:#777}.project-card h3{letter-spacing:-.04em;margin:27px 0 10px;font-size:21px;font-weight:500}.project-card p{color:#888;margin:0 0 18px;font-size:12px;line-height:1.8}.tech-list{flex-wrap:wrap;gap:6px;margin-top:auto;display:flex}.project-bottom{border-top:1px solid #222;margin-top:20px;padding-top:14px}.project-bottom a{color:#aaa}.about-page{grid-template-columns:1.1fr .9fr;gap:70px;display:grid}.about-copy{max-width:480px;padding-top:125px}.about-copy p{color:#aaa;margin:0 0 22px;font-size:15px;line-height:2}.about-copy .text-link{margin-top:20px}.admin-screen{max-width:1050px;min-height:100vh;margin:0 auto;padding:44px 7% 110px}.login-card{flex-direction:column;gap:18px;width:min(100%,430px);margin:90px auto 0;display:flex}.login-card h1,.admin-head h1{letter-spacing:-.08em;margin:6px 0 10px;font-size:58px;font-weight:500;line-height:.97}.login-card label,.editor label{color:#999;flex-direction:column;gap:9px;font-size:11px;display:flex}.login-card input,.editor input,.editor textarea,.editor select{color:#eee;background:#0c0c0c;border:1px solid #303030;outline:none;padding:12px;font-size:13px}.login-card input:focus,.editor input:focus,.editor textarea:focus,.editor select:focus{border-color:#888}.solid-button{color:#050505;background:#f5f5f5;border:1px solid #f5f5f5;justify-content:center;align-items:center;gap:20px;margin-top:6px;padding:13px 16px;font-size:12px;display:inline-flex}.solid-button:hover{background:#ccc}.admin-head{justify-content:space-between;align-items:end;padding:50px 0 44px;display:flex}.admin-tabs{border-bottom:1px solid #303030;align-items:center;gap:25px;display:flex}.admin-tabs>button:not(.new-button){color:#777;background:0 0;border:0;border-bottom:1px solid #0000;padding:14px 0;font-size:12px}.admin-tabs>button.selected{color:#fff!important;border-color:#eee!important}.new-button{color:#ddd;background:0 0;border:1px solid #444;align-items:center;gap:8px;margin-left:auto;padding:9px 12px;font-size:11px;display:flex}.admin-list{border-top:1px solid #252525}.admin-row{border-bottom:1px solid #252525;justify-content:space-between;align-items:center;gap:20px;padding:17px 0;display:flex}.admin-row>div:first-child{flex-direction:column;gap:7px;display:flex}.admin-row strong{font-size:13px;font-weight:500}.row-actions{gap:14px;display:flex}.row-actions button{color:#888;font:10px var(--mono);background:0 0;border:0}.row-actions button:hover{color:#fff}.row-actions .delete:hover{color:#e18d8d}.editor{gap:18px;max-width:700px;padding:27px 0;display:grid}.editor h2{font-weight:500}.editor textarea{resize:vertical;line-height:1.6}.editor-actions{justify-content:flex-end;gap:10px;display:flex}.form-error,.form-success{font-size:12px}.form-success{color:#a5c9a6}input,textarea,select{border-radius:0}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline-offset:3px;outline:2px solid #f5f5f5}::selection{color:#050505;background:#eee}@media (width<=700px){.site-shell{padding:0 6%}.topbar{height:66px}.brand{gap:7px;font-size:9px}.brand-icon{width:23px;height:23px}.menu-toggle{color:#ddd;display:block}.nav{background:#080808;border-bottom:1px solid #333;flex-direction:column;align-items:stretch;gap:18px;padding:20px 7%;display:none;position:absolute;top:65px;left:-6.8%;right:-6.8%}.nav.open{display:flex}.nav-separator{display:none}.github-link{margin-top:4px}.hero{min-height:500px;padding:95px 0 55px}.hero h1{margin:44px 0 24px;font-size:clamp(62px,17vw,100px)}.hero-stamp{transform-origin:100% 0;top:84px;transform:scale(.8)}.hero-bottom p{font-size:12px}.circle-button{width:42px;height:42px}.section{padding:75px 0}.section-head h2{font-size:32px}.post-row{grid-template-columns:32px 1fr;gap:8px;padding:19px 0}.post-meta{grid-column:2;justify-content:space-between;margin-top:5px}.post-title{font-size:15px}.post-excerpt{font-size:11px}.callout-grid{grid-template-columns:1fr auto;gap:24px 12px}.callout-grid>.label{grid-column:1}.callout-grid h2{font-size:60px}.callout-grid>div{grid-column:1/-1}.project-callout{padding:72px 0}.ticker{justify-content:flex-start;gap:24px;margin:0 -8%;padding-left:12px}.ticker span{font-size:9px}.ticker span:nth-of-type(n+3){display:none}.footer{flex-wrap:wrap;padding:22px 0}.footer .tiny{order:3;width:100%}.admin-shortcut{margin-left:auto}.page-section{padding:65px 0 85px}.page-intro h1{font-size:clamp(58px,14vw,86px)}.filterbar{flex-direction:column;align-items:stretch}.searchbox{width:100%}.chips{flex-wrap:wrap}.project-grid{grid-template-columns:1fr}.about-page{display:block}.about-copy{padding-top:15px}.article-page{padding:38px 0 80px}.article-kicker{margin-top:52px}.article-lede{font-size:15px}.admin-screen{padding:30px 6% 80px}.login-card{margin-top:80px}.admin-head h1,.login-card h1{font-size:52px}.admin-row{align-items:flex-start}.row-actions{gap:8px}.row-actions button{font-size:9px}.desktop{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}:root{--mono:"Courier New",monospace;--bg:#080808;--surface:#101010;--soft:#b8b8b8;--dim:#929292;--line:#303030;--white:#ededed;color:var(--white);font-family:Georgia,Times New Roman,serif}body{background:var(--bg)}.site-shell{max-width:1000px;padding:0 30px}.grain,.hero-stamp,.ticker,.callout-icon{display:none}.topbar{border-bottom:1px solid var(--line);gap:20px;height:auto;min-height:68px}.brand{font-family:var(--mono);letter-spacing:0;font-size:11px}.brand-icon{width:22px;height:22px}.brand-image{object-fit:cover;border:1px solid #3a3a3a;width:25px;height:25px}.nav{gap:22px}.nav>a:not(.github-link){font-family:var(--mono);font-size:12px}.hero{min-height:0;padding:54px 0 42px}.hero-kicker,.label,.tiny,.post-index,.post-meta,.mono{font-family:var(--mono)}.hero-kicker{color:#aaa;font-size:12px}.hero h1,.page-intro h1{letter-spacing:-.035em;margin:23px 0 18px;font-family:Georgia,Times New Roman,serif;font-size:clamp(48px,8vw,82px);font-weight:400;line-height:1.02}.hero h1 span,.page-intro h1 span,.login-card h1 span,.admin-head h1 span{color:#aaa}.hero-bottom p,.page-intro>p{color:#b7b7b7;font-family:Georgia,Times New Roman,serif;font-size:16px;line-height:1.7}.section,.project-callout{padding:38px 0 48px}.section-head{align-items:center;margin-bottom:18px}.section-head h2,.callout-grid h2{letter-spacing:0;margin:8px 0 0;font-family:Georgia,Times New Roman,serif;font-size:25px;font-weight:400}.label{letter-spacing:.04em;color:#aaa;font-size:11px}.post-row{grid-template-columns:1fr auto;gap:14px;padding:18px 4px}.post-index{display:none}.post-main{gap:6px}.post-title{letter-spacing:0;font-family:Georgia,Times New Roman,serif;font-size:18px}.post-excerpt{color:#aaa;font-family:Georgia,Times New Roman,serif;font-size:14px;line-height:1.5}.post-meta{letter-spacing:0;color:#aaa;font-size:11px}.post-meta svg{display:none}.post-row:hover .post-title{color:#fff;text-decoration:underline}.text-link,.outline-button,.chip,.pagination button{font-family:var(--mono);font-size:11px}.project-callout{border-top:1px solid var(--line)}.callout-copy{color:#aaa;font-size:15px;line-height:1.6}.page-section{padding:55px 0 75px}.page-intro{padding-bottom:28px}.page-intro h1{margin:20px 0 14px;font-size:clamp(44px,7vw,70px)}.filterbar{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:13px 0}.searchbox{width:300px}.searchbox input{font-family:Georgia,Times New Roman,serif;font-size:14px}.chip{padding:6px 9px}.project-grid{gap:0 28px}.project-card{border:0;border-top:1px solid var(--line);background:0 0;min-height:0;padding:20px 2px}.project-card h3{letter-spacing:0;margin:15px 0 8px;font-family:Georgia,Times New Roman,serif;font-size:21px;font-weight:400}.project-card p{color:#aaa;font-family:Georgia,Times New Roman,serif;font-size:14px;line-height:1.6}.tech-list span,.article-tags span{font-family:var(--mono);text-transform:none;padding:4px 7px;font-size:10px}.footer{border-top:1px solid var(--line);min-height:72px}.footer .tiny{letter-spacing:0;font-size:10px}.admin-shortcut{font-family:var(--mono)}@media (width<=700px){.site-shell{padding:0 6%}.topbar{height:66px}.nav{gap:16px}.hero{padding:42px 0 34px}.hero h1{margin:22px 0 16px;font-size:clamp(48px,14vw,72px)}.section,.project-callout{padding:32px 0}.post-row{grid-template-columns:1fr;gap:6px}.post-meta{grid-column:1;justify-content:flex-start;margin-top:2px}.page-section{padding:42px 0 60px}.project-grid{grid-template-columns:1fr}.filterbar{gap:12px}.searchbox{width:100%}.footer{padding:15px 0}}.about-page{max-width:820px;display:block}.about-page .page-intro{border-bottom:1px solid var(--line);padding-bottom:28px}.profile-role{font-family:var(--mono)!important;color:#c4c4c4!important;font-size:12px!important}.profile-links,.project-links{flex-wrap:wrap;gap:18px;margin-top:20px;display:flex}.profile-links a,.project-links a{font:12px var(--mono);color:#ddd;text-underline-offset:3px;align-items:center;gap:5px;text-decoration:underline;display:inline-flex}.profile-links a:hover,.project-links a:hover{color:#fff}.profile-archive-link{font:10px var(--mono);color:#777;text-underline-offset:3px;align-items:center;gap:4px;margin-top:13px;text-decoration:underline;display:inline-flex}.profile-archive-link:hover{color:#ddd}.about-page .about-copy{max-width:760px;padding-top:24px}.about-copy .profile-introduction{color:#ddd;font-size:18px}.profile-section{margin-top:34px}.profile-section h2{border-bottom:1px solid var(--line);margin:0 0 15px;padding-bottom:8px;font-size:22px;font-weight:400}.experience-item{border-left:1px solid #555;margin:15px 0;padding:12px 0 14px 16px}.experience-item h3{margin:0 0 5px;font-size:17px;font-weight:400}.experience-item p{color:#aaa;margin:6px 0;font-size:14px;line-height:1.7}.experience-item .experience-meta{font:11px var(--mono);color:#bbb}.profile-skills{margin:0}.profile-skills>div{border-bottom:1px solid #222;grid-template-columns:130px 1fr;gap:15px;padding:10px 0;display:grid}.profile-skills dt{font:12px var(--mono);color:#ddd}.profile-skills dd{color:#aaa;margin:0;font-size:14px;line-height:1.6}.project-page-note{max-width:650px}.project-links{border-top:1px solid #252525;margin-top:18px;padding-top:10px}.project-links a{font-size:11px}@media (width<=700px){.about-page .page-intro{padding-bottom:22px}.profile-skills>div{grid-template-columns:1fr;gap:5px}.about-copy .profile-introduction{font-size:16px}.experience-item{padding-left:12px}.profile-links,.project-links{gap:14px}}.pagination{border-top:1px solid #252525;justify-content:space-between;align-items:center;padding:18px 0;display:flex}.pagination button{color:#bbb;background:0 0;border:1px solid #333;padding:9px 12px;font-size:11px}.pagination button:disabled{opacity:.35;cursor:not-allowed}.hero-stamp,.nav-separator,.github-link,.about-copy>a,.about-copy p:nth-of-type(2){display:none}:root{--mono:"JetBrains Mono",monospace}.about-copy p:nth-of-type(2){display:block}.article-attachments{margin:3rem 0}.article-attachments h2{font-size:1.25rem}.article-attachments figure{margin:1.5rem 0}.article-attachments img,.article-attachments video{border:1px solid var(--line);border-radius:4px;max-width:100%;max-height:75vh;display:block}.article-attachments figcaption{color:var(--soft);margin-top:.5rem;font-size:.85rem}.editor-attachments{gap:.5rem;display:grid}.editor-attachments>div{border:1px solid var(--line);overflow-wrap:anywhere;justify-content:space-between;align-items:center;gap:1rem;padding:.65rem;display:flex}.editor-attachments button{flex-shrink:0}
