﻿:root{--bg-color: #ffffff;--text-color: #303030;--text-color-light: #787878;--text-color-toc: rgba(48, 48, 48, 0.5);--link-color: hsla(190, 70%, 45%, 1);--link-hover-color: hsla(190, 70%, 35%, 1);--link-hover-bg: hsla(190, 70%, 85%, 1);--code-bg: #f2f2f2;--border-color: #e6e6e6;--blockquote-bg: rgba(0, 0, 0, 0.02);--blockquote-border: hsla(190, 70%, 45%, 0.3);--blockquote-color: #686868;--hr-color: lightgray;--selection-bg: #d8eef4;--selection-color: inherit;--hover-bg: transparent;--badge-bg: hsla(190, 70%, 45%, 0.08);--badge-border: hsla(190, 70%, 45%, 0.2);--badge-color: hsla(190, 70%, 35%, 1);--badge-hover-bg: hsla(190, 70%, 45%, 0.15);--badge-hover-border: hsla(190, 70%, 45%, 0.4);--shadow-color: rgba(0, 0, 0, 0.1)}[data-theme="dark"]{--bg-color: #171b1f;--text-color: #eceae7;--text-color-light: #b8b2a9;--text-color-toc: rgba(236, 234, 231, 0.7);--link-color: #5cc8d7;--link-hover-color: #85dfe9;--link-hover-bg: rgba(92, 200, 215, 0.12);--code-bg: #20262b;--border-color: rgba(255, 255, 255, 0.12);--blockquote-bg: rgba(255, 255, 255, 0.02);--blockquote-border: rgba(92, 200, 215, 0.4);--blockquote-color: #d8d3cf;--hr-color: rgba(255, 255, 255, 0.14);--selection-bg: rgba(92, 200, 215, 0.28);--selection-color: #ffffff;--hover-bg: rgba(255, 255, 255, 0.04);--badge-bg: rgba(92, 200, 215, 0.12);--badge-border: rgba(92, 200, 215, 0.3);--badge-color: #8fe3ee;--badge-hover-bg: rgba(92, 200, 215, 0.18);--badge-hover-border: rgba(92, 200, 215, 0.5);--shadow-color: rgba(0, 0, 0, 0.4)}@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--bg-color: #171b1f;--text-color: #eceae7;--text-color-light: #b8b2a9;--text-color-toc: rgba(236, 234, 231, 0.7);--link-color: #5cc8d7;--link-hover-color: #85dfe9;--link-hover-bg: rgba(92, 200, 215, 0.12);--code-bg: #20262b;--border-color: rgba(255, 255, 255, 0.12);--blockquote-bg: rgba(255, 255, 255, 0.02);--blockquote-border: rgba(92, 200, 215, 0.4);--blockquote-color: #d8d3cf;--hr-color: rgba(255, 255, 255, 0.14);--selection-bg: rgba(92, 200, 215, 0.28);--selection-color: #ffffff;--hover-bg: rgba(255, 255, 255, 0.04);--badge-bg: rgba(92, 200, 215, 0.12);--badge-border: rgba(92, 200, 215, 0.3);--badge-color: #8fe3ee;--badge-hover-bg: rgba(92, 200, 215, 0.18);--badge-hover-border: rgba(92, 200, 215, 0.5);--shadow-color: rgba(0, 0, 0, 0.4)}}@font-face{font-family:"Montserrat";font-style:normal;font-weight:400;font-display:fallback;src:local("Montserrat Regular"),local("Montserrat-Regular"),url("../fonts/montserrat-v14-latin-regular.woff2") format("woff2"),url("../fonts/montserrat-v14-latin-regular.woff") format("woff")}@font-face{font-family:"Montserrat";font-style:normal;font-weight:600;font-display:fallback;src:local("Montserrat Bold"),local("Montserrat-Bold"),url("../fonts/montserrat-v25-latin-600.woff2") format("woff2"),url("../fonts/montserrat-v25-latin-600.woff") format("woff")}@font-face{font-family:"Fira Code";font-style:normal;font-weight:400;font-display:fallback;src:local(""),url("../fonts/fira-code-v8-latin-regular.woff2") format("woff2"),url("../fonts/fira-code-v8-latin-regular.woff") format("woff")}*,*::before,*::after{box-sizing:border-box}html{background-color:var(--bg-color);color:var(--text-color);font-family:"Montserrat", sans-serif;font-size:1.0625rem;scroll-behavior:smooth;transition:background-color 0.3s ease, color 0.3s ease;color-scheme:dark;overflow-x:clip}@media screen and (min-width: 800px){html{font-size:1.1875rem}}body{line-height:1.6;background:radial-gradient(circle at top, rgba(92,200,215,0.12), transparent 30%),var(--bg-color);color:var(--text-color);overflow-x:clip}h1,h2,h3,h4,h5,h6,a,.site-header p,.site-nav a{letter-spacing:-0.03em}.site-header h1{font-size:clamp(2.6rem, 5vw, 4.2rem);line-height:0.95;letter-spacing:-0.06em;margin-bottom:1.2rem}.site-header p{font-size:1.1rem;color:var(--text-color-light)}.site-nav a,.site-header a{color:var(--link-color);text-decoration:none;border-bottom:1px solid transparent}.site-nav a:hover,.site-header a:hover{color:var(--link-hover-color);border-color:var(--link-hover-color);background:var(--link-hover-bg)}.tall-header.hero{min-height:0;display:grid;grid-template-columns:minmax(0, 1fr);gap:2rem;align-content:center;justify-items:stretch;padding-top:5.5rem;padding-bottom:2rem;max-width:100%}@media screen and (min-width: 800px){.tall-header.hero{min-height:78vh;grid-template-columns:minmax(210px, 240px) minmax(0, 1fr);gap:4rem;align-items:center;justify-items:start;padding-top:7rem;padding-bottom:0}}.hero .site-header{margin-bottom:0;padding-top:0}.hero-visual,.hero-copy,.hero-intro,.hero-tagline{min-width:0}.hero-visual{display:flex;justify-content:center;width:100%}.collage{position:relative;width:clamp(190px, 60vw, 244px);aspect-ratio:244 / 262;flex:none}#p5-container,#p5-container canvas{display:block;width:100% !important;height:auto !important}.collage-gen{position:absolute;top:0;left:2%;width:78%;opacity:0.9;filter:saturate(1.05)}.collage-gen canvas{box-shadow:12px 12px 0 var(--shadow-color)}.notfound{min-height:55vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:3rem 0 4rem}.notfound-mark{width:190px;margin-bottom:1.5rem}.notfound-mark canvas{box-shadow:10px 10px 0 var(--shadow-color)}.notfound-title{font-size:clamp(3rem, 10vw, 5rem);line-height:1;letter-spacing:-0.04em;margin-bottom:0.75rem}.notfound-text{color:var(--text-color-light)}.collage-shape{position:absolute;display:block}.collage-shape--square{width:58%;aspect-ratio:1;right:1%;bottom:15%;border:2px solid var(--text-color);transform:rotate(-9deg);opacity:0.85}.collage-shape--circle{width:26%;aspect-ratio:1;right:0;top:3%;border-radius:50%;background:var(--link-color);opacity:0.9}.collage-mark{position:absolute;right:0;bottom:0;width:60%;height:auto;border-radius:50%;transform:rotate(-4deg);box-shadow:0 14px 34px var(--shadow-color);background:var(--bg-color)}.hero-kicker{font-family:"IBM Plex Mono", "Fira Code", "Source Code Pro", monospace;font-size:0.78rem;letter-spacing:0.02em;color:var(--text-color-light);margin-bottom:1rem;overflow-wrap:break-word}.hero-copy h1{font-size:clamp(2.6rem, 8vw, 5rem);line-height:0.9;letter-spacing:-0.06em;margin-bottom:1.25rem;overflow-wrap:break-word}.hero-tagline{font-size:0.95rem;color:var(--text-color-light);margin-bottom:1.75rem}.hero-tagline p{margin:0}.hero-intro{max-width:34rem}.hero-intro p{font-size:1.02rem;line-height:1.55;margin-bottom:0.75rem;overflow-wrap:break-word}.hero-intro p:last-child{margin-bottom:0}@media screen and (max-width: 799px){.hero-visual{margin-bottom:0.5rem}.collage-gen canvas{box-shadow:9px 9px 0 var(--shadow-color)}.hero-copy h1{font-size:clamp(2.3rem, 12vw, 3.6rem)}.hero-kicker{font-size:0.72rem}.hero-intro{max-width:none}}.post-external{display:inline-block;margin-left:0.15em;font-size:0.85em;vertical-align:baseline;opacity:0.6}::selection{background:var(--selection-bg);color:var(--selection-color)}::-moz-selection{background:var(--selection-bg);color:var(--selection-color)}html,body{margin:0}h1,p,figure,pre,blockquote{margin:0 0 1rem}h1,h2,h3,h4,h5,h6{font-family:"IBM Plex Mono", "Fira Code", "Source Code Pro", monospace;font-weight:700}hr{display:block;width:100%;height:6px;margin:2rem 0;border:0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 6' preserveAspectRatio='none'%3E%3Cpath d='M 0,3 Q 8,1 16,3.5 T 32,2.5 Q 40,4.5 48,2 T 64,3.5 Q 72,1.5 80,4 T 96,2.5 Q 104,5 112,2 T 128,3.5 Q 136,1 144,4.5 T 160,3 Q 168,5.5 176,2.5 T 192,3 L 200,3' fill='none' stroke='hsla(190, 70%, 45%, 0.4)' stroke-width='1.2' stroke-linecap='round'/%3E%3Cpath d='M 0,2.5 Q 12,4 24,2 T 48,3 Q 60,1 72,3.5 T 96,2.5 Q 108,4.5 120,2 T 144,3 Q 156,1.5 168,4 T 192,2.5 L 200,2.5' fill='none' stroke='hsla(190, 70%, 45%, 0.3)' stroke-width='1.5' stroke-linecap='round'/%3E%3Cpath d='M 0,3.5 Q 5,3 10,4 T 20,3 Q 30,4 40,3.5 T 60,3.5 Q 70,2.5 80,3.5 T 100,3 Q 110,4 120,3.5 T 140,3.5 Q 150,3 160,4 T 180,3.5 Q 190,3 200,3.5' fill='none' stroke='hsla(190, 70%, 45%, 0.25)' stroke-width='0.8' stroke-linecap='round'/%3E%3C/svg%3E");background-size:100% 100%;background-repeat:no-repeat;background-position:center}figure{width:120%;max-width:100vw;margin:1.5rem auto;position:relative;left:50%;transform:translateX(-50%)}@media (min-width: 1200px){figure{width:120%;position:relative;left:-10%;transform:none}}@media (max-width: 768px){figure{width:100vw;max-width:100vw;margin:1.5rem 0;position:relative;left:50%;right:50%;margin-left:-50vw;margin-right:-50vw;transform:none}}figure .representation{display:block;margin:0 0 0.5rem}figure img{display:block;width:100%;height:auto}figcaption{padding:0 0.5rem 0.5rem;font-size:0.8125rem;text-align:right}@media (max-width: 768px){figcaption{padding:0 1.5rem 0.5rem}}figcaption .original::before{content:" ";display:block}img{max-width:100%}.sidenote{position:absolute;right:-280px;width:250px;margin-top:0;font-size:0.875rem;line-height:1.4;color:var(--text-color-light);padding:0.5rem}.sidenote .sidenote-number{font-weight:600;color:#303030;margin-right:0.25rem}.sidenote-inline{position:static !important;display:block;width:100%;margin:0.5rem 0 1.5rem;padding:0.75rem 1rem;background-color:rgba(0,0,0,0.02);border-left:3px solid rgba(34,168,195,0.3);right:auto;font-size:0.875rem;line-height:1.4;color:var(--text-color-light)}.sidenote-inline .sidenote-number{font-weight:600;color:#303030;margin-right:0.25rem}@media (min-width: 1200px){body.has-sidenotes sup.footnote-ref{font-size:0}body.has-sidenotes sup.footnote-ref a::after{content:"*";font-size:1rem;color:rgba(34,168,195,0.6);vertical-align:super;cursor:default}}@media (min-width: 1200px){article.post{max-width:700px;margin:0 auto}}body.has-inline-footnotes sup.footnote-ref{font-size:0}body.has-inline-footnotes sup.footnote-ref a::after{content:"*";font-size:0.875rem;color:rgba(34,168,195,0.6);vertical-align:super;cursor:default}blockquote{padding:1rem 1rem 1rem 1.5rem;margin:1.5rem 0;border-left:4px solid var(--blockquote-border);background-color:var(--blockquote-bg);color:var(--blockquote-color);font-style:italic;font-size:1rem;line-height:1.75;position:relative}blockquote:before{content:"\"";position:absolute;left:-0.5rem;top:-0.5rem;font-size:3rem;font-family:"IBM Plex Mono", "Fira Code", "Source Code Pro", monospace;color:rgba(34,168,195,0.2);font-style:normal}blockquote p{margin:0}blockquote p+p{margin-top:1rem}blockquote cite,blockquote footer,blockquote p:last-child:before{content:""}blockquote cite,blockquote footer{display:block;margin:1rem 0 0;font-size:0.875rem;text-align:right;font-style:normal;color:rgba(34,168,195,0.8);font-family:"IBM Plex Mono", "Fira Code", "Source Code Pro", monospace}blockquote cite:before,blockquote footer:before{content:"— ";color:rgba(34,168,195,0.5)}blockquote .attribution,blockquote p.attribution,blockquote p[data-attribution="true"]{margin-top:1rem;font-size:0.875rem;text-align:right;font-style:normal;color:rgba(34,168,195,0.8);font-family:"IBM Plex Mono", "Fira Code", "Source Code Pro", monospace}blockquote .attribution:before,blockquote p.attribution:before,blockquote p[data-attribution="true"]:before{content:"— ";color:rgba(34,168,195,0.5)}:root{--link-saturation: 70%;--link-lightness: 45%;--link-hover-lightness: 85%;--show-title-line: 0}[data-theme="dark"]{--link-hover-lightness: 25%}@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--link-hover-lightness: 25%}}a{--link-hue: 190;box-shadow:0px -0.125em 0px 0em hsl(var(--link-hue), var(--link-saturation), var(--link-lightness)) inset;transition:box-shadow 0.2s cubic-bezier(0.23, 1, 0.32, 1);padding-left:0.25em;color:currentColor;text-decoration:none}a:hover{box-shadow:0px -1.625em 0px hsl(var(--link-hue), var(--link-saturation), var(--link-hover-lightness)) inset}ol,ul{margin:0 0 1rem 1.25rem;padding:0;list-style-position:outside}ol ol,ol ul,ul ol,ul ul{margin-bottom:1rem;margin-top:0.5rem;padding-left:1rem;font-size:0.95em}li{margin:0}li:not(last-of-type){margin-bottom:0.4rem}abbr{border-bottom:1px dashed currentColor;text-decoration:none;cursor:help}kbd,code,pre{font-family:"Fira Code", "Source Code Pro", monospace}pre{max-width:100%}code{margin:0;padding:0.125rem 0.25rem 0;background-color:var(--code-bg);color:var(--text-color)}kbd{margin:0 0.125rem;padding:0.25rem 0.5rem;background-color:#f8f8f8;border:1px solid #ddd;border-bottom:2px solid #ccc;border-radius:4px;box-shadow:0 1px 0 rgba(0,0,0,0.1),inset 0 0 0 1px #fff;font-size:0.875em;font-family:"IBM Plex Mono", "Fira Code", "Source Code Pro", monospace;white-space:nowrap}[data-theme="dark"] kbd{background-color:#2a2a2a;border:1px solid #444;border-bottom:2px solid #555;box-shadow:0 1px 0 rgba(0,0,0,0.3),inset 0 0 0 1px #3a3a3a;color:#e0e0e0}article,section{display:block;margin-bottom:1rem}h1{font-size:1.875rem}h2,h3,h4,h5,h6{margin:0 0 0.5rem}h2{font-size:2rem}h3{font-size:1.75rem}h4{font-size:1.5rem}h5{font-size:1.25rem}h6{font-size:1rem}.container{width:100%;max-width:38rem;margin:0 auto;padding:0.5rem}@media screen and (min-width: 800px){.container{padding:1rem 0}}.site-header,.site-nav{margin-bottom:2rem}.site-header h1,.site-nav h1{margin-bottom:0.5rem}.site-nav,.site-header{padding-top:12rem}.site-header{position:relative}.site-nav{display:flex;position:relative}.site-nav a#pdf-link{margin-left:auto}.site-nav a#pdf-link::before{content:"\2193";margin-right:0.25rem}.site-nav a#index-link::before{content:"\2190";margin-right:0.25rem}.site-footer{margin:3rem 0 0;padding-bottom:12rem;font-size:0.8125rem}.site-footer hr{border:0;height:6px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 6' preserveAspectRatio='none'%3E%3Cpath d='M 0,3 Q 8,1 16,3.5 T 32,2.5 Q 40,4.5 48,2 T 64,3.5 Q 72,1.5 80,4 T 96,2.5 Q 104,5 112,2 T 128,3.5 Q 136,1 144,4.5 T 160,3 Q 168,5.5 176,2.5 T 192,3 L 200,3' fill='none' stroke='hsla(190, 70%, 45%, 0.4)' stroke-width='1.2' stroke-linecap='round'/%3E%3Cpath d='M 0,2.5 Q 12,4 24,2 T 48,3 Q 60,1 72,3.5 T 96,2.5 Q 108,4.5 120,2 T 144,3 Q 156,1.5 168,4 T 192,2.5 L 200,2.5' fill='none' stroke='hsla(190, 70%, 45%, 0.3)' stroke-width='1.5' stroke-linecap='round'/%3E%3Cpath d='M 0,3.5 Q 5,3 10,4 T 20,3 Q 30,4 40,3.5 T 60,3.5 Q 70,2.5 80,3.5 T 100,3 Q 110,4 120,3.5 T 140,3.5 Q 150,3 160,4 T 180,3.5 Q 190,3 200,3.5' fill='none' stroke='hsla(190, 70%, 45%, 0.25)' stroke-width='0.8' stroke-linecap='round'/%3E%3C/svg%3E");background-size:100% 100%;background-repeat:no-repeat;background-position:center}.site-footer [itemprop="sameAs"]+[itemprop="sameAs"]{margin-left:0.4rem}@media screen and (min-width: 800px){.site-footer{margin-bottom:0.5rem}}.posts ol{margin-left:0;list-style:none}.posts li{margin-bottom:0.5rem}@media screen and (min-width: 800px){.posts li{display:flex;flex-direction:row}}.posts time{display:block}.posts time+a{margin-left:1rem}@media screen and (min-width: 800px){.posts time+a{margin-left:2rem}}.post .project-meta-container{display:flex;flex-direction:row;justify-content:space-between}.post .project-meta-container p{padding-right:3em}.post .post-header{text-align:center;padding:2rem 0 3rem;border-bottom:1px solid var(--border-color);margin-bottom:3rem}@media screen and (min-width: 800px){.post .post-header{margin-left:-4rem;margin-right:-4rem;padding-left:4rem;padding-right:4rem}}@media screen and (min-width: 1200px){.post .post-header{margin-left:-6rem;margin-right:-6rem;padding-left:6rem;padding-right:6rem}}.post .post-header .post-title{font-size:2.25rem;font-weight:600;line-height:1.15;margin:0 0 1rem 0;letter-spacing:-0.02em;color:var(--text-color);opacity:0.95}@media screen and (min-width: 1200px){.post .post-header .post-title{font-size:2.5rem}}@media screen and (max-width: 800px){.post .post-header .post-title{font-size:1.875rem}}.post .post-header .post-meta{display:flex;flex-direction:column;align-items:center;gap:0.5rem}.post .post-header .post-meta .post-date{font-size:0.875rem;font-weight:400;letter-spacing:0.05em;color:var(--meta-color);opacity:0.7}.post .post-header .post-meta .post-date::before{content:"Published on ";font-style:italic}.post .post-header .post-meta .reading-time{font-size:0.8125rem;color:var(--meta-color);opacity:0.6}.post .post-header .post-meta .reading-time::before{content:"· "}.post .post-header .post-meta .reading-time::after{content:" min read"}.post .post-header .post-meta .post-tags{display:flex;gap:0.5rem;margin-top:0.5rem}.post .post-header .post-meta .post-tags .tag{font-size:0.75rem;padding:0.125rem 0.5rem;background:var(--code-bg);color:var(--meta-color);border-radius:0.125rem;text-decoration:none;opacity:0.8}.post .post-header .post-meta .post-tags .tag:hover{opacity:1;color:#22a8c3}.post .post-header .post-excerpt{margin-top:1rem;font-size:1.125rem;line-height:1.6;color:var(--meta-color);font-style:italic;max-width:40rem;margin-left:auto;margin-right:auto;opacity:0.85}.post p{line-height:1.9em}.post-content>p:first-of-type::first-letter,.post>p:first-of-type::first-letter{float:left;font-size:4.5rem;line-height:3.5rem;padding-right:0.5rem;padding-top:0.25rem;margin-bottom:-0.5rem;font-weight:700;font-family:"IBM Plex Mono", "Fira Code", "Source Code Pro", monospace;color:rgba(34,168,195,0.8)}.post ul:not(#TableOfContents ul){list-style:none;padding-left:1.5rem}.post ul:not(#TableOfContents ul) li{position:relative;padding-left:0.5rem;line-height:1.9em;margin-bottom:0.5rem}.post ul:not(#TableOfContents ul) li:before{content:"";position:absolute;left:-1.75rem;top:0.5em;width:0.75rem;height:0.75rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cg opacity='0.95'%3E%3Cpath d='M 5,10 Q 7,5 10,6 T 15,10 Q 16,15 10,16 T 5,10' fill='none' stroke='hsl(190, 70%, 45%)' stroke-width='3.5' stroke-linecap='round'/%3E%3Cpath d='M 6,11 Q 8,7 11,6 T 16,11 Q 15,16 11,15 T 6,11' fill='none' stroke='hsl(190, 70%, 45%)' stroke-width='3' stroke-linecap='round' opacity='0.8'/%3E%3Cpath d='M 4,9 Q 6,6 9,5 T 15,9 Q 17,13 11,16 T 4,12 Z' fill='none' stroke='hsl(190, 70%, 45%)' stroke-width='2.5' stroke-linecap='round' opacity='0.6'/%3E%3C/g%3E%3C/svg%3E");background-size:contain;background-repeat:no-repeat;background-position:center}.post ol{padding-left:1.5rem}.post ol li{line-height:1.9em;margin-bottom:0.5rem}.post ul ul,.post ol ol,.post ul ol,.post ol ul{margin-top:0.5rem;margin-bottom:0.5rem}.hljs{margin:1rem 0;font-size:0.875rem}.year-divider{display:flex;width:100%;justify-content:center;align-items:center;text-align:center}.year-divider:before{content:"";border-top:1px dotted lightgray;margin:0 20px 0 0;flex:1 0 20px}.hero-image{display:flex;justify-content:center}.hero-image img{max-width:150%}.tall-header{min-height:90vh;vertical-align:middle;display:flex;flex-direction:column;justify-content:center}@media only screen and (max-width: 1100px){#TableOfContents{display:none}}.post{position:relative}.post #TableOfContents{position:absolute;left:-40px;height:100%;width:calc((100vw - 38rem) / 2 - 50px);max-width:250px;margin-left:10px;transform:translate(-100%)}.post #TableOfContents ul li{color:var(--text-color-toc)}.post #TableOfContents ul li.active{color:var(--text-color) !important}.post #TableOfContents ul li:hover a{text-decoration:underline}.post #TableOfContents ul{counter-reset:item;max-height:calc(100vh - 100px);overflow:auto;padding-top:6px;position:-webkit-sticky;position:sticky;top:30px;list-style-position:outside !important;margin:0}.post #TableOfContents ul li{margin-left:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;counter-increment:li;font-family:"IBM Plex Mono", "Fira Code", "Source Code Pro", monospace;font-size:14px;color:var(--text-color-toc);transition:color 350ms ease-in-out}.post #TableOfContents ul li a{text-decoration:none;box-shadow:none}.post #TableOfContents ul li::before{content:counter(li);position:absolute;left:0px;text-align:right;color:var(--text-color-toc);transition:color 350ms ease-in-out}.post #TableOfContents ul li:hover,.post #TableOfContents ul li:hover::before{color:var(--text-color)}.post #TableOfContents ul li.active::before{color:var(--text-color)}div.list-container div.post-entry{display:flex;flex-direction:row;align-items:flex-start;margin:2rem 0}div.list-container div.post-entry:hover .post-entry-meta{color:#22a8c3}div.list-container div.post-entry:hover .post-title{color:#22a8c3}div.list-container div.post-entry:hover .post-title::after{background-color:rgba(34,168,195,0.3)}div.list-container div.post-entry:hover .post-excerpt{color:var(--text-color) !important}div.list-container div.post-entry-meta{display:flex;flex-direction:column;min-width:fit-content;margin-right:2rem;padding-top:0.3125rem;font-family:"IBM Plex Mono", "Fira Code", monospace;color:var(--text-color-light);font-size:0.8em;line-height:1.2;transition:color 200ms ease-in-out}div.list-container div.post-entry-details{display:flex;flex-direction:column;color:var(--text-color-light)}div.list-container div.post-entry-details a{display:block;box-shadow:none}div.list-container div.post-entry-details .post-title{color:var(--text-color-light);text-transform:uppercase;line-height:1.2;font-family:"IBM Plex Mono", "Fira Code", "Source Code Pro", monospace;font-weight:400;margin-bottom:0.75rem;transition:color 0.2s ease;display:flex;align-items:center}div.list-container div.post-entry-details .post-title::after{content:'';flex:1;height:1px;background-color:transparent;margin-left:1rem;transition:background-color 0.2s ease;opacity:var(--show-title-line)}div.list-container div.post-entry-details .post-excerpt{font-size:0.8rem;color:var(--text-color-light);transition:color 200ms ease-in-out}div.list-container div.post-entry-details .post-excerpt.arrow{display:none;font-family:Fira Code}.container.resume{width:80%;max-width:50rem}.container.resume h1.name{margin-bottom:0;text-align:right}.container.resume h1.name span.last-name{font-weight:400}.container.resume h1.name span.first-name{font-weight:700}.container.resume h2.position{text-align:right;font-size:1rem;font-weight:400}.container.resume div.excerpt{padding:2em 1em;font-size:0.9em;border-radius:5px}.container.resume div.excerpt *:last-child{margin-bottom:0}.container.resume .resume-section{margin-top:3em;position:relative}.container.resume .resume-section-title{margin-bottom:2.5rem;position:relative;z-index:1;display:flex;align-items:center;text-transform:uppercase;font-size:1.2rem;font-family:"IBM Plex Mono", "Fira Code", "Source Code Pro", monospace;font-weight:600;color:rgba(34,168,195,0.9);letter-spacing:0.05em}.container.resume .resume-section-title::before,.container.resume .resume-section-title::after{content:"";height:3px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 3' preserveAspectRatio='none'%3E%3Cpath d='M 0,1.5 Q 10,0.5 20,1.5 T 40,1.5 Q 50,2.5 60,1.5 T 80,1.5 Q 90,0.8 100,1.5' fill='none' stroke='hsla(190, 70%, 45%, 0.2)' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");background-size:100% 100%;background-repeat:no-repeat;flex-grow:1}.container.resume .resume-section-title::before{margin:0 15px 0 0px;max-width:50px}.container.resume .resume-section-title::after{margin:0 0px 0 15px}.container.resume .resume-section.experience-section .resume-section-content{position:relative;padding-left:30px}.container.resume .resume-section.experience-section .resume-section-content::before{content:"";position:absolute;left:7px;top:8px;bottom:8px;width:2px;background:linear-gradient(to bottom, rgba(34,168,195,0.6) 0%, rgba(34,168,195,0.3) 50%, rgba(34,168,195,0.1) 100%)}.container.resume .resume-section.experience-section .item-container{position:relative}.container.resume .resume-section.experience-section .item-container::before{content:"";position:absolute;left:-28px;top:0.5rem;width:12px;height:12px;background-color:var(--bg-color);border:3px solid rgba(34,168,195,0.8);border-radius:50%;z-index:1}.container.resume .resume-section.experience-section .item-container:first-child::before{width:16px;height:16px;left:-30px;background-color:rgba(34,168,195,0.8);box-shadow:0 0 0 3px rgba(34,168,195,0.2)}.container.resume .resume-section:not(.experience-section) .resume-section-content{padding-left:0}.container.resume .resume-section:not(.experience-section) .resume-section-content::before{display:none}.container.resume .resume-section:not(.experience-section) .item-container::before{display:none}.container.resume .resume-section div.item-header{display:flex;flex-direction:row;flex-wrap:wrap}.container.resume .resume-section div.item-header .main-info div.spaced{margin-top:0.5em}.container.resume .resume-section div.item-meta{margin-left:auto;display:flex;flex-direction:column;text-align:right;font-size:0.75em;font-style:italic;color:var(--text-color-light)}.container.resume .resume-section div.item-repo{display:flex;flex-wrap:wrap;flex-direction:row;align-items:center;font-size:0.75em;color:var(--text-color-light)}.container.resume .resume-section div.item-repo .repo-stat{display:flex;flex-direction:row;align-items:center}.container.resume .resume-section div.item-repo .repo-stat p{margin:0;margin-left:1em}.container.resume .resume-section div.item-repo .repo-stat a{display:flex;align-items:center;box-shadow:none}.container.resume .resume-section div.item-repo .repo-stat:not(:first-child)::before{content:"·";margin:0 10px}.container.resume .resume-section div.item-repo svg{fill:#7d7d7d}.container.resume .resume-section div.item-title{font-weight:700}.container.resume .resume-section div.item-title span.item-wip{margin-left:0.75rem;padding:0.2rem 0.6rem;font-weight:600;font-family:"IBM Plex Mono", "Fira Code", "Source Code Pro", monospace;font-size:0.7rem;background:rgba(217,172,38,0.15);border:1px solid rgba(217,172,38,0.3);color:#98781b;border-radius:3px;vertical-align:middle}.container.resume .resume-section div.item-company{text-transform:uppercase;font-size:0.8em;font-weight:700;color:var(--text-color-light)}.container.resume .resume-section div.item-stack{display:flex;flex-wrap:wrap;gap:0.5rem;margin-top:0.75rem}.container.resume .resume-section div.item-stack-item{display:inline-block;padding:0.25rem 0.75rem;font-size:0.75rem;font-weight:600;font-family:"IBM Plex Mono", "Fira Code", "Source Code Pro", monospace;background:var(--badge-bg);border:1px solid var(--badge-border);border-radius:3px;color:var(--badge-color);transition:all 0.2s ease}.container.resume .resume-section div.item-stack-item:hover{background:var(--badge-hover-bg);border-color:var(--badge-hover-border);transform:translateY(-1px)}.container.resume .resume-section div.item-stack-item:not(:first-child)::before{display:none}.container.resume .resume-section div.item-details{margin-top:1rem;color:var(--text-color);font-size:0.9rem}div.main-info{position:relative}.margin-annotation{top:0;font-size:12px}@media screen and (max-width: 1599px){.margin-annotation{margin:1em 0 1em 1em;font-size:14px}}@media screen and (min-width: 1600px){.margin-annotation{position:absolute;max-width:12rem;transform:translate(calc(-100.1% - 30px));text-align:right}}.theme-toggle{background:none;border:none;cursor:pointer;padding:0;color:var(--text-color);font-family:inherit;font-size:0.875rem;transition:opacity 0.2s ease;text-align:right;line-height:1.2;opacity:0.7;position:fixed;top:2rem;right:16px;z-index:100}.theme-toggle:hover{opacity:1}.theme-toggle strong{font-weight:700}.theme-toggle span{display:block}.theme-toggle span:nth-child(2){position:relative;padding:2px 0;margin:-2px 0;display:inline-block;flex-grow:0}.theme-toggle span:nth-child(2) strong{position:relative;z-index:2;color:var(--bg-color);padding:0 2px}.theme-toggle span:nth-child(2)::before{content:'';position:absolute;right:-2px;left:-2px;top:0;bottom:0;background-color:var(--text-color);z-index:1}@media screen and (max-width: 800px){.theme-toggle{position:absolute;top:1rem}}@media print{body{font-size:11pt;line-height:1.4;color:#000;background:white}.site-nav,.site-footer,#pdf-link,.repo-stat svg,.item-stack-item:hover{display:none !important}.resume-section{page-break-inside:avoid}.item-container{page-break-inside:avoid;page-break-after:auto}.resume-section.experience-section .resume-section-content::before,.resume-section.experience-section .item-container::before{display:none}.resume-section.experience-section .resume-section-content{padding-left:0}.container.resume{width:100%;max-width:none}.container.resume h1.name{margin-top:0;font-size:24pt}.container.resume h2.position{font-size:14pt;margin-bottom:1rem}.container.resume .excerpt{border:1px solid #ddd;padding:1rem}.container.resume .resume-section-title{color:#000;font-size:16pt}.container.resume .resume-section-title::before,.container.resume .resume-section-title::after{border-top:1px solid #000;background-image:none;height:1px}.container.resume .item-stack-item{background:white !important;border:1px solid #333 !important;color:#000 !important;print-color-adjust:exact;-webkit-print-color-adjust:exact}.container.resume .item-wip{background:white !important;border:1px solid #666 !important;color:#333 !important}.container.resume a{color:#000;text-decoration:underline;box-shadow:none !important;padding:0 !important}.container.resume a[href^="http"]:after{content:" (" attr(href) ")";font-size:0.8em;font-style:italic;word-break:break-all}.container.resume a[href^="#"]:after,.container.resume a[href^="/"]:after{content:""}.container.resume .item-container{margin-bottom:1.5rem}.container.resume .item-meta{font-size:10pt}}

/*# sourceMappingURL=style.css.map */