@font-face{font-family:Arvo;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/arvo-v20-latin-regular.woff2)format("woff2")}@font-face{font-family:Arvo;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/arvo-v20-latin-italic.woff2)format("woff2")}@font-face{font-family:Fira Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/fira-mono-v14-latin-regular.woff2)format("woff2")}@font-face{font-family:Fira Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/fira-mono-v14-latin-700.woff2)format("woff2")}@font-face{font-family:Fira Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/fira-sans-v16-latin-ext_latin-regular.woff2)format("woff2")}@font-face{font-family:Fira Sans;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/fira-sans-v16-latin-ext_latin-italic.woff2)format("woff2")}@font-face{font-family:Fira Sans;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/fira-sans-v16-latin-ext_latin-700.woff2)format("woff2")}@font-face{font-family:Fira Sans;font-style:italic;font-weight:700;font-display:swap;src:url(/fonts/fira-sans-v16-latin-ext_latin-700italic.woff2)format("woff2")}:root{color-scheme:light dark;--brand-primary:#598fe7;--brand-success:#25a162;--brand-danger:#dc524a;--jumbotron-bg:#3e6bb6;--jumbotron-small:#243e6a;--navbar-fg:#fefeff;--navbar-height:55px;--text-color:light-dark(#444,#cfd6e2);--text-muted:light-dark(#777,#8da0bd);--bg:light-dark(#fff,#16202f);--bg-alt:light-dark(#f5f5f5,#1f2c42);--border:light-dark(#ddd,#32415e);--border-hover:light-dark(#c9c9c9,#46587c);--link-hover:light-dark(#2361c9,#7fa8ec);--wash:light-dark(#f5f5f5,#1f2c42);--block-pattern:url(/img/congruent_pentagon.png);--font-sans:"Fira Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;--font-serif:"Arvo", "Times New Roman", Times, serif;--font-mono:"Fira Mono", Menlo, Monaco, Consolas, "Courier New", monospace}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark;--block-pattern:url(/img/congruent_pentagon_white.png)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--block-pattern:url(/img/congruent_pentagon_white.png)}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{min-height:100vh;font-family:var(--font-sans);color:var(--text-color);background-color:var(--bg);flex-direction:column;margin:0;font-size:16px;line-height:1.5;display:flex}h1,h2,h3,h4,h5,h6{font-family:var(--font-serif);margin:24px 0 12px;font-weight:500;line-height:1.1}h1{font-size:41px}h2{font-size:30px}h3{font-size:24px}h4{margin:12px 0;font-size:18px}h1 small,h2 small,h3 small{color:var(--text-muted);font-size:65%;font-weight:400}p{text-wrap:pretty;margin:0 0 12px}a{color:var(--brand-primary);text-decoration:none}a:hover,a:focus{color:var(--link-hover);text-decoration:underline}img{vertical-align:middle;max-width:100%}hr{border:0;border-top:1px solid var(--border);margin:24px 0}blockquote{border-left:5px solid var(--border);margin:0 0 24px;padding:11px 22px;font-size:20px}code,pre{font-family:var(--font-mono)}code{color:var(--text-color);background-color:var(--bg-alt);border-radius:4px;padding:2px 4px;font-size:100%}pre{border:1px solid var(--border);border-radius:4px;margin:0 0 12px;padding:9.5px;font-size:100%;line-height:1.5;overflow-x:auto}pre code{font-size:inherit;color:inherit;background-color:#0000;border-radius:0;padding:0}.container{width:100%;margin:0 auto;padding:0 15px}@media (width>=768px){.container{max-width:750px}}@media (width>=992px){.container{max-width:970px}}.lead{margin-bottom:22px;font-size:18px;font-weight:300;line-height:1.4}.lead p{font-size:inherit}@media (width>=768px){.lead{font-size:24px}}.list-unstyled{padding-left:0;list-style:none}.list-inline{margin:0 0 12px -5px;padding-left:0;list-style:none}.list-inline>li{padding:0 5px;display:inline-block}.text-muted{color:var(--text-muted)}.pull-right{float:right}.img-circle{border-radius:50%}.img-responsive{max-width:100%;height:auto;display:block}.img-thumbnail{background-color:var(--bg);border:1px solid var(--border);border-radius:4px;padding:4px}:is(.icon svg,svg.lucide){vertical-align:-.125em;width:1em;height:1em}.icon svg{fill:currentColor}.btn{font-size:16px;font-family:var(--font-sans);text-align:center;cursor:pointer;background-image:none;border:1px solid #0000;border-radius:4px;padding:6px 12px;line-height:1.5;display:inline-block}.btn:hover,.btn:focus{text-decoration:none}.btn-default{color:var(--text-color);background-color:var(--bg);border-color:var(--border)}.btn-default:hover{color:var(--text-color);background-color:var(--bg-alt);border-color:var(--border-hover)}.btn-success{color:#fff;background-color:var(--brand-success);border-color:#1f8752}.btn-success:hover{color:#fff;background-color:#1e8350;border-color:#145636}.btn-lg{border-radius:6px;padding:10px 16px;font-size:20px}.btn-group{display:inline-flex}.btn-group .btn{border-radius:0}.btn-group .btn:not(:first-child){margin-left:-1px}.btn-group .btn:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}.btn-group .btn:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}@media (width<=767px){.btn-group .hidden-xs{display:none}}.alert{border:1px solid #0000;border-radius:4px;margin-bottom:22px;padding:15px}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.well{background-color:var(--bg-alt);border:1px solid var(--border);border-radius:4px;margin-bottom:20px;padding:19px;box-shadow:inset 0 1px 1px #0000000d}.well :last-child{margin-bottom:0}.services-grid{gap:20px;margin:40px 0;display:grid}h2+.services-grid{margin-top:20px}@media (width>=768px){.services-grid{grid-template-columns:1fr 1fr}.services-grid .tall{grid-row:span 2}}.service-block{background-image:linear-gradient(color-mix(in srgb, var(--wash) 65%, transparent), color-mix(in srgb, var(--wash) 65%, transparent)), var(--block-pattern);background-size:300px;gap:20px;margin-bottom:0;transition:border-color .15s;display:flex;position:relative}.service-block:hover{border-color:var(--border-hover);background-image:linear-gradient(color-mix(in srgb, var(--wash) 45%, transparent), color-mix(in srgb, var(--wash) 45%, transparent)), var(--block-pattern)}.block-link{position:absolute;inset:0}.service-block .btn,.cta-banner .btn{position:relative}.service-block>:is(.icon,.lucide){color:var(--brand-primary);flex-shrink:0;font-size:2.5em}.service-block>.icon svg path{fill:currentColor}.service-block h3{margin-top:0;font-size:20px;font-weight:700}.service-icon{float:right;color:var(--brand-primary);margin:0 0 12px 20px;font-size:80px}.cta-banner{color:#fff;background-color:var(--jumbotron-bg);background-image:url(/img/congruent_pentagon.png);background-size:300px;border-radius:4px;flex-wrap:wrap;align-items:center;gap:20px;margin-bottom:20px;padding:19px;display:flex;position:relative}.cta-banner:hover{background-image:linear-gradient(#00000014,#00000014),url(/img/congruent_pentagon.png)}.cta-banner p{margin:0}.cta-banner .btn{flex-shrink:0;margin-left:auto}.site-header .navbar{background-color:var(--brand-primary);min-height:var(--navbar-height);background-image:url(/img/congruent_pentagon.png);background-position:0 5px;background-size:300px}.navbar .container{flex-wrap:wrap;align-items:stretch;display:flex}.navbar-brand{font-family:var(--font-serif);color:var(--navbar-fg);min-height:var(--navbar-height);align-items:center;padding:0 15px 0 0;font-size:20px;display:flex}.navbar-brand:hover,.navbar-brand:focus{color:#fff;text-decoration:none}.navbar-links{flex:1;display:flex}.navbar ul{align-items:stretch;margin:0;padding:0;list-style:none;display:flex}.navbar ul.navbar-right{margin-left:auto}.navbar-main>li{position:relative}.navbar-main>li>a,.language-menu summary{min-height:var(--navbar-height);color:var(--navbar-fg);align-items:center;padding:0 15px;display:flex}.navbar-main>li>a:hover,.language-menu summary:hover{color:#fff;text-decoration:none}.theme-toggle{min-height:var(--navbar-height);font:inherit;color:var(--navbar-fg);cursor:pointer;background:0 0;border:0;place-items:center;padding:0 0 0 15px;display:grid}.theme-toggle:hover{color:#fff}.theme-toggle .lucide{grid-area:1/1}.theme-toggle .sun{color:light-dark(currentColor,#0000)}.theme-toggle .moon{color:light-dark(#0000,currentColor)}.theme-toggle .theme-label{display:none}@media (width>=768px){.theme-toggle .lucide{width:26px;height:26px}.navbar-main>li.active:after{content:" ";pointer-events:none;z-index:1;border:8px solid #0000;border-bottom-color:#fff;width:0;height:0;margin-left:-8px;position:absolute;bottom:0;left:50%}}.language-menu{position:relative}.language-menu summary{cursor:pointer;gap:6px;list-style:none}.language-menu summary::-webkit-details-marker{display:none}.language-menu summary:after{content:"";border:4px solid #0000;border-top-color:currentColor;margin-top:4px}.language-menu .dropdown-menu{z-index:1000;background-color:var(--bg);border:1px solid var(--border);border-radius:4px;min-width:160px;padding:5px 0;display:block;position:absolute;top:100%;right:0;box-shadow:0 6px 12px #0000002d}.language-menu .dropdown-menu li{display:block}.language-menu .dropdown-menu a,.language-menu .dropdown-menu li.disabled span{color:var(--text-color);white-space:nowrap;padding:3px 20px;display:block}.language-menu .dropdown-menu li.active a{color:#fff;background-color:var(--brand-primary)}.language-menu .dropdown-menu li.disabled span{color:var(--text-muted);cursor:not-allowed}.language-menu .dropdown-menu a:hover{background-color:var(--bg-alt);text-decoration:none}.language-menu .dropdown-menu li.active a:hover{background-color:var(--brand-primary)}.nav-toggle-input,.nav-toggle{display:none}@media (width<=767px){.nav-toggle-input{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;display:block;position:absolute;overflow:hidden}.nav-toggle-input:focus-visible~.nav-toggle{outline:2px solid var(--navbar-fg);outline-offset:2px}.nav-toggle{cursor:pointer;color:var(--navbar-fg);align-self:center;margin-left:auto;padding:8px;display:flex}.nav-toggle svg{width:28px;height:28px}.nav-toggle .menu-close,.nav-toggle-input:checked~.nav-toggle .menu-open{display:none}.nav-toggle-input:checked~.nav-toggle .menu-close{display:block}.navbar-links{flex-direction:column;flex:none;width:100%;padding-bottom:8px;display:none}.nav-toggle-input:checked~.navbar-links{display:flex}.navbar ul{flex-direction:column;align-items:stretch;margin:7.5px 0}.navbar ul.navbar-right{margin-left:0}.navbar-main>li>a,.language-menu summary,.theme-toggle{min-height:0;padding:10px 0}.theme-toggle{justify-content:start}.theme-toggle .theme-label{grid-area:1/2;padding-left:6px;display:block}.language-menu .dropdown-menu{min-width:0;box-shadow:none;background-color:#0000;border:0;padding:0;position:static}.language-menu .dropdown-menu a,.language-menu .dropdown-menu li.disabled span{color:var(--navbar-fg);padding:5px 0 5px 10px}.language-menu .dropdown-menu a:hover{background-color:#0000}}.jumbotron{color:#fff;background-color:var(--jumbotron-bg);background-image:url(/img/congruent_pentagon.png);background-position:0 -50px;background-size:300px;margin-bottom:30px;padding:24px 15px}.jumbotron .container{flex-wrap:wrap;justify-content:space-between;align-items:center;display:flex}.jumbotron h1{margin:10px 0}.jumbotron h1 small{color:var(--jumbotron-small);font-size:65%;font-weight:400}@media (width<=767px){.jumbotron{padding-left:0;padding-right:0}}footer{background-color:var(--bg-alt);margin-top:auto;padding:20px 0}#content{margin-bottom:30px}footer .container{flex-flow:row-reverse wrap;justify-content:space-between;display:flex}footer .footer-nav{flex:1;justify-content:flex-end;gap:10px;margin:0;padding:0;list-style:none;display:flex}footer p{flex:1;margin:0}@media (width<=767px){footer .container{flex-direction:column;align-items:center;gap:6px}footer p,footer .footer-nav{flex:none}footer .footer-social{order:-1}}footer .footer-social{align-items:center;gap:14px;margin:0;padding:0;list-style:none;display:flex}footer .social>a{color:var(--text-muted);font-size:20px;display:flex}footer .social .icon svg{display:block}footer .social.github>a:hover{color:light-dark(#000,#fff)}footer .social.codeberg>a:hover{color:#2185d0}footer .social.linkedin>a:hover{color:#007bb6}footer .social.mastodon>a:hover{color:#5b4fe5}footer .social.bluesky>a:hover{color:#0085ff}body.landing-page{background-color:var(--jumbotron-bg);color:#fff;background-image:url(/img/congruent_pentagon.png);background-position:0 5px;background-size:300px}.landing-page #content{text-align:center;margin:0 auto;padding:20px 0}@media (width>=768px){.landing-page #content{margin-top:auto}}.availability-pill{color:var(--text-color);background-color:var(--bg);border-radius:999px;padding:5px 14px;font-size:14px;display:inline-block}.availability-pill:hover{background-color:var(--bg-alt);text-decoration:none}.availability-pill:before{content:"";background-color:var(--brand-success);border-radius:50%;width:8px;height:8px;margin-right:8px;display:inline-block}.landing-page footer{background-color:#243e6a80}.landing-page footer .text-muted,.landing-page footer .social>a{color:#84a3d5}.landing-page footer .social>a:hover{color:#fff}.post-date{white-space:nowrap}.post-title{margin-top:30px}article{margin-bottom:20px;line-height:1.7}.pagination-nav{text-align:center}.pagination{margin:24px 0;padding-left:0;list-style:none;display:inline-flex}.pagination>li>a{border:1px solid var(--border);background-color:var(--bg);margin-left:-1px;padding:6px 12px;display:block}.pagination>li:first-child>a{border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover{background-color:var(--bg-alt);text-decoration:none}.hint{align-items:center;gap:10px;display:flex}.hint .lucide{flex-shrink:0;margin:-.5em 0;font-size:2em}a.email>span:nth-child(2){display:none}.contact-actions{align-items:center;gap:20px;margin-top:40px;display:flex}.copy-email{font-family:var(--font-sans);color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:0;font-size:20px}.copy-email:hover{color:var(--text-color);text-decoration:underline}.copy-email:before{content:"";vertical-align:-.125em;background-color:currentColor;width:1em;height:1em;margin-right:6px;display:inline-block;mask:url(/img/copy.svg) 50%/contain no-repeat}.talks-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px;margin-bottom:20px;display:grid}.talk{background-color:var(--bg);border:1px solid var(--border);border-radius:4px;flex-direction:column;padding:4px;display:flex}.talk img{border-bottom:1px solid var(--border);object-fit:cover;clip-path:inset(1px);background-color:light-dark(#fff,#8da0bd);width:100%;height:auto}.talk .caption{flex-direction:column;flex:1;padding:12px 9px 0;display:flex}.talk .caption .talk-links{text-align:right;margin-top:auto}
