@font-face{font-display:swap;font-family:Lexend;font-style:normal;font-weight:400;src:url(/assets/fonts/Lexend-Regular.woff2) format("woff2")}@font-face{font-display:swap;font-family:Lexend;font-style:normal;font-weight:500;src:url(/assets/fonts/Lexend-Medium.woff2) format("woff2")}@font-face{font-display:swap;font-family:Lexend;font-style:normal;font-weight:600;src:url(/assets/fonts/Lexend-SemiBold.woff2) format("woff2")}@font-face{font-display:swap;font-family:Lexend;font-style:normal;font-weight:700;src:url(/assets/fonts/Lexend-Bold.woff2) format("woff2")}@font-face{font-display:swap;font-family:Lora;font-style:normal;font-weight:600;src:url(/assets/fonts/Lora-SemiBold.woff2) format("woff2")}@font-face{font-display:swap;font-family:Lora;font-style:normal;font-weight:700;src:url(/assets/fonts/Lora-Bold.woff2) format("woff2")}body{font-size:clamp(1rem,.925rem + .5vw,1.25rem)}main>div>section{margin-top:clamp(1.5rem,6.4vw,3rem)}h1{font-size:clamp(2.5rem,8vw,5rem)}h2{font-size:clamp(1.75rem,4vw,2.5rem)}h3{font-size:clamp(1.375rem,3vw,1.75rem)}h4,h5,h6{font-family:var(--font-heading);font-weight:600;line-height:1.3;margin-bottom:var(--spacing-md)}h4{font-family:var(--font-body);font-size:clamp(1rem,.925rem + .5vw,1.25rem);font-weight:700}p+h2,p+h3,p+h4{margin-top:1.5em}p+p{margin-top:var(--spacing-md)}ol,ul{list-style-type:disc;margin-bottom:var(--spacing-md);padding-left:var(--spacing-lg)}ol{list-style-type:decimal}li{margin-bottom:var(--spacing-xs)}code{background-color:var(--color-code-bg);border-radius:var(--border-radius-sm);font-family:var(--font-mono);font-size:.875em;padding:.125rem .375rem}pre{background-color:var(--color-code-block-bg);border-radius:var(--border-radius-md);margin-bottom:var(--spacing-md);max-width:none;overflow-x:auto;padding:var(--spacing-md)}pre code{background:none;padding:0}blockquote{border-left:.25rem solid var(--color-primary);color:var(--color-text-muted);font-style:italic;margin:var(--spacing-md) 0;padding-left:var(--spacing-md)}code[class*=language-],pre[class*=language-]{background:none;color:#f8f8f2;font-family:var(--font-mono);text-align:left;white-space:pre;word-break:normal;word-spacing:normal;word-wrap:normal;hyphens:none;line-height:1.5;tab-size:2}pre[class*=language-]{border-radius:var(--border-radius-md);margin-bottom:var(--spacing-md);max-width:none;overflow:auto;padding:var(--spacing-md)}:not(pre)>code[class*=language-],pre[class*=language-]{background:var(--color-code-block-bg)}:not(pre)>code[class*=language-]{border-radius:var(--border-radius-sm);padding:.1em .3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#d4d0ab}.token.punctuation{color:#fefefe}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#ffa07a}.token.boolean,.token.number{color:#d4a8f8}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#abe338}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#00e0e0}.token.atrule,.token.attr-value,.token.function{color:gold}.token.keyword{color:#00e0e0}.token.important,.token.regex{color:gold}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}@media (forced-colors:active){code[class*=language-],pre[class*=language-]{background:Canvas;color:CanvasText}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:GrayText}.language-css .token.string,.style .token.string,.token.atrule,.token.attr-name,.token.attr-value,.token.boolean,.token.builtin,.token.char,.token.constant,.token.deleted,.token.entity,.token.function,.token.important,.token.inserted,.token.keyword,.token.number,.token.operator,.token.property,.token.punctuation,.token.regex,.token.selector,.token.string,.token.symbol,.token.tag,.token.url,.token.variable{color:CanvasText}.token.boolean,.token.keyword,.token.number{font-weight:700}}:root,html[data-theme=purple]{--color-bg:#faf8ff;--color-bg-gradient:linear-gradient(135deg,#faf8ff,#f0ebfa 50%,#f5f0fc);--color-bg-alt:#f0ebfa;--color-bg-chrome:#f0ebfa;--color-gradient-start:#fff;--color-gradient-mid:#f2ecf9;--color-gradient-end:#eae3f6;--color-text:#2a0f58;--color-text-muted:#4a3968;--color-primary:#7c3aed;--color-primary-hover:#6d28d9;--color-border:#d4c4eb;--color-code-bg:#ebe4f5;--color-code-block-bg:#150a25;--color-focus:#7c3aed;--color-btn-text:#fff}@media screen and (prefers-color-scheme:dark){:root:not([data-mode=light]),html[data-theme=purple]:not([data-mode=light]){--color-bg:#1a1025;--color-bg-gradient:linear-gradient(135deg,#1a1025,#221430 50%,#2d1f42);--color-bg-alt:#2d1f42;--color-bg-chrome:#221430;--color-gradient-start:#12081a;--color-gradient-mid:#251838;--color-gradient-end:#382850;--color-text:#f0eaf8;--color-text-muted:#b8adc8;--color-primary:#a78bfa;--color-primary-hover:#c4b5fd;--color-border:#3d2e5a;--color-code-bg:#2a1e40;--color-code-block-bg:#0d0614;--color-focus:#a78bfa;--color-btn-text:#1a1025}}html[data-theme=purple][data-mode=dark]{--color-bg:#1a1025;--color-bg-gradient:linear-gradient(135deg,#1a1025,#221430 50%,#2d1f42);--color-bg-alt:#2d1f42;--color-bg-chrome:#221430;--color-gradient-start:#12081a;--color-gradient-mid:#251838;--color-gradient-end:#382850;--color-text:#f0eaf8;--color-text-muted:#b8adc8;--color-primary:#a78bfa;--color-primary-hover:#c4b5fd;--color-border:#3d2e5a;--color-code-bg:#2a1e40;--color-code-block-bg:#0d0614;--color-focus:#a78bfa;--color-btn-text:#1a1025}html[data-theme=blue]{--color-bg:#fff;--color-bg-gradient:linear-gradient(135deg,#fff,#e8f0fa 50%,#f0f4f8);--color-bg-alt:#f0f4f8;--color-bg-chrome:#e8f0fa;--color-gradient-start:#fff;--color-gradient-mid:#d8e8f8;--color-gradient-end:#ccdff5;--color-text:#1a3250;--color-text-muted:#3d5a7a;--color-primary:#1a56db;--color-primary-hover:#1648b3;--color-border:#c5d3e0;--color-code-bg:#e8eff5;--color-code-block-bg:#0a1628;--color-focus:#1a56db;--color-btn-text:#fff}@media screen and (prefers-color-scheme:dark){html[data-theme=blue]:not([data-mode=light]){--color-bg:#0d1b2a;--color-bg-gradient:linear-gradient(135deg,#0d1b2a,#122438 50%,#1b2d44);--color-bg-alt:#1b2d44;--color-bg-chrome:#122438;--color-gradient-start:#081420;--color-gradient-mid:#152a40;--color-gradient-end:#1f3a58;--color-text:#f0f4f8;--color-text-muted:#a8b8c8;--color-primary:#60a5fa;--color-primary-hover:#93c5fd;--color-border:#334155;--color-code-bg:#1e3148;--color-code-block-bg:#06101a;--color-focus:#60a5fa;--color-btn-text:#0d1b2a}}html[data-theme=blue][data-mode=dark]{--color-bg:#0d1b2a;--color-bg-gradient:linear-gradient(135deg,#0d1b2a,#122438 50%,#1b2d44);--color-bg-alt:#1b2d44;--color-bg-chrome:#122438;--color-gradient-start:#081420;--color-gradient-mid:#152a40;--color-gradient-end:#1f3a58;--color-text:#f0f4f8;--color-text-muted:#a8b8c8;--color-primary:#60a5fa;--color-primary-hover:#93c5fd;--color-border:#334155;--color-code-bg:#1e3148;--color-code-block-bg:#06101a;--color-focus:#60a5fa;--color-btn-text:#0d1b2a}html[data-theme=orange]{--color-bg:#fffaf5;--color-bg-gradient:linear-gradient(135deg,#fffaf5,#fff5ed 50%,#fff0e5);--color-bg-alt:#fff0e5;--color-bg-chrome:#fff5ed;--color-gradient-start:#fff;--color-gradient-mid:#fff4ec;--color-gradient-end:#ffede0;--color-text:#3a1205;--color-text-muted:#5c3d1a;--color-primary:#c2410c;--color-primary-hover:#9a3412;--color-border:#e5c9b5;--color-code-bg:#fce8d8;--color-code-block-bg:#1a0f08;--color-focus:#c2410c;--color-btn-text:#fff}@media screen and (prefers-color-scheme:dark){html[data-theme=orange]:not([data-mode=light]){--color-bg:#1c1410;--color-bg-gradient:linear-gradient(135deg,#1c1410,#241a14 50%,#2d221a);--color-bg-alt:#2d221a;--color-bg-chrome:#241a14;--color-gradient-start:#140e0a;--color-gradient-mid:#2a1e15;--color-gradient-end:#3d2c20;--color-text:#fef5ed;--color-text-muted:#d4c4b0;--color-primary:#fb923c;--color-primary-hover:#fdba74;--color-border:#4a3628;--color-code-bg:#2a1f18;--color-code-block-bg:#100a06;--color-focus:#fb923c;--color-btn-text:#1c1410}}html[data-theme=orange][data-mode=dark]{--color-bg:#1c1410;--color-bg-gradient:linear-gradient(135deg,#1c1410,#241a14 50%,#2d221a);--color-bg-alt:#2d221a;--color-bg-chrome:#241a14;--color-gradient-start:#140e0a;--color-gradient-mid:#2a1e15;--color-gradient-end:#3d2c20;--color-text:#fef5ed;--color-text-muted:#d4c4b0;--color-primary:#fb923c;--color-primary-hover:#fdba74;--color-border:#4a3628;--color-code-bg:#2a1f18;--color-code-block-bg:#100a06;--color-focus:#fb923c;--color-btn-text:#1c1410}html[data-theme=red]{--color-bg:#fff5f5;--color-bg-gradient:linear-gradient(135deg,#fff5f5,#fff0f0 50%,#fee8e8);--color-bg-alt:#fee2e2;--color-bg-chrome:#fff0f0;--color-gradient-start:#fff;--color-gradient-mid:#fef2f2;--color-gradient-end:#feecec;--color-text:#3d0808;--color-text-muted:#6a3030;--color-primary:#c92020;--color-primary-hover:#a51a1a;--color-border:#e5b5b5;--color-code-bg:#fdd8d8;--color-code-block-bg:#1a0808;--color-focus:#c92020;--color-btn-text:#fff}@media screen and (prefers-color-scheme:dark){html[data-theme=red]:not([data-mode=light]){--color-bg:#1a0f0f;--color-bg-gradient:linear-gradient(135deg,#1a0f0f,#221414 50%,#2d1a1a);--color-bg-alt:#2d1a1a;--color-bg-chrome:#221414;--color-gradient-start:#120808;--color-gradient-mid:#281515;--color-gradient-end:#3d2020;--color-text:#feecec;--color-text-muted:#dab5b5;--color-primary:#f87171;--color-primary-hover:#fca5a5;--color-border:#4a2828;--color-code-bg:#2a1515;--color-code-block-bg:#100505;--color-focus:#f87171;--color-btn-text:#1a0f0f}}html[data-theme=red][data-mode=dark]{--color-bg:#1a0f0f;--color-bg-gradient:linear-gradient(135deg,#1a0f0f,#221414 50%,#2d1a1a);--color-bg-alt:#2d1a1a;--color-bg-chrome:#221414;--color-gradient-start:#120808;--color-gradient-mid:#281515;--color-gradient-end:#3d2020;--color-text:#feecec;--color-text-muted:#dab5b5;--color-primary:#f87171;--color-primary-hover:#fca5a5;--color-border:#4a2828;--color-code-bg:#2a1515;--color-code-block-bg:#100505;--color-focus:#f87171;--color-btn-text:#1a0f0f}html[data-theme=contrast]{--color-bg:#fff;--color-bg-gradient:#fff;--color-bg-alt:#f0f0f0;--color-bg-chrome:#f0f0f0;--color-gradient-start:#fff;--color-gradient-mid:#f0f0f0;--color-gradient-end:#e0e0e0;--color-text:#000;--color-text-muted:#333;--color-primary:#000;--color-primary-hover:#333;--color-border:#000;--color-code-bg:#e0e0e0;--color-code-block-bg:#000;--color-focus:#000;--color-btn-text:#fff}@media screen and (prefers-color-scheme:dark){html[data-theme=contrast]:not([data-mode=light]){--color-bg:#000;--color-bg-gradient:#000;--color-bg-alt:#1a1a1a;--color-bg-chrome:#1a1a1a;--color-gradient-start:#000;--color-gradient-mid:#1a1a1a;--color-gradient-end:#333;--color-text:#fff;--color-text-muted:#ccc;--color-primary:#ff0;--color-primary-hover:#ff6;--color-border:#fff;--color-code-bg:#1a1a1a;--color-code-block-bg:#000;--color-focus:#ff0;--color-btn-text:#000}}html[data-theme=contrast][data-mode=dark]{--color-bg:#000;--color-bg-gradient:#000;--color-bg-alt:#1a1a1a;--color-bg-chrome:#1a1a1a;--color-gradient-start:#000;--color-gradient-mid:#1a1a1a;--color-gradient-end:#333;--color-text:#fff;--color-text-muted:#ccc;--color-primary:#ff0;--color-primary-hover:#ff6;--color-border:#fff;--color-code-bg:#1a1a1a;--color-code-block-bg:#000;--color-focus:#ff0;--color-btn-text:#000}.site-header{background-color:var(--color-bg-chrome)}.site-nav a:not(.button){color:var(--color-primary)}.site-nav a:not(.button):focus-visible,.site-nav a:not(.button):hover{color:var(--color-primary-hover)}.site-nav .button{font-size:1.125rem}@media screen and (min-width:48em){.site-nav{gap:clamp(1.5rem,4vw,3rem)}.site-nav a:not(.button),.theme-switcher__toggle{font-size:1.25rem}}.site-footer{background-color:var(--color-bg-chrome);border-top:var(--border-width) solid var(--color-border);padding:var(--spacing-xl) 0;transition:background-color .3s,border-color .3s}.site-footer__row{align-items:center;display:flex;flex-direction:column;gap:var(--spacing-lg);text-align:center}.site-footer__row--bottom{margin-top:var(--spacing-lg)}.site-footer__ai-notice{color:var(--color-text-muted);line-height:1.5;margin:0;max-width:60ch}.site-footer__links{align-items:center;display:flex;gap:var(--spacing-md)}.site-footer__links a{align-items:center;color:var(--color-primary);display:flex;justify-content:center;transition:color .2s}.site-footer__links a:focus-visible,.site-footer__links a:hover{color:var(--color-primary-hover)}.site-footer__links .icon{font-size:2rem;top:0}.site-footer__legal ul{display:flex;flex-wrap:wrap;gap:var(--spacing-sm) var(--spacing-lg);justify-content:center;list-style:none;margin:0;padding:0}.site-footer__legal li{margin:0}.site-footer__legal a{color:var(--color-primary);transition:color .2s}.site-footer__legal a:focus-visible,.site-footer__legal a:hover{color:var(--color-primary-hover)}.site-footer .h-card p{color:var(--color-text-muted);margin:0}@media screen and (min-width:48em){.site-footer__row{flex-direction:row;justify-content:space-between;text-align:left}}.prose>blockquote,.prose>h1,.prose>h2,.prose>h3,.prose>h4,.prose>h5,.prose>h6,.prose>ol,.prose>p,.prose>ul{max-width:var(--content-width)}main>.section:first-child{margin-top:calc(var(--spacing-xl)*-1)}.section{padding:var(--spacing-xl) 0;width:100%}.section--hero{background:linear-gradient(to bottom right,var(--color-gradient-start) 0,var(--color-gradient-mid) 50%,var(--color-gradient-end) 100%)}.section--posts{background:linear-gradient(to bottom left,var(--color-gradient-end) 0,var(--color-gradient-mid) 50%,var(--color-gradient-start) 100%)}.section--projects{background:linear-gradient(to bottom right,var(--color-gradient-start) 0,var(--color-gradient-mid) 50%,var(--color-gradient-end) 100%)}.section__header{margin-bottom:var(--spacing-xl)}.section__header h2{margin-bottom:var(--spacing-sm)}.section__header p{margin:0;max-width:var(--content-width)}@media screen and (min-width:48em){.container{padding:0 var(--spacing-lg)}}@media screen and (min-width:90em){.container{padding:0}}.button{align-items:center;border:var(--border-width) solid;border-radius:var(--border-radius-sm);cursor:pointer;display:inline-flex;font-family:inherit;font-size:1rem;gap:var(--spacing-xs);line-height:1;padding:var(--spacing-xs) var(--spacing-sm);text-decoration:none;transition:color .2s,background-color .2s}.button .icon{top:0}.button--primary{background:var(--color-bg-alt);color:var(--color-primary)}.button--primary:focus-visible,.button--primary:hover{color:var(--color-primary-hover)}.button--primary[aria-pressed=true]{background-color:var(--color-primary);color:var(--color-btn-text)}.button--primary[aria-pressed=true]:focus-visible,.button--primary[aria-pressed=true]:hover{background-color:var(--color-primary-hover)}.btn{background-color:var(--color-primary);border-radius:var(--border-radius-sm);color:var(--color-btn-text);display:inline-block;font-weight:500;padding:var(--spacing-sm) var(--spacing-md);text-decoration:none;transition:background-color .2s}.btn:focus-visible,.btn:hover{background-color:var(--color-primary-hover);color:var(--color-btn-text)}.btn--secondary{background-color:transparent;border:.125rem solid var(--color-primary);color:var(--color-primary)}.btn--secondary:focus-visible,.btn--secondary:hover{background-color:var(--color-primary);color:var(--color-btn-text)}.no-js .theme-switcher{display:none}.theme-switcher{position:relative}.theme-switcher__toggle{font-size:1.125rem}.theme-switcher__toggle span{border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.theme-switcher__menu{background-color:var(--color-bg-alt);border:var(--border-width) solid var(--color-border);border-radius:var(--border-radius-md);box-shadow:0 .25rem 1rem rgba(0,0,0,.2);height:0;min-width:12.5rem;padding:0 var(--spacing-sm);position:absolute;right:0;top:calc(100% + var(--spacing-xs));transform:scaleY(0);transform-origin:top;transition:transform .3s;visibility:hidden;z-index:200}.theme-switcher__menu.open{height:auto;padding:var(--spacing-sm);transform:scaleY(1);visibility:visible}.theme-switcher__group{margin-bottom:var(--spacing-sm)}.theme-switcher__group:last-child{margin-bottom:0}.theme-switcher__label{border-bottom:var(--border-width) solid var(--color-border);color:var(--color-text-muted);display:block;font-size:.75rem;font-weight:600;letter-spacing:.05em;margin-bottom:var(--spacing-xs);padding-bottom:var(--spacing-xs);text-transform:uppercase}.theme-switcher__list{display:flex;flex-direction:column;gap:.25rem;list-style-type:none;margin:0;padding:0}.theme-switcher__btn{align-items:center;background:transparent;border:none;border-radius:var(--border-radius-sm);color:var(--color-text);cursor:pointer;display:flex;font-family:inherit;font-size:.875rem;gap:var(--spacing-sm);padding:var(--spacing-xs) var(--spacing-sm);text-align:left;transition:background-color .2s;width:100%}.theme-switcher__btn:focus-visible,.theme-switcher__btn:hover{background-color:var(--color-bg);color:var(--color-primary-hover)}.theme-switcher__btn[aria-pressed=true]{background-color:var(--color-primary);color:var(--color-btn-text)}.theme-switcher__btn[aria-pressed=true]:focus-visible,.theme-switcher__btn[aria-pressed=true]:hover{background-color:var(--color-primary-hover)}.theme-switcher__btn[aria-pressed=true] .theme-switcher__swatch{border-color:var(--color-btn-text)}.theme-switcher__swatch{border:.125rem solid var(--color-border);border-radius:50%;flex-shrink:0;height:1rem;width:1rem}.theme-switcher__swatch--blue{background:linear-gradient(135deg,#1a56db 50%,#60a5fa 0)}.theme-switcher__swatch--purple{background:linear-gradient(135deg,#7c3aed 50%,#a78bfa 0)}.theme-switcher__swatch--orange{background:linear-gradient(135deg,#c2410c 50%,#fb923c 0)}.theme-switcher__swatch--red{background:linear-gradient(135deg,#dc2626 50%,#f87171 0)}.theme-switcher__swatch--contrast{background:linear-gradient(135deg,#000 50%,#ff0 0)}html[data-theme=contrast][data-mode=light] .theme-switcher__btn:not([aria-pressed=true]):focus-visible,html[data-theme=contrast][data-mode=light] .theme-switcher__btn:not([aria-pressed=true]):hover{background-color:#fff}html[data-theme=contrast][data-mode=dark] .theme-switcher__btn:not([aria-pressed=true]):focus-visible,html[data-theme=contrast][data-mode=dark] .theme-switcher__btn:not([aria-pressed=true]):hover{background-color:#333}@media (prefers-color-scheme:dark){html[data-theme=contrast]:not([data-mode=light]) .theme-switcher__btn:not([aria-pressed=true]):focus-visible,html[data-theme=contrast]:not([data-mode=light]) .theme-switcher__btn:not([aria-pressed=true]):hover{background-color:#333}}@media (prefers-color-scheme:light){[data-theme=contrast]:not([data-mode=dark]) .theme-switcher__btn:not([aria-pressed=true]):focus-visible,[data-theme=contrast]:not([data-mode=dark]) .theme-switcher__btn:not([aria-pressed=true]):hover{background-color:#fff}}[data-theme=contrast] .theme-switcher__btn[data-theme=blue]:not([aria-pressed=true]){color:#1648b3}[data-theme=contrast] .theme-switcher__btn[data-theme=purple]:not([aria-pressed=true]){color:#6d28d9}[data-theme=contrast] .theme-switcher__btn[data-theme=orange]:not([aria-pressed=true]){color:#9a3412}[data-theme=contrast] .theme-switcher__btn[data-theme=red]:not([aria-pressed=true]){color:#b91c1c}[data-theme=contrast] .theme-switcher__btn[data-theme=contrast]:not([aria-pressed=true]){color:#000}[data-theme=contrast] .theme-switcher__btn[data-theme=blue]:not([aria-pressed=true]):focus-visible,[data-theme=contrast] .theme-switcher__btn[data-theme=blue]:not([aria-pressed=true]):hover{color:#2563eb}[data-theme=contrast] .theme-switcher__btn[data-theme=purple]:not([aria-pressed=true]):focus-visible,[data-theme=contrast] .theme-switcher__btn[data-theme=purple]:not([aria-pressed=true]):hover{color:#7c3aed}[data-theme=contrast] .theme-switcher__btn[data-theme=orange]:not([aria-pressed=true]):focus-visible,[data-theme=contrast] .theme-switcher__btn[data-theme=orange]:not([aria-pressed=true]):hover{color:#ea580c}[data-theme=contrast] .theme-switcher__btn[data-theme=red]:not([aria-pressed=true]):focus-visible,[data-theme=contrast] .theme-switcher__btn[data-theme=red]:not([aria-pressed=true]):hover{color:#dc2626}[data-theme=contrast] .theme-switcher__btn[data-theme=contrast]:not([aria-pressed=true]):focus-visible,[data-theme=contrast] .theme-switcher__btn[data-theme=contrast]:not([aria-pressed=true]):hover{color:#000}html[data-theme=contrast][data-mode=light] .theme-switcher__btn[data-mode]:not([aria-pressed=true]){color:#000}@media (prefers-color-scheme:dark){html[data-theme=contrast]:not([data-mode=light]) .theme-switcher__btn[data-theme=blue]:not([aria-pressed=true]){color:#93c5fd}html[data-theme=contrast]:not([data-mode=light]) .theme-switcher__btn[data-theme=purple]:not([aria-pressed=true]){color:#c4b5fd}html[data-theme=contrast]:not([data-mode=light]) .theme-switcher__btn[data-theme=orange]:not([aria-pressed=true]){color:#fdba74}html[data-theme=contrast]:not([data-mode=light]) .theme-switcher__btn[data-theme=red]:not([aria-pressed=true]){color:#fca5a5}html[data-theme=contrast]:not([data-mode=light]) .theme-switcher__btn[data-mode]:not([aria-pressed=true]),html[data-theme=contrast]:not([data-mode=light]) .theme-switcher__btn[data-theme=contrast]:not([aria-pressed=true]){color:#ff0}}html[data-theme=contrast][data-mode=dark] .theme-switcher__btn[data-theme=blue]:not([aria-pressed=true]){color:#93c5fd}html[data-theme=contrast][data-mode=dark] .theme-switcher__btn[data-theme=purple]:not([aria-pressed=true]){color:#c4b5fd}html[data-theme=contrast][data-mode=dark] .theme-switcher__btn[data-theme=orange]:not([aria-pressed=true]){color:#fdba74}html[data-theme=contrast][data-mode=dark] .theme-switcher__btn[data-theme=red]:not([aria-pressed=true]){color:#fca5a5}html[data-theme=contrast][data-mode=dark] .theme-switcher__btn[data-mode]:not([aria-pressed=true]),html[data-theme=contrast][data-mode=dark] .theme-switcher__btn[data-theme=contrast]:not([aria-pressed=true]){color:#ff0}@media screen and (min-width:48em){.theme-switcher__toggle span{clip-path:none;height:auto;margin:0;overflow:visible;padding:0;position:static;white-space:normal;width:auto}}.post-list{display:grid;gap:var(--spacing-xl);list-style-type:none;padding:0}.post-list__item{border-bottom:var(--border-width) solid var(--color-border);padding-bottom:var(--spacing-lg)}.post-list__item:first-child,.post-list__item:last-child{border-bottom:none;padding-bottom:0}.post-list__item h2,.post-list__item h3{margin-bottom:var(--spacing-xs)}.post-list__item h2 a,.post-list__item h3 a{color:var(--color-primary);transition:color .2s}.post-list__item h2 a:focus-visible,.post-list__item h2 a:hover,.post-list__item h3 a:focus-visible,.post-list__item h3 a:hover{color:var(--color-primary-hover)}.post-list__item time{align-items:center;color:var(--color-text-muted);display:flex;gap:var(--spacing-xs);margin-bottom:var(--spacing-sm)}.post-list__item time .icon{font-size:1.25rem;top:0}.post-list__item p{color:var(--color-text-muted);font-size:1.0625rem;line-height:1.6;margin:0}.project-grid{display:grid;gap:var(--spacing-lg)}.project-card{display:flex;flex-direction:column}.project-card h2,.project-card h3{margin-bottom:var(--spacing-sm)}.project-card p{color:var(--color-text-muted);flex:1;font-size:1rem;line-height:1.6;margin-bottom:var(--spacing-md)}.project-card__links{display:flex;gap:var(--spacing-sm);margin-top:auto}.project-card__links a{font-size:.9375rem}.view-all{margin-top:var(--spacing-xl)}@media screen and (min-width:50em){.project-grid{gap:var(--spacing-xl);grid-template-columns:repeat(2,1fr)}}@media screen and (min-width:55em){.post-list{grid-template-columns:repeat(2,1fr)}}@media screen and (min-width:70em){.project-grid{grid-template-columns:repeat(3,1fr)}}.page-intro{margin-bottom:var(--spacing-xl)}.page-intro h1{margin-bottom:var(--spacing-sm)}.page-intro p{font-size:clamp(1.125rem,2vw,1.5rem);line-height:1.7;margin-bottom:0;max-width:var(--content-width)}.post,.project{padding:var(--spacing-xl) 0}.post__header,.project__header{margin-bottom:var(--spacing-lg)}.post__header h1,.project__header h1{margin-bottom:var(--spacing-sm)}.post__header time{color:var(--color-text-muted)}.post__content,.project__content{margin-bottom:var(--spacing-lg)}.post__content>p:first-child{font-size:clamp(1.125rem,2vw,1.5rem);line-height:1.7;margin-bottom:1.5em;max-width:var(--content-width)}.project__links{display:flex;flex-wrap:wrap;gap:var(--spacing-sm);margin-top:var(--spacing-lg)}.post__content img,.project__content img{border-radius:var(--border-radius-md);height:auto;max-width:100%}.post__footer,.project__footer{border-top:var(--border-width) solid var(--color-border);padding-top:var(--spacing-lg)}.about h2{margin-top:var(--spacing-lg)}.legal-page h2{margin-bottom:var(--spacing-md);margin-top:var(--spacing-xl)}.legal-page h3{margin-bottom:var(--spacing-sm);margin-top:var(--spacing-lg)}.legal-page p,.legal-page ul{margin-bottom:var(--spacing-md)}.legal-page ul{padding-left:var(--spacing-lg)}.legal-page li{margin-bottom:var(--spacing-xs)}.webmentions{border-top:var(--border-width) solid var(--color-border);margin-top:var(--spacing-xl);padding-top:var(--spacing-lg)}.webmentions h2{margin-bottom:var(--spacing-lg)}.webmentions h3{color:var(--color-text-muted);margin-bottom:var(--spacing-sm)}.webmentions__section{margin-bottom:var(--spacing-lg)}.webmentions__reactions{display:flex;flex-direction:column;gap:var(--spacing-lg)}@media screen and (min-width:48em){.webmentions__reactions{align-items:flex-start;flex-direction:row;justify-content:space-between}.webmentions__reactions .webmentions__section{margin-bottom:0}}.webmentions__facepile{display:flex;flex-wrap:wrap;gap:var(--spacing-xs);list-style-type:none;margin:0;padding:0}.webmentions__facepile li{margin:0}.webmentions__avatar-placeholder,.webmentions__facepile img{border-radius:50%;display:block;height:2.5rem;width:2.5rem}.webmentions__avatar-placeholder{align-items:center;background-color:var(--color-primary);color:var(--color-btn-text);display:flex;font-size:1rem;font-weight:600;justify-content:center}.webmentions__list{list-style-type:none;margin:0;padding:0}.webmentions__mention,.webmentions__reply{background-color:var(--color-bg-alt);border-radius:var(--border-radius-md);margin-bottom:var(--spacing-sm);padding:var(--spacing-md)}.webmentions__author{align-items:center;display:flex;gap:var(--spacing-sm);margin-bottom:var(--spacing-sm)}.webmentions__author .webmentions__avatar-placeholder,.webmentions__author img{border-radius:50%;flex-shrink:0;height:2.5rem;width:2.5rem}.webmentions__meta{display:flex;flex-direction:column}.webmentions__author-name{color:var(--color-text);font-weight:600}.webmentions__date{color:var(--color-text-muted);font-size:.75rem}.webmentions__content{color:var(--color-text);line-height:1.5}.webmentions__mentions-list{list-style-type:disc;padding-left:var(--spacing-lg)}.webmentions__mention{background-color:transparent;border-radius:0;color:var(--color-text-muted);margin-bottom:var(--spacing-xs);padding:0}.js .no-js-only,.no-js .js-only{display:none}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:var(--focus-outline-width) dotted currentColor;outline-offset:var(--focus-outline-offset)}@media screen and (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}html{scroll-behavior:auto!important}}@media screen and (prefers-contrast:more){:root{--border-width:.125rem;--focus-outline-width:.1875rem}a{text-decoration-thickness:.125rem;text-underline-offset:.125rem}.btn{border:var(--border-width) solid}.project-card,input,select,textarea{border-width:var(--border-width)}:focus-visible{outline-width:var(--focus-outline-width)}}