:root{--txt-font-size:clamp(1.05rem, calc(1.3vw + 0.5rem), 1.6rem);--txt-line-height:calc(var(--txt-font-size) * 1.45);--txt-letter-spacing:-0.019em;--txt-small-font-size:calc(var(--txt-font-size) * 0.7);--txt-small-letter-spacing:-0.009em;--txt-small-line-height:calc(var(--txt-small-font-size) * 1.4);--h1-font-size:calc(var(--txt-font-size) * 2.8);--h1-line-height:calc(var(--h1-font-size) * 1.3);--h1-letter-spacing:-0.022em;--h2-font-size:calc(var(--txt-font-size) * 1.7);--h2-line-height:calc(var(--h2-font-size) * 1.35);--h2-letter-spacing:-0.022em;--h3-font-size:calc(var(--txt-font-size) * 1.15);--code-font-size:calc(var(--txt-font-size) * 0.85);--code-line-height:calc(var(--code-font-size) * 1.5);--timeline-padding:20px}@media(prefers-color-scheme:light){:root{--color-bg:#ffffff;--color-txt:#131313;--color-txt-alt:#8d8d8d;--color-accent-base:#0a7cff;--color-accent-base-light:rgba(10, 124, 255, 0.09);--color-accent-light:#22b8e0;--color-gray:#f4f4f4;--color-rule:#e2e2e2;--txt-font-weight:400;--txt-font-weight-bold:720;--h1-font-weight:520;--h2-font-weight:650;--code-color:#131313;--code-color-blue:#0b7285;--code-color-red:#c2255c;--code-color-green:#5c940d;--code-color-purple:#6741d9;--code-color-yellow:#a37f00;--code-color-grey:#9c9c92;--code-color-error:#960050;--code-color-error-bg:#ffe3e3;--code-color-line-numbers:#a0a0a0;--code-color-line-highlight:#ffffcc;--code-color-bg:#f4f4f4;--timeline-color:#131313}}@media(prefers-color-scheme:dark){:root{--color-bg:#0f0f0f;--color-txt:#f2f2f2;--color-txt-alt:#9b9b9b;--color-accent-base:#339dff;--color-accent-base-light:rgba(51, 157, 255, 0.12);--color-accent-light:#22b8e0;--color-gray:#1a1a1a;--color-rule:#2a2a2a;--txt-font-weight:350;--txt-font-weight-bold:700;--h1-font-weight:540;--h2-font-weight:600;--code-color:#f8f8f8;--code-color-blue:#66d9ef;--code-color-red:#f92672;--code-color-green:#a6e22e;--code-color-purple:#ae81ff;--code-color-yellow:#e6db74;--code-color-grey:#75715e;--code-color-error:#f92672;--code-color-error-bg:#1e0010;--code-color-line-numbers:#7f7f7f;--code-color-line-highlight:#2b2b1f;--code-color-bg:#1b1b1b;--timeline-color:#f2f2f2}}*{padding:0;margin:0;box-sizing:border-box}html{font-family:inter var,inter,-apple-system,BlinkMacSystemFont,sans-serif;font-feature-settings:"calt","case","ss02","ss03","zero";font-size:14px;font-weight:var(--txt-font-weight);line-height:var(--txt-line-height);letter-spacing:var(--txt-letter-spacing);text-rendering:optimizeLegibility;scroll-behavior:smooth;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}body{background-color:var(--color-bg);color:var(--color-txt);font-size:var(--txt-font-size)}main{padding-bottom:2rlh}main,header,footer>*{width:clamp(280px,88vw,880px);margin:auto}main.wide{width:100%;max-width:none;padding-bottom:0}nav{margin-top:2rlh;margin-bottom:2rlh}nav ul{display:flex;justify-content:flex-start;align-items:baseline;flex-wrap:wrap;gap:.5rlh;padding-left:0;list-style:none;margin-bottom:0}nav ul li::before{content:none;margin-right:0}nav a[aria-current=page]{color:var(--color-txt);text-decoration:underline;text-underline-offset:4px}nav .rss a::after{content:none}h1{font-weight:var(--h1-font-weight);font-size:var(--h1-font-size);line-height:var(--h1-line-height);letter-spacing:var(--h1-letter-spacing);margin-bottom:1.5rlh;hyphens:auto}h2{font-weight:var(--h2-font-weight);font-size:var(--h2-font-size);letter-spacing:var(--h2-letter-spacing);line-height:var(--h2-line-height);margin-bottom:1rlh;margin-top:2rlh}h3{font-size:var(--h3-font-size);font-weight:var(--txt-font-weight-bold);letter-spacing:var(--h2-letter-spacing);margin-top:1.5rlh;margin-bottom:.5rlh}h4{font-size:var(--txt-font-size);font-weight:var(--txt-font-weight-bold);margin-top:1rlh;margin-bottom:.25rlh}hr{border:none;border-top:1px solid var(--color-rule);margin:1.5rlh 0}p,figure{margin-bottom:1rlh}p:last-child{margin-bottom:0}a,a:visited{color:var(--color-accent-base);text-decoration:none}a:hover{text-decoration:underline}a:active{color:var(--color-accent-light)}a[href^="http:"]::after,a[href^="https:"]::after{content:"↗"}a[href^="https://fuchsharald.com"]::after,a.no-marker::after{content:""}a[href^="#"]::after{content:"→"}a[href^="#top"]::after{content:"↑"}a.footnote-backref::after{content:none}li,p{font-size:var(--txt-font-size);font-weight:var(--txt-font-weight);hyphens:auto}img{max-width:100%;display:inline;height:auto}figure{margin:1.5rlh 0}figure>img{max-height:70vh;display:block}figure>figcaption,figcaption p{color:var(--color-txt-alt);font-size:var(--txt-small-font-size);letter-spacing:var(--txt-small-letter-spacing);line-height:var(--txt-small-line-height);margin-top:.25rlh}ol,dl,ul,.highlight{margin-bottom:1.5rlh}ol li,ul li{margin-bottom:0}ol{list-style:decimal-leading-zero;padding-left:60px}ul{padding-left:1rlh;list-style:none}ul li::before{content:"–";margin-right:9px;position:relative;top:2px;color:var(--color-txt-alt)}strong{font-weight:var(--txt-font-weight-bold)}em{font-style:italic}code{font-family:jetbrains mono,fira code,ui-monospace,monospace}p code,li code,td code{font-size:var(--code-font-size);background-color:var(--code-color-bg);padding:1px 5px;border-radius:3px}pre{background-color:var(--code-color-bg);padding:.5rlh;overflow-x:auto;font-size:var(--code-font-size);line-height:var(--code-line-height);margin-bottom:1.5rlh}.highlight{background-color:var(--code-color-bg);overflow-x:auto;font-size:var(--code-font-size);line-height:var(--code-line-height)}.highlight pre{background:0 0;margin-bottom:0}::selection{background-color:var(--color-accent-base);color:var(--color-bg)}summary{cursor:pointer}blockquote{padding:calc(1rlh * .5);border-left:calc(1rlh * .25)solid var(--color-txt-alt);margin-bottom:1rlh;color:var(--color-txt-alt)}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0!important}table{width:100%;margin-bottom:1.5rlh;border-collapse:collapse;font-size:var(--txt-small-font-size);line-height:var(--txt-small-line-height);letter-spacing:var(--txt-small-letter-spacing)}table th{text-align:left;font-weight:var(--txt-font-weight-bold);border-bottom:1px solid var(--color-txt)}table th,table td{padding:calc(1rlh * .3).5rlh calc(1rlh * .3)0;border-bottom:1px solid var(--color-rule);vertical-align:top}.table-wrap{overflow-x:auto}sup,sub{vertical-align:top;position:relative;top:-.15rlh;left:1px;font-size:var(--txt-small-font-size)}sub{top:.15rlh}iframe{width:100%;height:clamp(300px,60vh,900px);border:none;margin-bottom:1rlh}.mono{font-family:jetbrains mono,fira code,ui-monospace,monospace;font-size:var(--txt-small-font-size);letter-spacing:0}.muted{color:var(--color-txt-alt)}.intro-head{display:flex;align-items:center;gap:.75rlh;margin-bottom:1.5rlh}.intro-head h1{margin-bottom:0}.avatar{width:clamp(96px,13vw,152px);height:clamp(96px,13vw,152px);border-radius:50%;display:block;flex:none;object-fit:cover}.card-media{display:block;margin:-10px -10px .5rlh;aspect-ratio:5/3;overflow:hidden;background-color:var(--color-gray)}.card-media img{width:100%;height:100%;object-fit:cover;display:block}.card-media--logo{background-color:#fff}.card-media--logo img{object-fit:contain;padding:8px}.home h2{font-size:var(--h3-font-size);font-weight:var(--txt-font-weight-bold);letter-spacing:var(--txt-letter-spacing);margin-top:2rlh;margin-bottom:.75rlh}.card-list{display:flex;flex-wrap:wrap;gap:10px;padding-left:0;list-style:none;margin-bottom:1.5rlh}.card-list li{list-style:none;flex:1 1 220px;padding:10px;border:1px solid var(--color-accent-base)}.card-list li::before{content:none}.card-list li:hover{background-color:var(--color-accent-base-light)}.card-list li a{display:block;width:100%;height:100%}.card-list li a:hover{text-decoration:none}.card-list time{display:block;color:var(--color-txt-alt);font-size:var(--txt-small-font-size);line-height:var(--txt-small-line-height);font-family:jetbrains mono,fira code,ui-monospace,monospace;letter-spacing:0}.card-list h3{font-size:var(--txt-font-size);line-height:var(--txt-line-height);font-weight:var(--txt-font-weight-bold);margin:0}.card-list p{font-size:var(--txt-small-font-size);line-height:var(--txt-small-line-height);letter-spacing:var(--txt-small-letter-spacing);color:var(--color-txt-alt);margin-top:.25rlh;margin-bottom:0}.availability{border-left:calc(1rlh * .25)solid var(--color-accent-base);background-color:var(--color-accent-base-light);padding:calc(1rlh * .5);margin-bottom:1.5rlh}.availability p:last-child{margin-bottom:0}.entry-list{list-style:none;padding-left:0;margin-bottom:2rlh}.entry-list>li{padding:.75rlh 0;border-bottom:1px solid var(--color-rule)}.entry-list>li::before{content:none}.entry-list>li:first-child{border-top:1px solid var(--color-rule)}.entry--media{display:flex;gap:.75rlh;align-items:flex-start}.entry-thumb{flex:none;width:clamp(88px,16vw,160px);aspect-ratio:16/11;overflow:hidden;background-color:var(--color-gray);display:block}.entry-thumb::after{content:none}.entry-thumb img{width:100%;height:100%;object-fit:cover;display:block}.entry-thumb--logo{background-color:#fff}.entry-thumb--logo img{object-fit:contain;padding:8px}.entry-body{min-width:0}.entry-list .entry-meta{color:var(--color-txt-alt);font-family:jetbrains mono,fira code,ui-monospace,monospace;font-size:var(--txt-small-font-size);line-height:var(--txt-small-line-height);letter-spacing:0;margin-bottom:0}.entry-list h2{font-size:var(--txt-font-size);line-height:var(--txt-line-height);letter-spacing:var(--txt-letter-spacing);font-weight:var(--txt-font-weight-bold);margin:.15rlh 0}.entry-list .entry-summary{color:var(--color-txt-alt);margin-bottom:0}.entry-list .tags{color:var(--color-txt-alt);font-family:jetbrains mono,fira code,ui-monospace,monospace;font-size:var(--txt-small-font-size);line-height:var(--txt-small-line-height);letter-spacing:0;margin-top:.15rlh;margin-bottom:0}.year-group{margin-bottom:2rlh}.year-group>h2{font-family:jetbrains mono,fira code,ui-monospace,monospace;font-size:var(--txt-small-font-size);letter-spacing:0;color:var(--color-txt-alt);font-weight:var(--txt-font-weight);margin-bottom:.5rlh;margin-top:0}.page-meta{color:var(--color-txt-alt);font-family:jetbrains mono,fira code,ui-monospace,monospace;font-size:var(--txt-small-font-size);line-height:var(--txt-small-line-height);letter-spacing:0;margin-top:-1rlh;margin-bottom:1.5rlh}.lede{color:var(--color-txt-alt);margin-bottom:1.5rlh}.page-nav{display:flex;justify-content:space-between;gap:1rlh;flex-wrap:wrap;border-top:1px solid var(--color-rule);padding-top:1rlh;margin-top:2rlh}.timeline ol{list-style:none;margin-left:50%;padding:0;border-left:1px solid var(--timeline-color)}.timeline ol>li{margin-bottom:1rlh}.timeline ol>li:nth-child(2n+1){padding-left:var(--timeline-padding)}.timeline ol>li:nth-child(2n){padding-right:var(--timeline-padding);position:relative;right:100%;text-align:right}.timeline ol>li:nth-child(2n+1)::before{content:"–";position:absolute;left:50%;color:var(--timeline-color);font-weight:250}.timeline ol>li:nth-child(2n)::before{content:"–";position:absolute;right:0;color:var(--timeline-color);font-weight:250}.timeline ol>li p{color:var(--color-txt-alt)}.timeline ol>li p img{margin-top:.5rlh}.timeline ol h2{font-size:var(--txt-font-size);line-height:var(--txt-line-height);letter-spacing:var(--txt-letter-spacing);font-weight:var(--h2-font-weight);margin:.25rlh 0}.timeline ol>li p.date,.timeline ol>li p.role{color:var(--color-txt);margin-bottom:0}.timeline ol>li p.date{font-weight:var(--txt-font-weight-bold);font-family:jetbrains mono,fira code,ui-monospace,monospace;font-size:var(--txt-small-font-size);line-height:var(--txt-small-line-height);letter-spacing:0}.timeline ol>li p.role{font-weight:var(--txt-font-weight)}.timeline ol>li:nth-child(2n) p.role svg{float:right;margin-left:6px}.timeline ol>li:nth-child(2n+1) p.role svg{margin-right:6px}.timeline ol>li p.note{font-size:var(--txt-small-font-size);line-height:var(--txt-small-line-height);letter-spacing:var(--txt-small-letter-spacing)}.timeline ol>li p.tl-media{margin-top:.4rlh;margin-bottom:0}.timeline ol>li p.tl-media img{display:block;width:100%;max-width:280px;aspect-ratio:16/9;object-fit:cover;background-color:var(--color-gray);margin-top:0}.timeline ol>li:nth-child(2n) p.tl-media img{margin-left:auto}.timeline-legend{list-style:none;padding-left:0;display:flex;flex-wrap:wrap;gap:.5rlh 1rlh;color:var(--color-txt-alt);font-size:var(--txt-small-font-size);line-height:var(--txt-small-line-height);letter-spacing:var(--txt-small-letter-spacing);margin-bottom:2rlh}.timeline-legend li::before{content:none}.timeline-legend li{display:flex;align-items:center;gap:6px}.icon{display:inline;height:calc(1rlh * .85);vertical-align:middle;fill:none}.icon *{stroke:var(--color-txt);stroke-width:6px;stroke-linecap:round;stroke-linejoin:round}svg .fill{fill:var(--color-txt)}svg .no-stroke{stroke:none;stroke-width:0!important}svg.active{animation:pulse 2s infinite}@keyframes pulse{0%{opacity:1}50%{opacity:.4}100%{opacity:1}}@media(prefers-reduced-motion:reduce){svg.active{animation:none}html{scroll-behavior:auto}}@media(max-width:640px){.timeline ol{margin-left:0;padding-left:0;border-left:1px solid var(--timeline-color)}.timeline ol>li:nth-child(n){padding-left:var(--timeline-padding);padding-right:0;position:static;right:auto;text-align:left}.timeline ol>li:nth-child(n)::before{content:none}.timeline ol>li:nth-child(2n) p.role svg{float:none;margin-left:0;margin-right:6px}}.contact-form p{margin-bottom:.75rlh}.contact-form label{display:block;font-size:var(--txt-small-font-size);line-height:var(--txt-small-line-height);letter-spacing:var(--txt-small-letter-spacing);color:var(--color-txt-alt);margin-bottom:.15rlh}.contact-form input,.contact-form select,.contact-form textarea{width:100%;font-family:inherit;font-size:var(--txt-small-font-size);line-height:var(--txt-small-line-height);color:var(--color-txt);background-color:var(--color-bg);border:1px solid var(--color-rule);padding:calc(1rlh * .35)calc(1rlh * .4)}.contact-form input:focus,.contact-form select:focus,.contact-form textarea:focus{outline:none;border-color:var(--color-accent-base)}.contact-form button{font-family:inherit;font-size:var(--txt-small-font-size);color:var(--color-bg);background-color:var(--color-accent-base);border:1px solid var(--color-accent-base);padding:calc(1rlh * .35)1rlh;cursor:pointer}.contact-form button:hover{background-color:var(--color-bg);color:var(--color-accent-base)}.contact-form button:disabled{opacity:.5;cursor:default}.cf-gotcha{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.form-status{margin-bottom:1rlh;font-size:var(--txt-small-font-size);line-height:var(--txt-small-line-height)}.form-status:empty{margin-bottom:0}.form-status--success{color:var(--code-color-green)}.form-status--error{color:var(--code-color-red)}.contact-buttons{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:1.5rlh}.contact-button{border:1px solid var(--color-accent-base);padding:calc(1rlh * .3)calc(1rlh * .6);font-size:var(--txt-small-font-size)}.contact-button:hover{background-color:var(--color-accent-base-light);text-decoration:none}footer{color:var(--color-txt-alt);background-color:var(--color-gray);padding:2rlh 0 3rlh;font-size:var(--txt-small-font-size);line-height:var(--txt-small-line-height);letter-spacing:var(--txt-small-letter-spacing)}footer p,footer li{font-size:var(--txt-small-font-size);line-height:var(--txt-small-line-height);letter-spacing:var(--txt-small-letter-spacing)}footer a{color:var(--color-txt-alt)!important}footer ul{list-style:none;padding-left:0;display:flex;flex-wrap:wrap;gap:.25rlh 1rlh;margin-bottom:1rlh}footer ul li::before{content:none;margin-right:0}.chroma{color:var(--code-color)}.chroma .err{color:var(--code-color-error);background-color:var(--code-color-error-bg)}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0;width:auto;overflow:auto;display:block}.chroma .hl{display:block;width:100%;background-color:var(--code-color-line-highlight)}.chroma .lnt,.chroma .ln{margin-right:.4em;padding:0 .4em;color:var(--code-color-line-numbers)}.chroma .k,.chroma .kc,.chroma .kd,.chroma .kp,.chroma .kr,.chroma .kt{color:var(--code-color-blue)}.chroma .kn,.chroma .nt,.chroma .o,.chroma .ow,.chroma .gd{color:var(--code-color-red)}.chroma .na,.chroma .nc,.chroma .nd,.chroma .ne,.chroma .nf,.chroma .nx,.chroma .gi{color:var(--code-color-green)}.chroma .no{color:var(--code-color-blue)}.chroma .l,.chroma .se,.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo{color:var(--code-color-purple)}.chroma .ld,.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s2,.chroma .sh,.chroma .si,.chroma .sx,.chroma .sr,.chroma .s1,.chroma .ss{color:var(--code-color-yellow)}.chroma .c,.chroma .ch,.chroma .cm,.chroma .c1,.chroma .cs,.chroma .cp,.chroma .cpf,.chroma .gu{color:var(--code-color-grey)}.chroma .ge{font-style:italic}.chroma .gs{font-weight:700}