.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}@font-face{font-family:General Sans;src:url(/fonts/general-sans-400.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:General Sans;src:url(/fonts/general-sans-500.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Fraunces;src:url(/fonts/fraunces-var.woff2)format("woff2");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:DM Mono;src:url(/fonts/dm-mono-400.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:DM Mono;src:url(/fonts/dm-mono-500.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}:root{--font-display:"Fraunces", Georgia, "Times New Roman", serif;--font-body:"General Sans", system-ui, sans-serif;--font-mono:"DM Mono", ui-monospace, "SF Mono", monospace;--radius:8px;--container:1000px;--icon-size:20px;--icon-size-hero:24px;--icon-toggle:25px}:root[data-wipe=light]::view-transition-old(root){animation:none}:root[data-wipe=light]::view-transition-new(root){animation:.45s linear forwards theme-wipe}:root[data-wipe=dark]::view-transition-old(root){z-index:1;animation:.45s linear forwards theme-absorb}:root[data-wipe=dark]::view-transition-new(root){animation:none}@keyframes theme-wipe{0%{clip-path:circle(0px at var(--vt-x,50%) var(--vt-y,50%))}to{clip-path:circle(var(--vt-r,140vmax) at var(--vt-x,50%) var(--vt-y,50%))}}@keyframes theme-absorb{0%{clip-path:circle(var(--vt-r,140vmax) at var(--vt-x,50%) var(--vt-y,50%))}to{clip-path:circle(0px at var(--vt-x,50%) var(--vt-y,50%))}}*{box-sizing:border-box;margin:0;padding:0}img{-webkit-user-drag:none}html{scroll-behavior:smooth;overflow-x:clip}body{background:var(--background);color:var(--primary-text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;flex-direction:column;min-height:100dvh;font-size:16px;line-height:1.6;transition:background .2s,color .2s;display:flex;overflow-x:clip}main{flex:1}h1,.sec-head h2,.wordmark,.post-card a.pc-title,.xp-what h3,.card .proj,.prose h2,.prose h3,.prose h4{font-family:var(--font-display);font-variation-settings:"SOFT" 100}.wrap{max-width:var(--container);margin:0 auto;padding:0 24px}.mono{font-family:var(--font-mono)}.pitch b,.bio b,.prose strong,.xp-what>p b{color:var(--primary-text);font-weight:500}.bio a,.prose a{color:var(--accent);text-decoration:underline;text-decoration-color:color-mix(in srgb, var(--accent) 45%, transparent);text-underline-offset:3px}.bio a:hover,.prose a:hover{text-decoration-color:var(--accent)}.bio a{font-weight:500}.xp-when,.post-card .meta,.post-meta{font-family:var(--font-mono);color:var(--secondary-text);font-size:12.5px}.post-card .meta a.tag,.post-meta a.tag,.all-posts a{color:var(--accent);margin:-12px 0;padding:12px 0;text-decoration:none;transition:scale .12s;display:inline-block}.post-card .meta a.tag{margin:-4px -8px;padding:4px 8px}.post-meta{flex-wrap:wrap;align-items:center;gap:0 12px;display:flex}.post-meta a.tag{margin:-4px -8px;padding:4px 8px}.post-card .meta a.tag:hover,.post-meta a.tag:hover,.all-posts a:hover{text-decoration:underline}a{color:inherit}nav{backdrop-filter:blur(8px);background:color-mix(in srgb, var(--background) 80%, transparent);border-bottom:1px solid var(--border);z-index:10;position:sticky;top:0}[id]{scroll-margin-top:76px}nav .wrap{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:clamp(4px,1vw,16px);min-height:60px;display:flex}.wordmark{font-family:var(--font-display);letter-spacing:-.02em;color:var(--primary-text);user-select:none;align-items:center;gap:.26em;margin:-8px 0;padding:8px clamp(4px,11.4vw - 32.41px,12px) 8px 0;font-size:21px;font-weight:500;text-decoration:none;display:inline-flex}.wordmark .mark{width:auto;height:1em}.wordmark .mark path{fill:var(--primary-text)}.wordmark span span{color:var(--accent)}.nav-links{--link-pad-x:clamp(2px, calc(8.1px - (390px - 100vw) * .081), 8px);font-family:var(--font-mono);user-select:none;flex-wrap:wrap;align-items:center;gap:clamp(8px,8.57vw - 19.423px,24px);font-size:14px;display:flex}.nav-links a{color:var(--secondary-text);min-width:44px;min-height:48px;padding:0 var(--link-pad-x);justify-content:center;align-items:center;text-decoration:none;transition:scale .12s;display:inline-flex;position:relative}.nav-links a:after{content:"";left:var(--link-pad-x);right:var(--link-pad-x);background:var(--accent);transform-origin:0;border-radius:1px;height:2px;transition:transform .15s;position:absolute;bottom:10px;transform:scaleX(0)}.nav-links a:hover:after{transform:scaleX(1)}.nav-links a:hover,.nav-links a.active{color:var(--accent)}#theme-toggle{width:48px;height:48px;color:var(--secondary-text);cursor:pointer;background:0 0;border:none;place-items:center;margin-right:-16px;padding:0;transition:color .15s,scale .12s;display:inline-grid}#theme-toggle:hover{color:var(--accent)}#theme-toggle:hover svg,#theme-toggle.icon-fill svg{fill:var(--accent);stroke:var(--accent)}#theme-toggle span{grid-area:1/1;place-items:center;transition:opacity .3s,transform .3s;display:grid}#theme-toggle svg{width:var(--icon-toggle);height:var(--icon-toggle)}:root[data-theme=dark] #theme-toggle .when-dark,:root[data-theme=light] #theme-toggle .when-light{opacity:0;transform:rotate(90deg)scale(.6)}section{padding:clamp(48px,5.5vw,72px) 0}.sec-head{align-items:baseline;gap:16px;margin-bottom:40px;display:flex}.sec-head h2{letter-spacing:-.015em;font-size:26px;font-weight:500}.sec-head .rule{background:var(--border);transform-origin:0;flex:1;height:1px;transition:transform .4s ease-out .12s}.js .sec-head.reveal .rule{transform:scaleX(0)}.js .sec-head.reveal.in .rule{transform:scaleX(1)}header.hero{padding:clamp(96px,9vw,120px) 0 clamp(32px,4vw,48px)}header.hero.nf{padding:140px 0 180px}header.hero.nf h1{letter-spacing:-.03em;font-size:clamp(96px,22vw,180px);line-height:1}header.hero.nf h1 span{color:var(--accent)}@media (width>=725px){header.hero.nf h1{font-size:min(clamp(88px,20vw,190px),18.8679vw - clamp(420px,46vw,620px)/5.3 + 56.6038px)}header.hero.nf{padding-bottom:clamp(56px,6vw,80px)}}.nf-msg{font-family:var(--font-mono);color:var(--secondary-text);margin-top:18px;font-size:14px}.nf-links{font-family:var(--font-mono);gap:28px;margin-top:36px;font-size:13.5px;display:flex}.nf-links a{color:var(--accent);text-decoration:none}.nf-links a:hover{text-decoration:underline}h1{letter-spacing:-.02em;margin-bottom:12px;font-size:36px;font-weight:500;line-height:1.15}.role{color:var(--secondary-text);margin-bottom:20px;font-size:15px}.pitch{max-width:620px;color:var(--secondary-text);margin-bottom:32px}.contact-actions{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.contact-actions a{border-radius:var(--radius);align-items:center;gap:8px;height:42px;padding:0 22px;font-size:15px;font-weight:500;text-decoration:none;transition:transform .15s,border-color .15s,scale .12s;display:inline-flex}.contact-actions a svg{width:16px;height:16px}.contact-actions .primary{background:var(--accent);color:var(--surface);transition:transform .15s,background-color .15s,scale .12s}.contact-actions .primary:hover{background:var(--accent-hover);transform:translateY(-1px)}.contact-actions .tonal{background:var(--surface);color:var(--primary-text);border:1px solid var(--border)}.contact-actions .tonal:hover{border-color:var(--faint)}.contact-actions .check{display:none}.contact-actions a.copied .check{display:block}.contact-actions a.copied .mail{display:none}.social-row{gap:18px;display:flex}header.hero .social-row svg{width:var(--icon-size-hero);height:var(--icon-size-hero)}.social-row a{color:var(--secondary-text);place-items:center;margin:-10px;padding:10px;transition:color .15s,scale .12s;display:inline-grid}.social-row a:hover{color:var(--accent)}footer .social-row a{margin:-12px;padding:12px}.social-row svg{width:var(--icon-size);height:var(--icon-size);grid-area:1/1;transition:opacity .15s,transform .15s;display:block}.social-row svg.check{color:var(--accent);opacity:0;transform:scale(.6)rotate(-15deg)}.social-row a.copied svg.check{opacity:1;transform:none}.social-row a.copied>svg:not(.check){opacity:0;transform:scale(.6)}.social-row a[data-copy]{position:relative}.social-row .copy-chip{white-space:nowrap;font-family:var(--font-mono);color:var(--primary-text);background:var(--surface);border:1px solid var(--border);opacity:0;pointer-events:none;z-index:1;border-radius:6px;padding:4px 10px;font-size:13px;transition:opacity .15s,transform .15s;position:absolute;bottom:calc(100% - 2px);left:50%;transform:translate(-50%)translateY(4px)}.social-row a.copied .copy-chip{opacity:1;transform:translate(-50%)translateY(0)}footer .social-row .copy-chip{bottom:calc(100% - 4px)}header.hero.about{padding:96px 0 64px}header.hero.about h1{margin-bottom:24px}.hero-cols{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:48px;display:grid}.hero-cols .contact-actions.stack{flex-direction:column;align-items:stretch;padding-top:65px}.bio{max-width:660px;color:var(--secondary-text);gap:18px;display:grid}.bio code,.pitch code{font-family:var(--font-mono);color:var(--primary-text);background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:1px 5px;font-size:.85em}.cards{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;display:grid}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;padding:24px;transition:transform .15s,border-color .15s;display:flex;position:relative}.card .stretch{display:block}.card .stretch:after{content:"";border-radius:var(--radius);position:absolute;inset:0}.card:hover,.card:has(.stretch:focus-visible){border-color:color-mix(in srgb, var(--accent) 50%, var(--border));transform:translateY(-3px)}.card .proj{letter-spacing:-.01em;align-items:center;gap:10px;margin-bottom:8px;font-size:22px;font-weight:500;display:flex}.card .proj .mark{flex-shrink:0;width:36px;height:36px}.card .proj .mark-dark{display:none}[data-theme=dark] .card .proj .mark-dark{display:block}[data-theme=dark] .card .proj .mark-light{display:none}.card p{color:var(--secondary-text);min-height:63px;margin-bottom:16px;font-size:14px}.card .links{justify-content:flex-end;align-items:center;gap:14px;margin-top:auto;display:flex}.card .links a{z-index:1;color:var(--faint);margin:-14px;padding:14px;transition:color .15s;position:relative}.card .links a:hover{color:var(--accent)}.card .links svg{width:16px;height:16px;display:block}.post-card{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-start;gap:32px;padding:24px 8px;transition:border-color .15s;display:flex}.post-card:has(a:is(:hover,:focus-visible)){border-bottom-color:color-mix(in srgb, var(--accent) 50%, var(--border))}.post-card:has(a:is(:hover,:focus-visible)):before{content:"";border-top:1px solid color-mix(in srgb, var(--accent) 50%, var(--border));position:absolute;top:-1px;left:0;right:0}.post-card{position:relative}.post-card a.pc-title:after{content:"";position:absolute;inset:0}.post-card .tag{z-index:1;position:relative}.post-card:first-of-type{border-top:1px solid var(--border)}#writing .post-card:first-of-type{border-top:none}.post-card .pc-text{flex:1;min-width:0}.post-card a.pc-title{color:var(--primary-text);letter-spacing:-.01em;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;font-size:20px;font-weight:500;text-decoration:none;display:-webkit-box;overflow:hidden}.post-card .desc{color:var(--secondary-text);line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:6px;font-size:14.5px;display:-webkit-box;overflow:hidden}.post-card .meta{flex-wrap:wrap;gap:0 12px;margin-top:12px;display:flex}.post-card .pc-thumb{flex-shrink:0}.post-card .pc-thumb img{border-radius:var(--radius);width:200px;height:auto;display:block}.all-posts{font-family:var(--font-mono);margin-top:20px;font-size:13px}.writing-empty{color:var(--secondary-text);font-family:var(--font-mono);border-bottom:1px solid var(--border);border-top:1px solid var(--border);padding:18px 8px;font-size:13px}.writing-empty a{margin:-12px 0;padding:12px 0;display:inline-block}header.hero.blog{padding:96px 0 8px}section.blog-list{padding:40px 0 72px}section.blog-list .chips{margin-bottom:28px}header.hero.blog h1{margin-bottom:0}header.hero.blog.tag h1{font-size:26px}.post-meta{margin-top:12px}.wrap.post-col{max-width:768px}.post-cover{border-radius:var(--radius);width:100%;height:auto;margin-top:28px;display:block}.prose{max-width:720px;color:var(--secondary-text);padding-bottom:72px}.prose h2{letter-spacing:-.015em;color:var(--primary-text);margin:40px 0 14px;font-size:24px;font-weight:500;line-height:1.25}.prose h3{letter-spacing:-.01em;color:var(--primary-text);margin:32px 0 10px;font-size:18px;font-weight:500}.prose h4{color:var(--primary-text);margin:24px 0 8px;font-size:16px;font-weight:500}.prose p{margin-bottom:18px}.prose code{font-family:var(--font-mono);color:var(--primary-text);background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:1px 5px;font-size:.85em}.prose pre{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:18px;padding:16px 18px;overflow-x:auto}.prose pre code{background:0 0;border:none;padding:0;font-size:13.5px}.prose .table-scroll{width:fit-content;max-width:100%;margin:20px auto 24px;overflow-x:auto}.prose table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:max-content;font-size:14.5px}.prose th,.prose td{border-bottom:1px solid var(--border);text-align:left;overflow-wrap:break-word;max-width:220px;padding:12px 14px}.prose th[align=center],.prose td[align=center]{text-align:center}.prose table:has(colgroup) th,.prose table:has(colgroup) td{max-width:none}.prose th[align=right],.prose td[align=right]{text-align:right}.prose thead th{color:var(--secondary-text);letter-spacing:.04em;border-bottom:1px solid color-mix(in srgb, var(--secondary-text) 30%, var(--border));padding:4px 14px 12px;font-weight:500}.prose tbody tr:last-child td{border-bottom:none}.prose pre.mermaid{text-align:center;background:var(--diagram-plate);border:1px solid var(--border);width:fit-content;max-width:100%;color:var(--primary-text);margin-inline:auto;padding:12px;overflow-x:auto}:root[data-theme=dark] .prose pre.mermaid{color:var(--background);filter:brightness(.93)}.prose pre.mermaid svg{margin-inline:auto;display:inline-block}.prose pre.mermaid.mermaid-error{text-align:left;white-space:pre-wrap}.prose pre span{color:var(--shiki-light)}:root[data-theme=dark] .prose pre span{color:var(--shiki-dark)}.prose ul,.prose ol{margin-bottom:18px;padding-left:24px}.prose li{margin-bottom:6px}.prose blockquote{border:1px solid var(--border);background:var(--surface);border-radius:0 var(--radius) var(--radius) 0;color:var(--secondary-text);margin-bottom:18px;padding:14px 18px;position:relative}.prose blockquote:after{content:"";background:var(--border);width:4px;position:absolute;top:0;bottom:0;left:0}.prose blockquote>:first-child{margin-top:0}.prose blockquote>:last-child{margin-bottom:0}.prose blockquote>:is(h2,h3,h4){margin-top:16px}.prose blockquote>h2{font-size:20px}.prose blockquote>h3{font-size:16px}.prose blockquote .callout-title{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--secondary-text);align-items:center;gap:6px;margin:0 0 6px;font-size:11px;font-weight:500;display:flex}.prose blockquote .callout-title svg{flex:none}.prose blockquote.callout-note{--callout-accent:var(--callout-note)}.prose blockquote.callout-tip{--callout-accent:var(--callout-tip)}.prose blockquote.callout-important{--callout-accent:var(--callout-important)}.prose blockquote.callout-warning{--callout-accent:var(--callout-warning)}.prose blockquote.callout-danger{--callout-accent:var(--callout-danger)}.prose blockquote.callout-note,.prose blockquote.callout-tip,.prose blockquote.callout-important,.prose blockquote.callout-warning,.prose blockquote.callout-danger{background:color-mix(in srgb, var(--callout-accent) 8%, var(--surface))}:root[data-theme=light] .prose blockquote.callout-note,:root[data-theme=light] .prose blockquote.callout-tip,:root[data-theme=light] .prose blockquote.callout-important,:root[data-theme=light] .prose blockquote.callout-warning,:root[data-theme=light] .prose blockquote.callout-danger{background:color-mix(in srgb, var(--callout-accent) 4%, var(--surface))}.prose blockquote.callout-note:after{background:var(--callout-note)}.prose blockquote.callout-note .callout-title{color:var(--callout-note)}.prose blockquote.callout-tip:after{background:var(--callout-tip)}.prose blockquote.callout-tip .callout-title{color:var(--callout-tip)}.prose blockquote.callout-important:after{background:var(--callout-important)}.prose blockquote.callout-important .callout-title{color:var(--callout-important)}.prose blockquote.callout-warning:after{background:var(--callout-warning)}.prose blockquote.callout-warning .callout-title{color:var(--callout-warning)}.prose blockquote.callout-danger:after{background:var(--callout-danger)}.prose blockquote.callout-danger .callout-title{color:var(--callout-danger)}.prose ul.contains-task-list{padding-left:4px;list-style:none}.prose li.task-list-item input[type=checkbox]{appearance:none;vertical-align:-2px;border:1px solid color-mix(in srgb, var(--faint) 40%, var(--border));background:var(--surface);border-radius:4px;width:15px;height:15px;margin:0 8px 0 0}.prose li.task-list-item input[type=checkbox]:checked{background:var(--accent) url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.75.75 0 0 1 1.06-1.06L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\" fill=\"white\"/></svg>") center/11px no-repeat;border-color:var(--accent)}:root[data-theme=dark] .prose li.task-list-item input[type=checkbox]:checked{background:var(--accent) url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.75.75 0 0 1 1.06-1.06L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\" fill=\"black\"/></svg>") center/11px no-repeat}.prose hr{border:none;border-top:1px solid var(--border);margin:36px 0}.prose img{background:var(--diagram-plate);border:1px solid var(--border);max-width:100%;height:auto;margin-inline:auto;padding:12px;display:block}.prose figure{margin:0 0 18px}.prose figure img,.prose figure pre.mermaid,.prose figure .table-scroll{margin-bottom:10px}.prose figcaption{font-family:var(--font-mono);color:var(--secondary-text);text-align:center;font-size:12.5px}.prose .footnotes{border-top:1px solid var(--border);margin-top:36px;padding-top:18px;font-size:.85em}.prose .footnotes li{margin-bottom:8px}.prose .footnotes li p{margin-bottom:0}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.xp-row{border-bottom:1px solid var(--border);grid-template-columns:90px 1fr;gap:24px;padding:20px 8px;display:grid}.xp-row:first-of-type{border-top:1px solid var(--border)}.xp-when{padding-top:4px}.xp-head{align-items:flex-start;gap:10px;display:flex}.xp-logo{flex:none;place-items:center;display:grid}.xp-logo img{grid-area:1/1;width:40px;height:40px}.xp-logo .when-dark{opacity:0}:root[data-theme=dark] .xp-logo .when-dark{opacity:1}:root[data-theme=dark] .xp-logo img:first-child:not(:only-child){opacity:0}.xp-lines h3{line-height:1.3}.xp-co{color:var(--primary-text);margin-top:0;font-size:14px;font-weight:500}.xp-co .desc{color:var(--secondary-text);font-weight:400}.xp-what h3{font-size:17px;font-weight:500}.xp-what h3 span{font-family:var(--font-body);color:var(--secondary-text);font-size:15px;font-weight:400}.xp-what>p{color:var(--secondary-text);margin-top:4px;font-size:14.5px}.edu{margin-top:28px}.edu h4{font-family:var(--font-mono);color:var(--secondary-text);margin-bottom:10px;font-size:12.5px}.edu-row{color:var(--secondary-text);justify-content:space-between;padding:6px 8px;font-size:14px;display:flex}.edu-row b{font-family:var(--font-display);font-variation-settings:"SOFT" 100;letter-spacing:-.01em;color:var(--primary-text);font-size:16px;font-weight:500}.edu-row .paren{white-space:nowrap}.edu-row .note{font-family:var(--font-mono);color:var(--secondary-text);font-size:13px}.skill-cards{grid-template-columns:repeat(6,1fr);gap:16px;margin-bottom:36px;display:grid}@media (width<=840px){.skill-cards{grid-template-columns:repeat(3,1fr)}}@media (width<=430px){.skill-cards{grid-template-columns:repeat(2,1fr)}}@media (width<=300px){.skill-cards{grid-template-columns:1fr}}.skill-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);font-family:var(--font-mono);color:var(--primary-text);flex-direction:column;align-items:center;gap:10px;padding:20px 12px;font-size:13px;display:flex}.skill-card .logo{place-items:center;display:grid}.skill-card .logo img{grid-area:1/1;width:40px;height:40px}.skill-card .logo.dual .when-dark{opacity:0}:root[data-theme=dark] .skill-card .logo.dual .when-dark{opacity:1}:root[data-theme=dark] .skill-card .logo.dual img:first-child{opacity:0}.skill-chips{gap:10px;display:grid}.chip-row{grid-template-columns:92px 1fr;align-items:start;gap:8px 16px;display:grid}.chip-label{font-family:var(--font-mono);color:var(--secondary-text);padding-top:5px;font-size:12px}.chips{flex-wrap:wrap;gap:8px;max-width:720px;display:flex}@media (width<=560px){.chip-row{grid-template-columns:1fr;gap:8px;margin-top:8px}.chip-row:first-child{margin-top:0}.chip-label{padding-top:0}}.chip{font-family:var(--font-mono);color:var(--secondary-text);border:1px solid var(--border);border-radius:999px;padding:4px 12px;font-size:12px;text-decoration:none}.chip:hover{color:var(--accent);border-color:var(--accent)}.chip .count{color:var(--secondary-text);margin-left:7px}a.chip{transition:scale .12s}#theme-toggle:active,.social-row a:active{scale:.86}.contact-actions a:active{scale:.95}.nav-links a:active,a.chip:active,.post-card .meta a.tag:active,.post-meta a.tag:active,.all-posts a:active{scale:.9}footer{border-top:1px solid var(--border);padding:40px 0 60px}footer .wrap{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px 32px;display:flex}footer .cc{font-family:var(--font-mono);color:var(--secondary-text);font-size:13px}@media (width<=340px){footer .cc{font-size:12px}}footer .cc .copyright-mark{vertical-align:-.12em;font-size:1.5em}footer .cc .motto{white-space:nowrap}@media (width<=800px){footer .wrap{flex-direction:column;align-items:flex-start}}.js .reveal{opacity:0;transition:opacity .35s ease-out,transform .35s ease-out;transform:translateY(12px)}.reveal.in{opacity:1;transform:none}.fox-art{background:linear-gradient(to top right, var(--fox-glow), var(--fox) 45%, color-mix(in srgb, var(--fox) 60%, #821804) 100%);width:100%;height:100%;transition:opacity .3s,background-color .2s;display:block;-webkit-mask:url(/identity/fox.png) 50%/contain no-repeat;mask:url(/identity/fox.png) 50%/contain no-repeat}.fox-mark.lit .fox-art{opacity:0}.fox-art.hide{opacity:0;transition:none}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.js .reveal{opacity:1;transition:none;transform:none}.fox-art,.card,.post-card,.contact-actions a,.post-card a.pc-title,.post-card .meta a.tag,.post-meta a.tag,.all-posts a,.nav-links a,.nav-links a:after,.sec-head .rule,a.chip,.social-row a,.social-row svg,.social-row .copy-chip,#theme-toggle,#theme-toggle span{transition:none}}@media (width<=720px){h1{font-size:30px}.hero-cols{grid-template-columns:1fr;gap:36px}.hero-cols .contact-actions.stack{gap:12px;padding-top:0;display:grid}.hero-cols .contact-actions.stack a{white-space:nowrap;justify-content:center}.hero-cols .contact-actions.stack a:first-child{grid-column:1/-1}.card p{min-height:0}.xp-row{grid-template-columns:1fr;gap:4px}.edu-row{flex-direction:column;align-items:flex-start;gap:2px}.post-card{flex-direction:column;align-items:stretch;gap:14px;padding:20px 8px}.post-card .pc-thumb{order:-1}.post-card .pc-thumb img{width:100%;height:auto}}@media (width>=601px) and (width<=720px){.hero-cols .contact-actions.stack{grid-template-columns:repeat(3,1fr)}}@media (width>=381px) and (width<=600px){.hero-cols .contact-actions.stack{grid-template-columns:repeat(2,1fr)}.hero-cols .contact-actions.stack a:last-child{grid-column:1/-1}}@media (width<=380px){.hero-cols .contact-actions.stack{grid-template-columns:1fr}.wordmark{min-height:44px;margin-top:0;margin-bottom:0;padding-top:4px;padding-bottom:4px}.nav-links a{min-height:44px}#theme-toggle{height:44px}.nav-links{display:contents}}@media (width<=330px){#theme-toggle{margin-left:auto}}
