:root{color-scheme:light dark;--font-body:system-ui, -apple-system, "Segoe UI", sans-serif;--tracking-display:-.035em;--tracking-heading:-.02em;--tracking-tight:-.01em;--tracking-mono:.02em;--tracking-overline:.14em;--step--2:clamp(.694rem, .6834rem + .0473vw, .72rem);--step--1:clamp(.833rem, .8056rem + .1218vw, .9rem);--step-0:clamp(1rem, .9489rem + .2273vw, 1.125rem);--step-1:clamp(1.2rem, 1.1157rem + .3745vw, 1.406rem);--step-2:clamp(1.44rem, 1.3099rem + .5782vw, 1.758rem);--step-3:clamp(1.728rem, 1.5361rem + .8527vw, 2.197rem);--step-4:clamp(2.074rem, 1.7987rem + 1.2236vw, 2.747rem);--step-5:clamp(2.488rem, 2.1014rem + 1.7182vw, 3.433rem);--step-display:clamp(3rem, 1.3636rem + 7.2727vw, 7rem);--step-display-narrow:clamp(2.5rem, 11.5vw, 4.75rem);--leading-tight:1.1;--leading-snug:1.25;--leading-body:1.6;--measure:65ch;--space-3xs:clamp(.25rem, .2372rem + .0568vw, .28125rem);--space-2xs:clamp(.5rem, .4744rem + .1136vw, .5625rem);--space-xs:clamp(.75rem, .7116rem + .1705vw, .84375rem);--space-s:clamp(1rem, .9489rem + .2273vw, 1.125rem);--space-m:clamp(1.5rem, 1.4233rem + .3409vw, 1.6875rem);--space-l:clamp(2rem, 1.8977rem + .4545vw, 2.25rem);--space-xl:clamp(3rem, 2.8466rem + .6818vw, 3.375rem);--space-2xl:clamp(4rem, 3.7955rem + .9091vw, 4.5rem);--space-3xl:clamp(6rem, 5.6932rem + 1.3636vw, 6.75rem);--space-s-l:clamp(1rem, .4886rem + 2.2727vw, 2.25rem);--space-m-xl:clamp(1.5rem, .733rem + 3.4091vw, 3.375rem);--space-xl-3xl:clamp(3rem, 1.4659rem + 6.8182vw, 6.75rem);--container:1180px;--container-prose:850px;--gutter:var(--space-s-l);--page-inline:var(--space-m);--control-size:2.75rem;--header-h:calc(var(--control-size) + 2 * var(--space-2xs) + 1px);--radius-s:.375rem;--radius-m:.625rem;--radius-l:.875rem;--radius-full:999px;--color-bg:light-dark(oklch(99.5% .003 270),oklch(22% .008 285));--color-surface:light-dark(oklch(97.5% .006 270),oklch(24.5% .01 280));--color-surface-2:light-dark(oklch(94.5% .01 270),oklch(29% .012 280));--color-text:light-dark(oklch(30% .04 250),oklch(92% .008 280));--color-text-muted:light-dark(oklch(46% .03 255),oklch(76% .015 270));--color-text-subtle:light-dark(oklch(52% .02 260),oklch(66% .015 270));--color-border:light-dark(oklch(90% .01 270),oklch(31% .012 280));--color-border-strong:light-dark(oklch(61% .02 270),oklch(57% .02 275));--color-accent:light-dark(oklch(47% .17 268),oklch(78% .12 275));--color-accent-hover:light-dark(oklch(40% .17 268),oklch(85% .09 275));--color-accent-soft:light-dark(oklch(95.4% .022 275),oklch(28.4% .051 278));--color-focus:var(--color-accent);--shadow-popover:0 .5rem 1.5rem light-dark(oklch(30% .04 250/.12),oklch(0% 0 0/.45));--category-systems:light-dark(oklch(33.5% .031 212),oklch(37.5% .031 212));--category-web:light-dark(oklch(37.5% .043 307),oklch(41.5% .043 307));--category-software:light-dark(oklch(36% .04 340),oklch(40% .04 340));--category-infrastructure:light-dark(oklch(37.4% .038 246),oklch(41.4% .038 246));--category-embedded:light-dark(oklch(41.1% .04 77),oklch(45.1% .04 77));--category-security:light-dark(oklch(37% .045 25),oklch(41% .045 25));--category-data:light-dark(oklch(36% .04 150),oklch(40% .04 150));--color-logo-plate:oklch(100% 0 0);--color-logo-plate-dark:oklch(22% .008 285);--color-on-category:oklch(97% .005 270);--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--dur-fast:.15s;--dur-base:.22s;--dur-slow:.54s;--nudge-x:3px;--lift:-3px}@media (width<=720px){:root{--page-inline:var(--space-s)}}:root.light{color-scheme:light}:root.dark{color-scheme:dark}@media (width<=820px){:root:not(:has(.site-header[data-menu])){--header-h:calc(2 * var(--control-size) + var(--space-3xs) + 2 * var(--space-2xs) + 1px)}}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}html,body{min-height:100%;margin:0}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);font-size:var(--step-0);line-height:var(--leading-body)}a{color:var(--color-accent)}button{font:inherit}svg{vertical-align:middle;display:inline}:where(a,button,summary,input,select,[tabindex]):focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}[id]{scroll-margin-top:calc(var(--header-h) + var(--space-s))}.site-shell{flex-direction:column;min-height:100vh;display:flex}.site-shell>main{flex:1;min-width:0}.container,.editorial-page,.portfolio-showcase{width:100%;max-width:var(--container);padding-inline:var(--page-inline);margin-inline:auto}.editorial-page{padding-block:var(--space-xl) var(--space-3xl);color:var(--color-text)}.skip-link{top:-5rem;left:var(--space-s);z-index:1000;padding:var(--space-2xs) var(--space-s);border:2px solid var(--color-accent);background:var(--color-bg);position:absolute}.skip-link:focus{top:var(--space-2xs)}@media (width<=720px){.editorial-page{padding-block:var(--space-l) var(--space-2xl)}}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.portfolio-showcase{color:var(--color-text)}.button-link{min-height:var(--control-size);justify-content:center;align-items:center;gap:var(--space-3xs);padding:0 var(--space-s);border:1px solid var(--color-accent);border-radius:var(--radius-m);color:var(--color-accent);font:inherit;font-size:var(--step--1);cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);background:0 0;font-weight:600;text-decoration:none;display:inline-flex}.button-link:hover{background:var(--color-accent-soft);color:var(--color-accent-hover)}.button-link--primary{background:var(--color-accent);color:var(--color-bg)}.button-link--primary:hover{border-color:var(--color-accent-hover);background:var(--color-accent-hover);color:var(--color-bg)}.prose{width:min(100%, var(--container-prose));padding:var(--space-xl) var(--space-m) var(--space-3xl);overflow-wrap:anywhere;margin:0 auto}.prose :where(h1,h2,h3,h4){color:var(--color-text);line-height:var(--leading-snug)}.prose h1{margin:0 0 var(--space-m);font-family:var(--font-display);font-size:var(--step-4);font-weight:400;line-height:var(--leading-tight);letter-spacing:var(--tracking-display)}.prose h2{margin:var(--space-l) 0 var(--space-s);padding-top:var(--space-s);border-top:1px solid var(--color-border);font-family:var(--font-display);font-size:var(--step-2);font-weight:400;line-height:var(--leading-snug);letter-spacing:var(--tracking-heading)}.prose h3{margin:var(--space-m) 0 var(--space-2xs)}.prose p,.prose ul,.prose ol,.prose blockquote{margin:0 0 var(--space-s)}.prose li{margin:var(--space-3xs) 0}.prose blockquote{padding:var(--space-3xs) 0 var(--space-3xs) var(--space-s);border-left:3px solid var(--color-accent);color:var(--color-text-muted)}.prose a{text-underline-offset:2px;text-decoration:underline}.prose .button-link{text-decoration:none}.prose code{border-radius:var(--radius-s);background:var(--color-surface);padding:.1em .25em;font-size:.92em}.prose pre{max-width:100%;padding:var(--space-s);border-radius:var(--radius-s);background:var(--color-surface);overflow-x:auto}.prose pre code{background:0 0;padding:0}.prose img,.prose iframe{max-width:100%}.prose :where(table){border-collapse:collapse;width:100%;display:block;overflow-x:auto}.prose th,.prose td{padding:var(--space-2xs) var(--space-xs);border:1px solid var(--color-border);text-align:left}.prose hr{margin:var(--space-l) 0;border:none;border-top:1px solid var(--color-border)}@media (width<=720px){.prose{padding:var(--space-l) var(--space-s) var(--space-2xl)}}@keyframes portfolio-enter{0%{opacity:0;translate:0 12px}to{opacity:1;translate:0}}@media (prefers-reduced-motion:no-preference){@supports (animation-timeline:view()){.portfolio-showcase--catalogue .showcase-card{animation:linear backwards portfolio-enter view();animation-range:entry entry 70%}}@media (hover:hover) and (pointer:fine){.portfolio-showcase .showcase-art-symbol{transition:transform var(--dur-base) var(--ease-out)}.portfolio-showcase .showcase-card:hover .showcase-art-symbol{transform:scale(1.04)rotate(-1deg)}}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;transition-delay:0s!important;animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important}}.theme-menu[data-astro-cid-t75krwwh]{display:inline-flex;position:relative}.theme-menu[data-astro-cid-t75krwwh]:not([data-ready]){visibility:hidden}.theme-menu-icon[data-astro-cid-t75krwwh]{display:none}.theme-menu[data-astro-cid-t75krwwh][data-choice=auto] [data-astro-cid-t75krwwh][data-theme-icon=auto],.theme-menu[data-astro-cid-t75krwwh][data-choice=light] [data-astro-cid-t75krwwh][data-theme-icon=light],.theme-menu[data-astro-cid-t75krwwh][data-choice=dark] [data-astro-cid-t75krwwh][data-theme-icon=dark]{display:inline-flex}.theme-menu-button[data-astro-cid-t75krwwh][aria-expanded=true]{border-color:var(--color-border);background:var(--color-surface-2);color:var(--color-text)}.theme-menu-list[data-astro-cid-t75krwwh]{top:calc(100% + var(--space-3xs));z-index:50;min-width:10rem;padding:var(--space-3xs);border:1px solid var(--color-border);border-radius:var(--radius-m);background:var(--color-surface);box-shadow:var(--shadow-popover);display:grid;position:absolute;right:0}.theme-menu-list[data-astro-cid-t75krwwh][hidden]{display:none}@media (prefers-reduced-motion:no-preference){.theme-menu-list[data-astro-cid-t75krwwh]{animation:theme-menu-in var(--dur-fast) var(--ease-out)}}@keyframes theme-menu-in{0%{opacity:0;translate:0 calc(-1 * var(--space-3xs))}}.theme-menu-item[data-astro-cid-t75krwwh]{align-items:center;gap:var(--space-2xs);min-height:var(--control-size);padding:0 var(--space-xs);border-radius:var(--radius-s);color:var(--color-text-muted);font:inherit;font-size:var(--step--1);text-align:start;cursor:pointer;transition:color var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out);background:0 0;border:0;font-weight:550;display:flex}.theme-menu-text[data-astro-cid-t75krwwh]{flex:1}.theme-menu-item[data-astro-cid-t75krwwh] .theme-menu-check{visibility:hidden;color:var(--color-accent)}.theme-menu-item[data-astro-cid-t75krwwh][aria-checked=true]{color:var(--color-text)}.theme-menu-item[data-astro-cid-t75krwwh][aria-checked=true] .theme-menu-check{visibility:visible}.theme-menu-item[data-astro-cid-t75krwwh]:focus-visible{outline:3px solid var(--color-focus);outline-offset:-3px}@media (hover:hover){.theme-menu-item[data-astro-cid-t75krwwh]:hover{background:var(--color-surface-2);color:var(--color-text)}}.theme-menu-item[data-astro-cid-t75krwwh]:focus{background:var(--color-surface-2);color:var(--color-text)}.site-header[data-astro-cid-jae56hh5]{z-index:40;border-bottom:1px solid var(--color-border);background:var(--color-bg);position:sticky;top:0}.site-header-inner[data-astro-cid-jae56hh5]{align-items:center;gap:var(--space-3xs) var(--space-m);padding-block:var(--space-2xs);display:flex}.site-brand[data-astro-cid-jae56hh5]{min-height:var(--control-size);color:var(--color-text);font-family:var(--font-display);font-size:var(--step-1);letter-spacing:var(--tracking-heading);white-space:nowrap;align-items:center;font-weight:600;text-decoration:none;display:inline-flex}.site-brand[data-astro-cid-jae56hh5]:hover{color:var(--color-accent)}.site-brand-mark[data-astro-cid-jae56hh5]{width:1.75rem;height:1.75rem;margin-right:var(--space-2xs);border-radius:var(--radius-s);background:var(--color-accent);color:var(--color-bg);flex:none;justify-content:center;align-items:center;display:inline-flex}.site-menu-panel[data-astro-cid-jae56hh5]{display:contents}.site-main-nav[data-astro-cid-jae56hh5]{gap:var(--space-3xs);margin-left:auto;display:flex}.site-main-nav[data-astro-cid-jae56hh5] a[data-astro-cid-jae56hh5]{min-height:var(--control-size);padding-inline:var(--space-xs);color:var(--color-text-muted);font-size:var(--step--1);text-underline-offset:.45em;transition:color var(--dur-fast) var(--ease-out);align-items:center;font-weight:550;text-decoration:none;display:inline-flex}.site-main-nav[data-astro-cid-jae56hh5] a[data-astro-cid-jae56hh5]:hover{color:var(--color-accent)}.site-main-nav[data-astro-cid-jae56hh5] a[data-astro-cid-jae56hh5][aria-current]{color:var(--color-text);text-decoration-line:underline;text-decoration-color:var(--color-accent)}.site-header-tools[data-astro-cid-jae56hh5]{align-items:center;gap:var(--space-3xs);padding-left:var(--space-xs);border-left:1px solid var(--color-border);display:flex}.site-header-inner[data-astro-cid-jae56hh5] .site-control{min-width:var(--control-size);min-height:var(--control-size);border-radius:var(--radius-m);color:var(--color-text-muted);font-family:var(--font-mono);font-size:var(--step--1);cursor:pointer;transition:color var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:0;font-weight:500;text-decoration:none;display:inline-flex}.site-menu-button[data-astro-cid-jae56hh5][aria-expanded=true]{border-color:var(--color-border);background:var(--color-surface-2);color:var(--color-text)}@media (hover:hover){.site-header-inner[data-astro-cid-jae56hh5] .site-control:hover{border-color:var(--color-border);background:var(--color-surface-2);color:var(--color-text)}}.site-header-inner[data-astro-cid-jae56hh5] .site-menu-button[data-astro-cid-jae56hh5]{order:4;display:none}.site-menu-button[data-astro-cid-jae56hh5][aria-expanded=true] .site-menu-icon-open[data-astro-cid-jae56hh5],.site-menu-button[data-astro-cid-jae56hh5][aria-expanded=false] .site-menu-icon-close[data-astro-cid-jae56hh5]{display:none}.site-menu-icon[data-astro-cid-jae56hh5]{display:inline-flex}@media (width<=820px){.site-header-inner[data-astro-cid-jae56hh5]{gap:var(--space-3xs);flex-wrap:wrap}.site-header-tools[data-astro-cid-jae56hh5]{border-left:0;margin-left:auto;padding-left:0}.site-menu-panel[data-astro-cid-jae56hh5]{order:3;width:100%;display:block}.site-main-nav[data-astro-cid-jae56hh5]{justify-content:space-between;margin-left:0}.site-main-nav[data-astro-cid-jae56hh5] a[data-astro-cid-jae56hh5]{min-width:var(--control-size);padding-inline:var(--space-3xs);justify-content:center}.site-header[data-astro-cid-jae56hh5][data-menu] .site-menu-button[data-astro-cid-jae56hh5]{display:inline-flex}.site-header[data-astro-cid-jae56hh5][data-menu] .site-menu-panel[data-astro-cid-jae56hh5]{display:none}.site-header[data-astro-cid-jae56hh5][data-menu=open] .site-menu-panel[data-astro-cid-jae56hh5]{padding:0 var(--page-inline) var(--space-xs);border-bottom:1px solid var(--color-border);background:var(--color-bg);display:block;position:absolute;top:100%;left:0;right:0}.site-header[data-astro-cid-jae56hh5][data-menu=open] .site-main-nav[data-astro-cid-jae56hh5]{flex-direction:column;gap:0}.site-header[data-astro-cid-jae56hh5][data-menu=open] .site-main-nav[data-astro-cid-jae56hh5] a[data-astro-cid-jae56hh5]{color:var(--color-text);font-size:var(--step-0);justify-content:flex-start;padding-inline:0}.site-header[data-astro-cid-jae56hh5][data-menu=open] .site-main-nav[data-astro-cid-jae56hh5] a[data-astro-cid-jae56hh5]+a[data-astro-cid-jae56hh5]{border-top:1px solid var(--color-border)}.site-header[data-astro-cid-jae56hh5][data-menu=open] .site-main-nav[data-astro-cid-jae56hh5] a[data-astro-cid-jae56hh5][aria-current]{color:var(--color-accent)}}.site-footer[data-astro-cid-bddg4lij]{border-top:1px solid var(--color-border);color:var(--color-text-subtle);font-size:var(--step--1)}.site-footer-inner[data-astro-cid-bddg4lij]{justify-content:space-between;align-items:center;gap:var(--space-2xs) var(--space-l);padding-block:var(--space-m);flex-wrap:wrap;display:flex}.site-footer-credits[data-astro-cid-bddg4lij]{flex-wrap:wrap;align-items:center;margin:0;display:flex}.site-footer-credits[data-astro-cid-bddg4lij]>[data-astro-cid-bddg4lij]+[data-astro-cid-bddg4lij]:before{content:"·";margin-inline:var(--space-2xs);color:var(--color-border-strong)}.site-footer-name[data-astro-cid-bddg4lij]{color:var(--color-text-muted)}.site-footer-nav[data-astro-cid-bddg4lij] ul[data-astro-cid-bddg4lij]{gap:0 var(--space-s);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.site-footer[data-astro-cid-bddg4lij] a[data-astro-cid-bddg4lij]{min-height:var(--control-size);color:var(--color-text-muted);transition:color var(--dur-fast) var(--ease-out);align-items:center;text-decoration:none;display:inline-flex}.site-footer[data-astro-cid-bddg4lij] a[data-astro-cid-bddg4lij]:hover{color:var(--color-accent)}.site-footer-external[data-astro-cid-bddg4lij]{margin-left:.2em;font-size:.85em}@media (width<=720px){.site-footer-inner[data-astro-cid-bddg4lij]{align-items:stretch;gap:var(--space-xs);padding-block:var(--space-s) var(--space-m);flex-direction:column}.site-footer-credits[data-astro-cid-bddg4lij]{--separator:var(--space-s);margin-left:calc(-1 * var(--separator));clip-path:inset(0 0 0 var(--separator));font-size:var(--step--2)}.site-footer-credits[data-astro-cid-bddg4lij]>[data-astro-cid-bddg4lij]:before,.site-footer-credits[data-astro-cid-bddg4lij]>[data-astro-cid-bddg4lij]+[data-astro-cid-bddg4lij]:before{content:"·";width:var(--separator);color:var(--color-border-strong);text-align:center;margin:0;display:inline-block}.site-footer-nav[data-astro-cid-bddg4lij] ul[data-astro-cid-bddg4lij]{gap:0 var(--space-s);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}}
