.light,:root{--paper:#f4f0e8;--paper-raised:#faf7f0;--ink:#29251f;--muted-ink:#70685e;--rule:#dcd4c7;--background:40 35% 93%;--foreground:34 14% 14%;--card:40 45% 96%;--card-foreground:34 14% 14%;--popover:40 45% 97%;--popover-foreground:34 14% 14%;--primary:5 68% 39%;--primary-foreground:40 50% 97%;--secondary:38 25% 87%;--secondary-foreground:34 14% 14%;--muted:38 23% 89%;--muted-foreground:30 9% 39%;--accent:38 23% 88%;--accent-foreground:34 14% 14%;--border:35 20% 81%;--input:35 20% 78%;--ring:5 68% 39%;--radius:0.75rem}body{background:var(--paper);color:var(--ink);font-family:var(--font-sans-paper),sans-serif}::-moz-selection{background:#dbc3b4;color:#4f160f}::selection{background:#dbc3b4;color:#4f160f}a,button,input,textarea{touch-action:manipulation}a,button{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible,textarea:focus-visible{outline:2px solid var(--red);outline-offset:5px}section[id]{scroll-margin-top:90px}.paper-site{overflow:clip}.skip-link{position:fixed;top:-100px;left:20px;background:var(--red);color:white;padding:12px;z-index:100}.skip-link:focus{top:15px}.paper-header{position:sticky;top:0;z-index:40;gap:30px;padding:18px 4.5%;background:rgba(244,240,232,.96);border-bottom:1px solid #dcd4c766;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.paper-brand,.paper-header{display:flex;align-items:center}.paper-brand{gap:12px;white-space:nowrap;font-size:11px;font-weight:700;letter-spacing:.09em}.paper-brand svg{width:38px;height:38px}.desktop-nav{display:flex;gap:23px;margin-left:auto;font-size:12px}.desktop-nav a:hover,.desktop-nav a[aria-current]{color:var(--red)}.paper-button{display:inline-flex;align-items:center;justify-content:center;gap:16px;border:1px solid var(--red);background:var(--red);color:#fff9ef;padding:13px 19px;font-size:12px;font-weight:500;transition:background .2s,transform .2s}.paper-button:hover{background:#484848;transform:translateY(-2px)}.header-contact{padding:10px 13px;font-size:11px}.menu-toggle{display:none}.eyebrow{display:block;text-transform:none;letter-spacing:.16em;font-size:9px;font-weight:600;line-height:1.7}.paper-hero{position:relative;display:grid;grid-template-columns:.65fr 1.05fr 1.5fr;align-items:center;max-width:1600px;min-height:720px;margin:0 auto;padding:24px 6% 64px;gap:1%}.hero-identity{align-self:center;padding-top:70px}.hero-identity .eyebrow{max-width:140px;margin-bottom:30px;color:var(--muted-ink)}.hero-identity p{font-size:18px;font-weight:600;margin-bottom:10px}.hero-identity>span:not(.eyebrow){font-size:11px;line-height:1.8}.identity-rule{display:block;width:30px;border-top:1px solid var(--ink);margin-top:22px}.hero-art{align-self:stretch;display:flex;align-items:center;min-width:0}.staircase{width:100%;height:auto;overflow:visible;transform:none;animation:paper-arrive 1.1s ease both}.hero-copy{padding:0 0 0 8%}.hero-copy>.eyebrow{margin-bottom:23px;color:var(--muted-ink)}.hero-copy h1{font-family:var(--font-display-paper),sans-serif;font-weight:400;font-size:clamp(76px,8.7vw,150px);line-height:.82;margin-bottom:32px}.hero-copy>p{font-size:14px;line-height:1.8;max-width:320px}.hero-actions{display:flex;gap:25px;align-items:center;margin-top:28px}.text-link{display:inline-flex;gap:12px;align-items:center;font-size:12px;border-bottom:1px solid var(--ink);padding:7px 0}.hero-social{display:flex;gap:24px;margin-top:27px;font-size:10px}.hero-social a{display:flex;align-items:center;gap:7px}.hero-bottom{position:absolute;bottom:25px;left:6%;right:6%;display:flex;justify-content:space-between;font-size:9px;letter-spacing:.1em;color:var(--muted-ink)}.hero-bottom a{display:flex;gap:15px;align-items:center}.paper-seam{position:absolute;bottom:-30px;left:0;width:100%;height:45px;pointer-events:none;z-index:2}.paper-section{position:relative;padding:90px 6%!important;background:var(--paper)!important;border-top:1px solid var(--rule)}.paper-section>div{max-width:1280px}.paper-section:before{content:"";position:absolute;inset:0 0 auto;height:24px;background:linear-gradient(178deg,#bcb1a022,transparent 65%);pointer-events:none}.section-title{font-family:var(--font-display-paper),sans-serif;font-size:clamp(54px,6vw,84px);font-weight:400;letter-spacing:-.045em;line-height:1.05!important;text-transform:none;color:var(--ink)!important}.paper-section h2+p{font-size:13px;line-height:1.7;color:var(--muted-ink);margin-bottom:36px}.section-github>div,.section-projects>div,.section-work>div{display:grid;grid-template-columns:190px minmax(0,1fr);-moz-column-gap:45px;column-gap:45px}.section-github>div>div:first-child,.section-projects>div>div:first-child,.section-work>div>div:first-child{grid-column:1;grid-row:1;align-self:start;position:relative;top:0}.section-github .section-title,.section-projects .section-title,.section-work .section-title{font-family:var(--font-sans-paper),sans-serif;font-size:11px;letter-spacing:.14em;text-transform:none;font-weight:600;margin:12px 0 15px}.section-github>div>div:first-child:before,.section-projects>div>div:first-child:before,.section-work>div>div:first-child:before{content:"";display:block;width:25px;border-top:1px solid var(--ink);margin-bottom:25px}.experience-list{grid-column:2}.experience-paper{position:relative;background:var(--paper-raised);border-left:1px solid #fff;box-shadow:4px 7px 9px -8px #63513e70,-8px 0 13px -15px #4b3825;overflow:hidden}.experience-paper:after{content:"";position:absolute;inset:0 auto 0 0;width:8px;background:linear-gradient(90deg,#b9ad981c,transparent);pointer-events:none}.experience-paper h3{font-weight:600;text-transform:none;letter-spacing:-.02em;font-size:20px}.experience-paper .bg-black\/10,.experience-paper .bg-black\/15{background:#e9e1d466}.experience-paper a{color:var(--red)}.experience-paper li{line-height:1.8}.work-highlights{margin-top:20px;padding-top:15px}.work-highlights summary{cursor:pointer;display:flex;justify-content:space-between;font-weight:600;font-size:13px;list-style:none}.work-highlights summary span{font-size:10px;color:var(--red)}.work-highlights[open] summary{margin-bottom:20px}.project-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:26px}.project-paper{min-width:0;background:var(--paper-raised);padding:12px 12px 22px;border:1px solid #fffaf4;box-shadow:1px 4px 8px -6px #55422e77;transition:transform .25s,box-shadow .25s}.project-paper:hover{box-shadow:2px 10px 15px -10px #55422e77}.project-image{display:block;width:100%;border:1px solid var(--rule);box-shadow:3px 3px 0 #3636361c}.project-paper h3{font-size:16px;line-height:1.35;text-transform:none!important;letter-spacing:-.02em;color:var(--ink)!important;font-weight:600}.project-paper p{font-size:12px;line-height:1.75}.project-paper .pt-4{padding:19px 6px 0}.project-paper a{font-size:10px;background:transparent!important;padding-left:0;border-radius:0;color:var(--red)!important}.project-paper [data-state]{line-height:1.7}.section-projects>div>div:last-child{grid-column:2}.section-github .section-title span{display:inline!important;font-size:inherit}.section-github .section-title span+span:before{content:" "}.section-github>div>div:not(:first-child){grid-column:2}.section-github a.group{background:var(--paper-raised);border:0;border-bottom:1px solid var(--rule);border-radius:0;padding:19px 15px;box-shadow:none}.section-github a.group>div:first-child{width:28px;height:28px}.section-github .rounded-full.text-stone-900,.section-github a.group>div:first-child svg{color:white}.section-about>div{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:20px 60px}.section-about>div>div:first-child,.section-about>div>div:nth-child(2){grid-column:1}.section-about p{font-size:14px;line-height:1.9}.section-about .workbench{grid-column:2;grid-row:1/3;width:100%;align-self:center}.skill-grid{grid-column:1/-1;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:25px;border-top:1px solid var(--rule);padding-top:32px}.skill-grid h3{font-size:10px;letter-spacing:.06em;color:var(--red)!important}.skill-grid span{background:none!important;padding:0;font-size:12px;font-weight:400}.skill-grid>div>div{gap:7px 12px}.section-contact{padding-bottom:10px!important;border-bottom:0}.section-contact>div{text-align:left;max-width:1120px;display:grid;grid-template-columns:1fr 1fr;gap:25px 60px}.section-contact h2{font-family:var(--font-display-paper),sans-serif;font-size:clamp(55px,6vw,85px);line-height:.95;text-transform:none;font-weight:400;letter-spacing:-.04em}.section-contact h2 span{color:var(--red)}.section-contact>div>p{align-self:center;font-size:14px;line-height:1.9}.section-contact>div>div:last-child{justify-content:start;grid-column:1/-1}.section-contact button{font-size:11px;text-transform:none;border-radius:0}.section-contact button.bg-\[\#363636\]{color:white;font-weight:500}.paper-footer{background:var(--red);color:#fff5e6;padding:210px 6% 25px;position:relative;overflow:hidden}.footer-fold{position:absolute;top:0;left:0;width:100%;height:210px;pointer-events:none}.footer-meta{display:flex;align-items:end;gap:25px;font-size:11px}.footer-meta p{line-height:1.8;opacity:.75}.footer-meta nav{display:flex;gap:23px}.back-top{display:flex;gap:10px;align-items:center}.footer-name{font-family:var(--font-display-paper),sans-serif;font-size:clamp(65px,15.5vw,245px);line-height:1.05;margin:35px 0 20px;white-space:nowrap;text-align:center}.footer-bottom{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #fff5e63d;padding-top:23px;font-size:10px;color:#fff5e6ba}.footer-bottom>div{gap:23px}.blog-shell{min-height:70vh}.blog-index{padding-top:70px!important}.blog-index h1{font-family:var(--font-display-paper),sans-serif;text-transform:none;letter-spacing:-.05em;font-size:clamp(65px,8vw,120px);font-weight:400;color:var(--ink)}.blog-index>div>div:first-child{position:relative;border-bottom:1px solid var(--rule);padding-bottom:35px}.blog-index>div>div:first-child:after{content:none;display:block;font-size:9px;letter-spacing:.18em;margin-top:25px;color:var(--red)}.blog-index input{background:transparent;border:0;border-bottom:1px solid var(--rule);border-radius:0}.blog-index button{border-radius:0}.blog-index button.bg-\[\#363636\]{color:#fffaf2}.blog-feature{display:grid;grid-template-columns:1.15fr 1fr;gap:45px;align-items:center;padding:24px;background:var(--paper-raised);border:1px solid #fff;box-shadow:4px 9px 12px -12px #6c543b80;margin:35px 0 60px}.blog-feature img{width:100%;aspect-ratio:4/3;-o-object-fit:cover;object-fit:cover}.blog-feature h2{font-family:var(--font-display-paper),sans-serif;font-size:clamp(32px,3vw,48px);line-height:1.05;letter-spacing:-.03em;margin:16px 0}.blog-feature p{font-size:13px;line-height:1.8;color:var(--muted-ink)}.blog-feature time{font-size:10px;color:var(--muted-ink)}.blog-feature .text-link{margin-top:20px}.blog-card{background:var(--paper-raised)!important;border:1px solid #fff!important;border-radius:0!important;box-shadow:2px 5px 9px -8px #5b463180!important}.blog-card h3{font-family:var(--font-display-paper),sans-serif;font-size:29px;line-height:1.15;font-weight:500}.blog-card img{aspect-ratio:16/9;padding:12px 12px 0}.blog-card span.rounded-full{background:none;font-size:10px;padding:0 10px 0 0}.blog-article{padding-top:55px!important}.blog-article article{max-width:820px}.blog-article h1{font-family:var(--font-display-paper),sans-serif;font-size:clamp(40px,5vw,70px);line-height:1.05;font-weight:500;letter-spacing:-.04em}.blog-article article>div{padding:40px 45px!important;background:var(--paper-raised);box-shadow:4px 10px 20px -15px #58412e50}.blog-article .prose{font-size:16px;line-height:1.85;color:var(--ink)}.blog-article .prose h2,.blog-article .prose h3{font-family:var(--font-display-paper),sans-serif;font-weight:600;letter-spacing:-.02em;color:var(--ink)}.blog-article .prose h2{font-size:34px}.blog-article .prose li,.blog-article .prose p,.blog-article .prose strong,.blog-article .prose td,.blog-article .prose th{color:var(--ink)}.blog-article .prose a{color:var(--red);text-decoration-color:#36363670}.blog-article .prose pre{border-radius:2px!important;max-width:100%;overflow:auto}.blog-article .prose pre code{color:#e1e4e8!important}.blog-article .prose table{display:block;overflow:auto}.blog-article .prose img{border-radius:2px}.blog-article .prose blockquote{border-color:var(--red);color:var(--muted-ink)}[role=dialog]{border-radius:3px!important}[role=dialog] input,[role=dialog] textarea{border-radius:2px}[role=dialog] button[type=submit]{background:var(--red);color:#fff9ef}.paper-site [role=dialog]{color:var(--ink)}@keyframes paper-arrive{0%{opacity:0;transform:translateY(14px) rotate(-2deg)}to{opacity:1;transform:translateY(0) rotate(-1deg)}}@media (min-width:1500px){.paper-hero{min-height:850px}}@media (max-width:1100px){.desktop-nav{gap:14px;font-size:11px}.paper-header{gap:20px}.paper-hero{min-height:620px;grid-template-columns:.65fr 1fr 1.4fr;padding-left:4%;padding-right:4%}.hero-copy{padding-left:2%}.hero-copy h1{font-size:88px}.hero-identity p{font-size:15px}.section-github>div,.section-projects>div,.section-work>div{grid-template-columns:140px minmax(0,1fr);gap:25px}.paper-section{padding:65px 4%!important}.project-pair{gap:16px}}@media (max-width:800px){.desktop-nav,.header-contact{display:none}.menu-toggle{display:block;margin-left:auto;padding:8px}.paper-header{padding:12px 5%}.mobile-nav{position:absolute;top:100%;left:0;right:0;padding:20px 6% 30px;background:var(--paper-raised);box-shadow:0 15px 25px #35241418}.mobile-nav,.mobile-nav a{border-bottom:1px solid var(--rule)}.mobile-nav a{display:flex;justify-content:space-between;padding:14px 0;font-size:17px}.paper-hero{grid-template-columns:.9fr 1.1fr;min-height:590px;padding:20px 5% 75px;gap:0}.hero-identity{display:none}.hero-copy h1{font-size:clamp(55px,10vw,85px)}.hero-copy>p{font-size:12px}.hero-copy>.eyebrow{font-size:8px}.hero-actions{gap:14px;flex-wrap:wrap}.hero-social{gap:15px}.section-github>div,.section-projects>div,.section-work>div{display:block}.section-github>div>div:first-child,.section-projects>div>div:first-child,.section-work>div>div:first-child{position:static}.section-github .section-title,.section-projects .section-title,.section-work .section-title{font-family:var(--font-display-paper),sans-serif;font-size:48px;letter-spacing:-.04em;text-transform:none}.section-github>div>div:first-child:before,.section-projects>div>div:first-child:before,.section-work>div>div:first-child:before{display:none}.paper-section{padding:55px 6%!important}.section-about>div{gap:20px}.skill-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:25px}.section-contact>div{gap:20px;display:block}.section-contact h2{margin-bottom:20px}.footer-meta nav{gap:14px}.blog-feature{gap:25px;padding:18px}.blog-feature h2{font-size:32px}.footer-bottom>span:last-child{display:none}.blog-article article>div{padding:25px!important}}@media (max-width:520px){.paper-hero{min-height:auto;grid-template-columns:1fr 1fr;padding-top:20px;padding-bottom:65px;align-items:center}.hero-art{grid-row:1;grid-column:1}.hero-copy{display:contents}.hero-copy>.eyebrow{grid-column:2;grid-row:1;align-self:start;margin:30px 0 0 6px;font-size:7px;max-width:130px}.hero-copy h1{grid-column:2;grid-row:1;margin:35px 0 0 5px;font-size:61px;line-height:.85;letter-spacing:-.05em}.hero-copy>p{grid-column:1/-1;font-size:13px;padding:15px 0 0;margin:0}.hero-actions,.hero-social{grid-column:1/-1;margin-top:20px}.hero-bottom{bottom:18px;font-size:8px}.paper-brand svg{width:30px;height:30px}.paper-brand{font-size:10px}.project-pair{grid-template-columns:1fr;gap:25px}.project-paper{padding:12px 12px 22px}.project-paper h3{font-size:20px}.project-paper p{font-size:13px}.experience-paper h3{font-size:18px}.section-about>div{display:block}.section-about .workbench{margin:-25px 0 5px}.skill-grid{display:grid;grid-template-columns:1fr 1fr;gap:25px 20px}.section-contact{padding-bottom:0!important}.section-contact>div>div:last-child{align-items:start}.paper-footer{padding:155px 6% 22px}.footer-fold{height:135px}.footer-meta{align-items:start;flex-wrap:wrap;gap:25px}.footer-meta p{width:100%}.footer-meta nav{gap:12px;font-size:10px}.back-top{font-size:10px}.footer-name{font-size:19vw;margin:30px 0 20px}.footer-bottom{font-size:9px}.footer-bottom>div{gap:12px}.blog-index{padding-top:40px!important}.blog-feature{grid-template-columns:1fr;gap:20px;margin-bottom:35px}.blog-feature img{aspect-ratio:16/10}.blog-article{padding-left:16px!important;padding-right:16px!important}.blog-article article>div{padding:20px 16px!important}.blog-article .prose{font-size:15px}.blog-article h1{font-size:39px}.blog-article .prose h2{font-size:29px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto!important}*,:after,:before{animation:none!important;transition:none!important}.staircase{transform:none}}.hero-copy h1{font-weight:600;font-size:clamp(64px,7.1vw,116px);line-height:1.03;letter-spacing:-.065em}.blog-article h1,.blog-index h1,.section-contact h2,.section-title{font-weight:600;line-height:1.08;letter-spacing:-.05em}.blog-article .prose h2,.blog-article .prose h3,.blog-card h3,.blog-feature h2{font-weight:600;line-height:1.2;letter-spacing:-.035em}.blog-card h3{font-size:25px}.blog-index h1{font-size:clamp(46px,6.4vw,88px)}.blog-article h1{font-size:clamp(34px,4.4vw,58px)}.footer-name{font-weight:600;font-size:clamp(54px,12.6vw,195px);letter-spacing:-.06em}.blog-index button,.paper-button,.section-contact button,.section-github button,[role=dialog] button{border-radius:12px}.header-contact{border-radius:999px;padding:12px 18px}.hero-actions .text-link{border:1px solid var(--rule);border-radius:12px;padding:13px 19px}.blog-index button{border-radius:999px;padding:8px 14px}.blog-index input{border:1px solid var(--rule);background:var(--paper-raised);border-radius:14px}[role=dialog]{border-radius:20px!important}[role=dialog] input,[role=dialog] textarea{border-radius:10px}.project-paper a{padding:5px 8px;background:#36363608!important}.project-paper a,.project-paper button:not(.project-image),.work-highlights summary{border-radius:8px}@media(max-width:800px){.hero-copy h1{font-size:clamp(49px,8vw,70px)}.section-contact h2{font-size:54px}.blog-feature h2{font-size:30px}}@media(max-width:520px){.hero-copy h1{font-size:clamp(37px,10.2vw,53px);line-height:1.08;margin-top:34px}.hero-copy>.eyebrow{font-size:6px;margin-top:20px}.section-contact h2{font-size:43px}.blog-index h1{font-size:45px}.blog-article h1{font-size:32px}.footer-name{font-size:15.5vw}}.hero-copy h1{font-weight:700;letter-spacing:-.045em}.hero-identity{padding-top:0}.blog-article h1,.blog-index h1,.section-contact h2,.section-title{font-weight:700}.section-work{padding-bottom:36px!important}.section-projects{padding-top:36px!important}.paper-section:before{display:none}.paper-brand{letter-spacing:0;font-size:13px}.section-github .section-title,.section-projects .section-title,.section-work .section-title{letter-spacing:-.015em;font-size:19px}.paper-footer{padding-top:calc(25vw + 35px)}.footer-fold{height:auto;aspect-ratio:1440/360;top:-1px}@media(max-width:800px){.section-github .section-title,.section-projects .section-title,.section-work .section-title{font-size:38px}}@media(max-width:520px){.paper-footer{padding-top:145px}.footer-fold{width:160%;max-width:none;left:-60%;height:auto}.section-work{padding-bottom:25px!important}.section-projects{padding-top:28px!important}}.blog-article article>div,.blog-card,.blog-feature,.experience-paper,.project-paper{position:relative;isolation:isolate;background:transparent!important;border:0!important;box-shadow:none!important;overflow:visible}.blog-article article>div:before,.blog-card:before,.blog-feature:before,.experience-paper:before,.project-paper:before{content:"";position:absolute;inset:-16px;z-index:-1;pointer-events:none;border:48px solid transparent;-webkit-mask-image:linear-gradient(90deg,transparent,black 10px,black calc(100% - 10px),transparent),linear-gradient(180deg,transparent,black 10px,black calc(100% - 10px),transparent);mask-image:linear-gradient(90deg,transparent,black 10px,black calc(100% - 10px),transparent),linear-gradient(180deg,transparent,black 10px,black calc(100% - 10px),transparent);-webkit-mask-composite:source-in,xor;mask-composite:intersect}.experience-paper:after{display:none}.experience-list{display:flex;flex-direction:column;gap:30px}.experience-list>*{margin-top:0!important}.project-pair{gap:32px}.project-paper{padding:22px 24px 30px}.project-image{box-shadow:0 1px 3px #34271728;border:1px solid #bdb09d}.project-paper:hover{box-shadow:none;transform:translateY(-3px)}.blog-feature{padding:35px}.blog-article article>div{padding:48px!important}.paper-footer{padding:0 6% 25px!important}.material-contact-stage{position:relative;margin:0 -6.82%;height:66.6667vw;min-height:580px;max-height:1060px;overflow:hidden;background:linear-gradient(to bottom,var(--paper) 45%,var(--red) 65%)}.material-footer-art{position:absolute;inset:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center;pointer-events:none;-webkit-mask-image:linear-gradient(180deg,transparent,black 6%,black 90%,transparent);mask-image:linear-gradient(180deg,transparent,black 6%,black 90%,transparent)}.material-contact-stage .section-contact{position:relative;background:transparent!important;border:0;padding:70px 6% 0!important;color:var(--ink)}.material-contact-stage .section-contact>div{display:block;width:46%;margin:0;max-width:590px}.material-contact-stage .section-contact h2{font-size:clamp(45px,5.2vw,78px)}.material-contact-stage .section-contact>div>p{margin:24px 0}.material-contact-stage .section-contact>div>div:last-child{display:flex;flex-wrap:wrap;gap:16px;justify-content:flex-start}.material-contact-stage .section-contact button{background-color:var(--red);color:#fff9ef}.material-contact-stage .section-contact a button{background:transparent}.footer-meta{margin-top:12px}@media(max-width:800px){.material-contact-stage{min-height:640px}.material-contact-stage .section-contact{padding-top:45px!important}.material-contact-stage .section-contact>div{width:55%}.material-contact-stage .section-contact h2{font-size:45px}}@media(max-width:520px){.material-contact-stage{height:690px;min-height:0}.material-footer-art{-o-object-fit:cover;object-fit:cover;-o-object-position:58% bottom;object-position:58% bottom}.material-contact-stage .section-contact>div{width:100%}.material-contact-stage .section-contact{padding-top:35px!important}.material-contact-stage .section-contact h2{font-size:39px}.material-contact-stage .section-contact>div>p{max-width:290px;font-size:13px}.material-contact-stage .section-contact>div>div:last-child{flex-direction:row}.material-contact-stage .section-contact button{width:auto;padding:12px 20px}.material-contact-stage .section-contact a button{padding:10px}.project-paper{padding:20px 22px 26px}.blog-article article>div{padding:25px 20px!important}.blog-feature{padding:25px}}body{--font-display-paper:var(--font-sans-paper)}:root{--footer-ground:#363636}.footer-name,.hero-copy h1{font-weight:500;letter-spacing:-.055em}.blog-article h1,.blog-index h1,.section-contact h2,.section-title{font-weight:500}.theme-toggle{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:42px;height:42px;border:1px solid var(--rule);border-radius:50%;color:var(--ink);background:var(--paper-raised)}.theme-toggle:hover{background:var(--paper)}.paper-header{gap:22px;background:color-mix(in srgb,var(--paper) 96%,transparent);border-color:var(--rule)}.section-mark{width:38px;height:38px;margin-bottom:15px;color:var(--red)}.location-label{display:flex;align-items:center;gap:8px;margin-top:16px}.location-mark{width:26px;height:30px;color:var(--red);flex-shrink:0}.section-github>div>div:first-child:before,.section-projects>div>div:first-child:before,.section-work>div>div:first-child:before{display:none}.paper-footer{background:var(--footer-ground)}.material-contact-stage{background:linear-gradient(to bottom,var(--paper) 45%,var(--footer-ground) 65%)}.footer-meta{justify-content:space-between}.footer-bottom>div{display:flex;gap:12px}.footer-bottom>div a{display:flex;justify-content:center;align-items:center;width:44px;height:44px;border:1px solid #ffffff30;border-radius:50%}.footer-bottom>div a:hover{background:#ffffff15}.footer-bottom>div svg{width:19px;height:19px}.dark{--paper-raised:#222222}.dark .blog-article article>div:before,.dark .blog-card:before,.dark .blog-feature:before,.dark .experience-paper:before,.dark .project-paper:before{filter:grayscale(1) brightness(.17)}.dark .material-footer-art{filter:grayscale(1) brightness(.15)}.dark .staircase,.dark .workbench{filter:grayscale(1) brightness(.65)}.dark .blog-article,.dark .blog-index{background:var(--paper)!important}.dark :is(.paper-site,.blog-index,.blog-article,[role=dialog]) :is(.text-stone-900,.text-stone-800,.text-black){color:var(--ink)!important}.dark :is(.paper-site,.blog-index,.blog-article,[role=dialog]) :is(.text-stone-700,.text-stone-600,.text-black\/60,.text-black\/70){color:var(--body-ink)!important}.dark :is(.paper-site,.blog-index,.blog-article,[role=dialog]) .text-stone-500{color:var(--muted-ink)!important}.dark .material-contact-stage .section-contact button,.dark .paper-button{background:var(--ink);color:var(--paper)}.dark .material-contact-stage .section-contact a button{background:var(--paper-raised);color:var(--ink)}.dark .project-paper a{color:var(--ink)!important;background:#ffffff08!important}.dark .project-image{border-color:var(--rule)}.dark .prose{--tw-prose-body:var(--ink);--tw-prose-headings:var(--ink);--tw-prose-links:var(--ink);--tw-prose-bold:var(--ink);--tw-prose-quotes:var(--ink);--tw-prose-code:var(--ink)}.dark ::-moz-selection{background:#555;color:#fff}.dark ::selection{background:#555;color:#fff}@media(max-width:800px){.theme-toggle{margin-left:auto}.paper-header .menu-toggle{margin-left:0}}@media(max-width:520px){.paper-header{gap:12px}.section-mark{width:32px;height:32px;margin-bottom:12px}.footer-bottom{flex-wrap:wrap;gap:16px}.footer-bottom>span:first-child{display:block}}.dark .blog-index button.bg-\[\#363636\],.dark .material-contact-stage .section-contact button.bg-\[\#363636\],.dark [role=dialog] button[type=submit]{background:var(--ink)!important;color:var(--paper)!important}.dark .blog-article .text-\[\#363636\],.dark .blog-index .text-\[\#363636\]{color:var(--ink)}.dark .section-github .rounded-full.text-stone-900{color:white!important}.paper-curl{position:absolute;inset:0;overflow:hidden;pointer-events:none;background:linear-gradient(to bottom,var(--paper) 40%,var(--footer-ground) 70%)}.paper-curl canvas{position:absolute;inset:0;display:block;width:100%;height:100%;opacity:0}.paper-curl[data-ready=true] canvas{opacity:1}.paper-curl:after{content:"";position:absolute;inset:0;background:linear-gradient(to bottom,var(--paper),transparent 12%)}.paper-curl-fallback{position:absolute;inset:0;background:linear-gradient(145deg,var(--paper) 52%,var(--paper-raised) 56%,var(--rule) 60%,var(--footer-ground) 61%)}.paper-curl[data-ready=true] .paper-curl-fallback{opacity:0}.blog-article article>div:before,.blog-card:before,.blog-feature:before,.experience-paper:before,.project-paper:before{inset:0;border:1px solid color-mix(in srgb,var(--rule),transparent 40%);-o-border-image:none;border-image:none;-webkit-mask-image:none;mask-image:none;filter:none;background:linear-gradient(100deg,color-mix(in srgb,var(--rule),transparent 70%),transparent 22px),var(--paper-raised);box-shadow:inset 2px 0 1px color-mix(in srgb,var(--paper-raised),white 35%),0 9px 18px -15px #0007}.dark .blog-article article>div:before,.dark .blog-card:before,.dark .blog-feature:before,.dark .experience-paper:before,.dark .project-paper:before{filter:none}[role=dialog].project-preview{width:calc(100% - 32px);max-width:1100px;max-height:92dvh;padding:16px;gap:16px;overflow:auto;background:var(--paper-raised);color:var(--ink);border:1px solid var(--rule)}.project-preview-heading{min-height:48px;padding:2px 64px 0 2px}.project-preview-heading>span{font-size:11px;color:var(--muted-ink)}.project-preview-heading h2{margin-top:5px;font-size:16px;line-height:1.3}.project-preview-image{display:block;width:100%;max-height:calc(92dvh - 130px);-o-object-fit:contain;object-fit:contain;border-radius:8px;background:var(--paper)}[role=dialog] .dialog-close{border:1px solid var(--rule);border-radius:50%;box-shadow:none}[role=dialog]>div:has(>h2){padding-right:60px}.section-work .section-mark{margin-bottom:20px}@media(max-width:520px){.project-preview-heading h2{font-size:13px}}body{font-size:17px}.desktop-nav,.header-contact,.hero-actions .text-link,.hero-social,.paper-brand,.paper-button{font-size:15px}.paper-header{gap:18px}.desktop-nav{gap:20px}.hero-identity>p{font-size:22px}.hero-identity>span{font-size:15px}.hero-copy>p{font-size:18px;line-height:1.65}.paper-section h2+p{font-size:16px}.experience-paper h3{font-size:24px;line-height:1.25}.experience-paper li,.experience-paper p,.experience-paper>div>div:nth-child(2){font-size:17px;line-height:1.65}.experience-paper .text-sm,.experience-paper .text-xs,.experience-paper a span{font-size:15px}.experience-paper li{margin-top:18px;padding-left:5px}.work-highlights{border-top:1px solid var(--rule);padding-top:24px;margin-top:24px}.work-highlights h4{font-size:20px;font-weight:500;margin-bottom:18px;color:var(--ink)}.work-highlights ul{list-style-position:outside;padding-left:22px}.work-highlights li{font-size:17px!important;line-height:1.7}.project-paper h3{font-size:22px;line-height:1.3}.project-paper p{font-size:17px;line-height:1.65}.project-paper .text-xs,.project-paper a,.project-paper button:not(.project-image){font-size:14px}.section-github .text-sm{font-size:16px}.section-github .text-xs{font-size:14px}.section-about p{font-size:18px;line-height:1.75}.skill-grid h3,.skill-grid span{font-size:15px;line-height:1.6}.material-contact-stage .section-contact>div>p{font-size:17px;line-height:1.7}.material-contact-stage .section-contact button{font-size:15px}.back-top,.footer-bottom,.footer-meta,.footer-meta nav{font-size:14px}.footer-meta nav{flex-wrap:wrap}.blog-card p,.blog-feature p{font-size:17px;line-height:1.65}.blog-article .text-xs,.blog-index .text-xs,.blog-index button{font-size:14px}.blog-article .prose{font-size:18px}[role=dialog] input,[role=dialog] textarea{font-size:16px}@media(max-width:1100px){.desktop-nav,.paper-header{gap:12px}.paper-brand{font-size:14px}}@media(max-width:800px){.experience-paper h3{font-size:22px}.hero-copy>p,.section-about p{font-size:17px}.experience-paper li,.experience-paper p,.work-highlights li{font-size:16px!important}.blog-card p,.project-paper p{font-size:16px}.hero-social{font-size:14px}.footer-meta nav{gap:16px}.blog-article .prose{font-size:17px}}@media(max-width:520px){.paper-brand{font-size:14px}.hero-actions{flex-wrap:wrap}.hero-actions .paper-button,.hero-actions .text-link{font-size:14px;padding:13px 16px}.material-contact-stage{min-height:760px;height:760px}.material-contact-stage .section-contact>div>p{font-size:16px}.material-contact-stage .section-contact>div>div:last-child{gap:12px}.material-contact-stage .section-contact button{font-size:14px}.footer-meta{align-items:flex-start}.back-top,.footer-bottom,.footer-meta nav{font-size:13px}}.work-role-details{list-style:disc;padding-left:22px;margin-top:18px}.work-contract-note{color:var(--muted-ink);margin:24px 0 0;padding-top:18px;border-top:1px solid var(--rule)}.opensource-feature{padding:28px;margin-bottom:28px;border:1px solid var(--rule);border-radius:14px;background:var(--paper-raised)}.opensource-feature h3{font-size:23px;line-height:1.3;font-weight:500;margin-bottom:16px}.opensource-feature p{font-size:17px;line-height:1.7;margin-bottom:16px;color:var(--muted-ink)}.opensource-feature a{display:inline-flex;align-items:center;gap:8px;color:var(--red);font-size:15px}@media(max-width:800px){.opensource-feature{grid-column:1!important;padding:22px}.opensource-feature p{font-size:16px}}.viral-gallery-trigger{display:inline-flex;align-items:center;gap:9px;padding:10px 12px;border:1px solid var(--rule);border-radius:10px;font-size:15px;color:var(--ink)}[role=dialog].viral-gallery{width:calc(100% - 32px);max-width:1100px;max-height:calc(100dvh - 32px);padding:20px;gap:18px;background:var(--paper-raised);color:var(--ink);border:1px solid var(--rule);overflow:hidden}.viral-gallery-heading{padding-right:64px;min-height:48px}.viral-gallery-heading h2{font-size:20px;line-height:1.25}.viral-gallery-heading p{font-size:14px;color:var(--muted-ink);margin-top:5px}.viral-gallery-image{display:flex;justify-content:center;align-items:center;min-height:0;height:min(65dvh,650px);overflow:auto;border-radius:10px;background:var(--paper)}.viral-gallery-image img{display:block;width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.viral-gallery-controls{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:14px}.viral-gallery-controls button{display:inline-flex;gap:7px;align-items:center;justify-content:center;min-height:44px;padding:9px 14px;border:1px solid var(--rule);border-radius:999px}.viral-gallery-controls button:hover{background:var(--paper)}@media(max-width:520px){[role=dialog].viral-gallery{padding:16px;gap:14px}.viral-gallery-image{height:min(58dvh,600px)}.viral-gallery-controls button{padding:9px 10px}}.light,:root{--paper:#f1f1ef;--paper-raised:#fafaf9;--ink:#242424;--muted-ink:#616161;--red:#363636;--rule:#d5d5d2;--footer-ground:#252525;--background:0 0% 95%;--foreground:0 0% 14%;--card:0 0% 98%;--card-foreground:0 0% 14%;--popover:0 0% 98%;--popover-foreground:0 0% 14%;--primary:0 0% 21%;--primary-foreground:0 0% 98%;--secondary:0 0% 89%;--secondary-foreground:0 0% 14%;--muted:0 0% 90%;--muted-foreground:0 0% 38%;--accent:0 0% 88%;--accent-foreground:0 0% 14%;--border:0 0% 83%;--input:0 0% 80%;--ring:0 0% 30%;color-scheme:light}.dark{--paper:#181818;--paper-raised:#222;--ink:#eeece8;--muted-ink:#a6a6a6;--red:#d4d2ce;--rule:#393939;--footer-ground:#101010;--background:0 0% 9%;--foreground:0 0% 93%;--card:0 0% 13%;--card-foreground:0 0% 93%;--popover:0 0% 13%;--popover-foreground:0 0% 93%;--primary:0 0% 87%;--primary-foreground:0 0% 10%;--secondary:0 0% 19%;--secondary-foreground:0 0% 93%;--muted:0 0% 18%;--muted-foreground:0 0% 65%;--accent:0 0% 22%;--accent-foreground:0 0% 93%;--border:0 0% 23%;--input:0 0% 28%;--ring:0 0% 75%;color-scheme:dark}::-moz-selection{background:#bdbdbd;color:#181818}::selection{background:#bdbdbd;color:#181818}.light .blog-card:before,.light .experience-paper:before,.light .material-footer-art,.light .project-paper:before,.light .staircase,.light .workbench{filter:grayscale(1)}body{font-size:19px}.desktop-nav,.header-contact,.hero-actions .text-link,.hero-social,.paper-brand,.paper-button{font-size:17px}.hero-identity>p{font-size:25px}.hero-identity>span{font-size:18px}.hero-copy>p,.section-about p{font-size:21px;line-height:1.65}.paper-section h2+p{font-size:19px}.experience-paper h3{font-size:29px}.experience-paper li,.experience-paper p,.experience-paper>div>div:nth-child(2),.work-highlights li{font-size:19px!important;line-height:1.7}.experience-paper .text-sm,.experience-paper .text-xs,.experience-paper a span{font-size:17px}.project-paper h3,.work-highlights h4{font-size:25px}.blog-card p,.blog-feature p,.opensource-feature p,.project-paper p{font-size:19px;line-height:1.65}.project-paper .text-xs,.project-paper a,.project-paper button:not(.project-image),.section-github .text-sm,.skill-grid h3,.skill-grid span{font-size:17px}.back-top,.footer-bottom,.footer-meta,.footer-meta nav,.section-github .text-xs{font-size:16px}.blog-article .prose{font-size:21px;line-height:1.8}.material-contact-stage{height:auto;min-height:0;max-height:none;padding-bottom:170px}.material-contact-stage .section-contact{padding-top:55px!important}.material-contact-stage .section-contact>div{width:58%;max-width:700px}.material-contact-stage .section-contact>div>p{font-size:20px}.material-contact-stage .section-contact button{font-size:17px}.material-contact-stage .section-contact button:not([data-slot]){letter-spacing:normal}.hero-workshop{display:block;width:100%;height:auto;overflow:visible;--art-face:#c7c1b9;--art-light:#fafaf8;--art-mid:#d2d2ce;--art-shadow:#8c8c89;--art-line:#484847;--art-dark:#30302f}.dark .hero-workshop{--art-face:#a9a39b;--art-light:#a4a4a1;--art-mid:#646463;--art-shadow:#3c3c3c;--art-line:#202020;--art-dark:#242424}@media(max-width:1100px){.desktop-nav{font-size:16px;gap:12px}}@media(max-width:800px){.material-contact-stage{padding-bottom:130px}.material-contact-stage .section-contact>div{width:100%;max-width:620px}.material-contact-stage .section-contact h2{font-size:56px}.hero-copy>p,.section-about p{font-size:20px}}@media(max-width:520px){body{font-size:18px}.paper-brand{font-size:17px}.experience-paper h3{font-size:25px}.experience-paper li,.experience-paper p,.work-highlights li{font-size:18px!important}.blog-card p,.opensource-feature p,.project-paper p{font-size:18px}.hero-actions .paper-button,.hero-actions .text-link,.hero-social{font-size:17px}.material-contact-stage{height:auto;min-height:0;padding-bottom:105px}.material-contact-stage .section-contact h2{font-size:48px}.material-contact-stage .section-contact>div>p{font-size:19px;max-width:100%}.material-contact-stage .section-contact button{font-size:16px}.blog-article .prose{font-size:19px}.footer-meta nav{flex-wrap:wrap;gap:16px}}.blog-index button[class*="bg-[var(--red)]"],.section-contact button,[role=dialog] button[type=submit]{background:var(--red);color:var(--paper-raised)}.dark .blog-index button[class*="bg-[var(--red)]"],.dark .section-contact button,.dark [role=dialog] button[type=submit]{color:var(--paper)}.material-contact-stage .section-contact a button{background:var(--paper-raised);color:var(--ink)}.light .hero-workshop{filter:grayscale(1)}.hero-art:has(.hero-workshop){transform:none}.material-contact-stage .section-contact button.contact-email{background:var(--ink)!important;color:var(--paper)!important;min-height:52px;font-weight:600}.paper-curl:after{background:linear-gradient(to bottom,var(--paper),transparent 24%)}.experience-heading{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:20px 28px;margin-bottom:24px}.experience-heading>div{flex:1 1 430px;min-width:0}.experience-heading>span{flex:0 0 auto;margin:0;max-width:100%}.experience-heading h3{overflow-wrap:anywhere}.experience-paper .download-count{color:var(--muted-ink)!important;margin-top:16px;font-weight:500}.store-icon{width:22px;height:22px;flex-shrink:0;color:var(--ink)}.experience-paper a[href*="play.google.com"] .store-icon{color:#58b99c!important}.experience-paper a[href*="apps.apple.com"],.experience-paper a[href*="play.google.com"]{gap:10px;min-height:44px;border:1px solid var(--rule);padding:10px 14px}.project-award{display:flex;flex-direction:column;align-items:flex-start;gap:12px;margin:16px 0}.project-paper .award-pill{display:inline-flex;align-items:center;gap:9px;padding:8px 13px;border-radius:999px;background:#ede3c9;color:#655016;font-size:16px;font-weight:600}.project-paper .award-description{color:var(--ink)!important;margin:0;font-size:17px;line-height:1.5}.dark .project-paper .award-pill{background:#373329;color:#e3ca87}.technology-pills{display:flex;flex-wrap:wrap;gap:9px;margin:20px 0}.project-paper .technology-pill{padding:7px 12px;border:1px solid;border-radius:999px;font-size:15px;line-height:1.4;font-weight:500;max-width:100%;overflow-wrap:anywhere}.technology-pill.tone-0{background:#e2eeec;color:#315d55;border-color:#c7dad5}.technology-pill.tone-1{background:#e5eaf3;color:#405a85;border-color:#cdd7e6}.technology-pill.tone-2{background:#ede7f1;color:#6c507a;border-color:#ddcfe6}.technology-pill.tone-3{background:#eee9de;color:#776039;border-color:#dfd3bc}.dark .technology-pill.tone-0{background:#263a35;color:#b7dacd;border-color:#3c544c}.dark .technology-pill.tone-1{background:#293445;color:#b9ccec;border-color:#3d4d65}.dark .technology-pill.tone-2{background:#382e40;color:#d3bce1;border-color:#51405c}.dark .technology-pill.tone-3{background:#3c3528;color:#e3cea4;border-color:#584a33}@media(max-width:520px){.experience-heading{gap:16px}.experience-heading>div{flex-basis:100%}.project-paper .technology-pill{font-size:14px}}.hero-workshop{--scene-stone:#d3d7da;--scene-top:#e9ecee;--scene-side:#b5bcc3;--scene-line:#9aa5b0;--scene-light:#819db6;--scene-window:#e1e8ef;--art-face:#d9b99d;--art-light:#626b76;--art-mid:#454c56;--art-line:#343639}.dark .hero-workshop{--scene-stone:#30353d;--scene-top:#555d69;--scene-side:#232830;--scene-line:#4b5562;--scene-light:#a4bfd7;--scene-window:#252e3b;--art-face:#d9b99d;--art-light:#535b66;--art-mid:#323943;--art-line:#303237}.light .hero-workshop{filter:none}.hero-workshop{--portrait-paper:#e3e3df;--portrait-shade:#c1c1bd;--portrait-face:#deded9;--portrait-line:#555552;--portrait-hair:#30302e;--portrait-hair-detail:#777773;--portrait-window:#eeeee9;filter:none}.dark .hero-workshop{--portrait-paper:#969694;--portrait-shade:#686866;--portrait-face:#b0b0ab;--portrait-line:#353533;--portrait-hair:#292928;--portrait-hair-detail:#666663;--portrait-window:#6c6c69;filter:none}@media(min-width:1101px){.paper-hero{grid-template-columns:minmax(145px,.6fr) minmax(280px,1fr) minmax(0,1.4fr);gap:clamp(28px,3vw,52px);padding-top:48px;padding-bottom:80px}.hero-copy{padding-left:0;min-width:0}.hero-copy h1{font-size:clamp(64px,6.2vw,102px);margin-bottom:38px}.hero-art{padding:18px 0}.hero-identity>p{font-size:23px}}@media(min-width:521px) and (max-width:1100px){.paper-hero{grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:32px;padding-top:42px}.hero-identity{display:none}.hero-copy{padding:0;min-width:0}.hero-copy h1{font-size:clamp(48px,6.7vw,74px)}.hero-actions{flex-wrap:wrap}}@media(max-width:520px){.paper-hero{-moz-column-gap:18px;column-gap:18px}.hero-copy h1{font-size:clamp(34px,9vw,46px)}}.blog-article article>div,.blog-card,.blog-feature,.experience-paper,.opensource-feature,.project-paper,.section-github .activity-paper{border-radius:2px!important;background:linear-gradient(125deg,var(--paper-raised),color-mix(in srgb,var(--paper-raised) 94%,var(--rule)))!important;border:1px solid color-mix(in srgb,var(--rule) 70%,transparent)!important;box-shadow:0 1px 0 color-mix(in srgb,var(--ink) 8%,transparent) inset,0 8px 18px -14px #0008!important}.blog-article article>div:before,.blog-card:before,.blog-feature:before,.experience-paper:before,.project-paper:before{display:none}.experience-summary{margin:24px 0;padding:24px 0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);background:none;border-radius:0}.experience-heading>span{background:none;border-radius:0;padding:0;color:var(--muted-ink)!important;font-weight:500}.paper-footer .footer-meta{margin-top:0;padding-top:clamp(36px,4vw,64px);gap:24px}.paper-curl canvas{-webkit-mask-image:none;mask-image:none}.paper-curl:after{display:none}.hero-step{animation:stair-stack 7.5s cubic-bezier(.45,0,.2,1) infinite both}@keyframes stair-stack{0%,14%,88%,to{transform:translate(0)}40%,54%{transform:translate(var(--step-stack-x),var(--step-stack-y))}}@media(prefers-reduced-motion:reduce){.hero-step{animation:none}}.hero-workshop{--portrait-eye:#f4f4ef}.dark .hero-workshop{--portrait-eye:#d5d5d0}.portrait-blink{transform-box:view-box;transform-origin:560px 570px;animation:portrait-blink 8.6s linear infinite}@keyframes portrait-blink{0%,42%,44%,87%,89%,to{transform:scaleY(1)}42.8%,87.8%{transform:scaleY(.055)}}@media(prefers-reduced-motion:reduce){.portrait-blink{animation:none}}.bench-print-bed{animation:bench-print-travel 6s ease-in-out infinite}@keyframes bench-print-travel{0%,to{transform:translate(0)}48%,58%{transform:translate(-24px,12px)}}.bench-drawer{animation:bench-drawer-slide 12s ease-in-out infinite}@keyframes bench-drawer-slide{0%,28%,76%,to{transform:translate(0)}42%,62%{transform:translate(-26px,10px)}}.bench-lamp-light{animation:bench-lamp-glow 10s ease-in-out infinite}@keyframes bench-lamp-glow{0%,15%,90%,to{opacity:.08}28%,72%{opacity:1}}@media(prefers-reduced-motion:reduce){.bench-drawer,.bench-print-bed{animation:none}.bench-lamp-light{animation:none;opacity:.6}}.section-github .activity-paper{padding:22px 24px;gap:16px;transition:border-color .2s ease,box-shadow .2s ease}.section-github .activity-paper:hover{border-color:var(--muted-ink)!important}.section-github .activity-paper>div:first-child{width:32px;height:32px;background:transparent;border-radius:0}.section-github .activity-symbol svg{color:var(--muted-ink)!important}.section-github .activity-status{display:inline-flex;align-items:center;font-size:13px;font-weight:500;line-height:1.4;border:1px solid;border-radius:999px;padding:3px 9px}.activity-status.pr-open{color:#376b56;background:#e5eee8;border-color:#c9ddcf}.activity-status.pr-merged{color:#705980;background:#eee8f2;border-color:#dbcee4}.activity-status.pr-closed{color:#67635d;background:#ece9e3;border-color:#d8d4cc}.dark .activity-status.pr-open{color:#afcdbb;background:#27372e;border-color:#3b4e42}.dark .activity-status.pr-merged{color:#c8bbd4;background:#342d3b;border-color:#4c4056}.dark .activity-status.pr-closed{color:#c3bfb7;background:#33312d;border-color:#49463f}@media(max-width:520px){.section-github .activity-paper{padding:18px 16px;gap:12px}}.portrait-blink{animation-duration:5.8s}.portrait-gaze{animation:portrait-glance 7s ease-in-out infinite}@keyframes portrait-glance{0%,18%,46%,62%,to{transform:translateX(0)}23%,39%{transform:translateX(4px)}69%,86%{transform:translateX(-4px)}}.hero-step{animation-duration:5.2s}.window-model{transform-box:fill-box;transform-origin:center;animation:window-model-float 4.8s ease-in-out infinite}@keyframes window-model-float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.window-code-cursor{animation:code-cursor 1.1s steps(2) infinite}@keyframes code-cursor{50%{opacity:0}}.window-code-line{stroke-dasharray:1;animation:code-line-type 4s ease-in-out infinite}@keyframes code-line-type{0%,12%{stroke-dashoffset:1}48%,85%{stroke-dashoffset:0}to{stroke-dashoffset:1}}@media(prefers-reduced-motion:reduce){.hero-step,.portrait-blink,.portrait-gaze,.window-code-cursor,.window-code-line,.window-model{animation:none}}.skill-grid .skill-logo-list{display:flex;flex-direction:column;align-items:flex-start;gap:13px}.skill-grid .skill-with-logo{display:inline-flex;align-items:center;gap:11px;padding:2px 0;background:none;border:0;color:var(--muted-ink);font-weight:400;line-height:1.5}.skill-grid .technology-logo{display:block;width:22px;height:22px;flex:0 0 22px;-o-object-fit:contain;object-fit:contain}.dark .technology-logo-mono{filter:brightness(0) invert(.88)}@media(max-width:520px){.skill-grid .skill-with-logo{font-size:16px;gap:9px}}.paper-curl[data-ready=true]{background:var(--footer-ground)}.material-contact-stage .contact-social-button{display:flex;align-items:center;justify-content:center;width:52px;height:52px;border:1px solid #9a9a96;border-radius:12px;color:#242424;background:#e8e8e4;transition:background .2s,transform .2s}.dark .material-contact-stage .contact-social-button{color:#f6f6f2;background:#3b3b39;border-color:#858582}.material-contact-stage .contact-social-button svg{width:23px;height:23px;color:inherit!important}.material-contact-stage a:hover .contact-social-button{background:var(--ink);color:var(--paper);transform:translateY(-2px)}.blog-index button.blog-filter-pill{color:var(--ink);background:var(--paper-raised);border:1px solid var(--rule);border-radius:999px;padding:9px 15px;min-height:44px;font-weight:500}.blog-index button.blog-filter-pill:hover{border-color:var(--muted-ink);background:var(--paper)}.blog-index button.blog-filter-pill[aria-pressed=true]{background:var(--ink);color:var(--paper);border-color:var(--ink);font-weight:600}.blog-index button.blog-filter-pill:focus-visible{outline:2px solid var(--ink);outline-offset:3px}.dark{--body-ink:#d4d4d1;--muted-ink:#b7b7b3;--muted-foreground:0 0% 72%}.dark .experience-paper li,.dark .hero-copy>p,.dark :is(.section-about,.experience-paper,.project-paper,.blog-card,.blog-feature,.opensource-feature,.section-contact) p{color:var(--body-ink)!important}.dark .blog-article .prose{--tw-prose-body:var(--body-ink)}.dark .skill-grid .skill-with-logo{color:var(--body-ink)}.dark .experience-heading p,.dark .experience-paper .download-count,.dark .work-contract-note{color:var(--muted-ink)!important}.portrait-working-head{transform-box:view-box;transform-origin:560px 800px;animation:working-head 14s ease-in-out infinite}@keyframes working-head{0%,5%,88%,to{transform:translateY(0) scaleY(1)}12%,40%,60%,78%{transform:translateY(9px) scaleY(.975)}46%,54%{transform:translateY(5px) scaleY(.985)}}.portrait-gaze{animation:working-gaze 14s ease-in-out infinite}@keyframes working-gaze{0%,5%,88%,to{transform:translate(0)}12%,40%,60%,78%{transform:translateY(4px)}46%{transform:translate(-3px,3px)}54%{transform:translate(3px,3px)}}.window-code-line{animation:working-code 14s linear infinite}@keyframes working-code{0%,8%{stroke-dashoffset:1}40%,55%{stroke-dashoffset:.45}78%,94%{stroke-dashoffset:0}to{stroke-dashoffset:1}}@media(prefers-reduced-motion:reduce){.portrait-gaze,.portrait-working-head,.window-code-line{animation:none}}.project-pair{grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:28px;align-items:start}@media(max-width:1100px){.section-projects>div{display:block}.section-projects>div>div:first-child{position:static}.section-projects .project-pair{grid-template-columns:minmax(0,1fr)}.section-projects .project-paper{width:100%}}@media(max-width:600px){.section-projects{padding-left:5%!important;padding-right:5%!important}.section-projects .project-paper{padding:20px}}