.projects{--projects-rule: color-mix(in srgb, var(--color-heading) 18%, var(--color-background));--projects-highlight: color-mix(in srgb, var(--color-accent) 5%, var(--color-background));padding-top:var(--spacing-xxl);padding-bottom:var(--spacing-sm);line-height:1.7;overflow-wrap:anywhere}.projects:focus{outline:none}.projects a{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em}.projects a:focus-visible{outline:2px solid var(--color-accent);outline-offset:4px}.projects__header{margin-bottom:var(--spacing-xl);text-align:center}.projects__header h1{position:relative;margin:0 0 var(--spacing-md);padding-bottom:var(--spacing-md);font-size:var(--font-size-heading);font-weight:700;line-height:1.2}.projects__header h1::before,.projects__header h1::after{position:absolute;right:0;bottom:0;left:0;margin-inline:auto;content:""}.projects__header h1::before{width:10rem;height:1px;background:var(--projects-rule)}.projects__header h1::after{width:var(--spacing-xxl);height:3px;background:var(--color-accent)}.projects__subtitle{max-width:44rem;margin:0 auto;color:var(--color-accent);font-family:"Courier New",Courier,monospace;font-size:1.125rem;line-height:1.5;text-wrap:balance}.projects__summary{margin-bottom:var(--spacing-xl);padding-block:var(--spacing-lg);border-block:1px solid var(--projects-rule)}.projects__summary>:last-child{margin-bottom:0}.projects--preview{padding-block:0}.projects--preview .projects__summary{margin:0;padding:0;border:0}.projects .projects-preview__card{padding:var(--spacing-md);border-radius:var(--img-border-radius);background:var(--projects-highlight)}.projects .projects-preview__more{display:flex;justify-content:flex-end;margin:var(--spacing-md) 0 0}.projects .projects-preview__more a{display:inline-flex;align-items:center;gap:var(--spacing-xs);padding:.625rem 1.25rem;border-radius:50px;background:var(--color-accent);color:var(--color-contrast);font-weight:700;text-decoration:none}.projects .projects-preview__more a:hover{background:color-mix(in srgb, var(--color-accent) 85%, var(--color-heading))}.projects p{hyphens:none}.projects__skills{margin-bottom:var(--spacing-xl)}.projects__skills-layout,.projects__skills-grid{display:grid;grid-template-columns:minmax(0, 1fr);gap:var(--spacing-md);min-width:0}.projects__skills-grid{--projects-tab-inactive-background: color-mix(in srgb, var(--color-heading) 3%, var(--color-background));isolation:isolate;gap:0}.projects__skills-summary{min-width:0;padding:var(--spacing-md);border:1px solid var(--projects-rule);border-radius:var(--img-border-radius);background:var(--color-surface)}.projects__skills-summary{border-color:rgba(0,0,0,0);background:var(--projects-highlight)}.projects__skills-summary>:last-child{margin-bottom:0}.projects__summary-title{margin:0 0 var(--spacing-sm);color:var(--color-accent);font-size:1.25rem;font-weight:700;line-height:1.4}.projects__summary-highlights{margin-top:var(--spacing-md);padding-top:var(--spacing-md);border-top:1px solid var(--projects-rule);break-inside:avoid}.projects__summary-highlights:first-child{margin-top:0;padding-top:0;border-top:0}.projects__badges-title{margin:0 0 var(--spacing-sm);font-size:1.125rem;font-weight:700;line-height:1.4}.projects__badges-viewport{width:min(100%,80rem);max-width:80rem;margin-inline:auto;overflow-x:hidden;overflow-y:visible;overscroll-behavior-x:contain;scrollbar-width:none}.projects__badges-viewport::-webkit-scrollbar{display:none}.projects__badges-track{display:flex;flex-wrap:nowrap;width:max-content}.projects__summary-badges{display:flex;flex-wrap:nowrap;flex-shrink:0;gap:var(--spacing-sm);margin:0;padding-inline:var(--spacing-md);list-style:none}.projects__summary-badges li{display:flex;flex:0 0 22rem;min-width:22rem}.projects__badge{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;gap:var(--spacing-xs);min-width:0;min-height:13rem;padding:var(--spacing-md);border:1px solid color-mix(in srgb, var(--color-accent) 30%, var(--color-background));border-radius:var(--spacing-xs);background:color-mix(in srgb, var(--color-accent) 6%, var(--color-background));color:var(--color-heading);text-align:center;text-decoration:none}.projects__badge-icon{color:var(--color-accent);font-size:1.9rem;line-height:1}.projects__badge-label{color:var(--color-accent);font-size:1.1rem;font-weight:700;line-height:1.3}.projects__badge-meta{display:flex;flex-wrap:wrap;justify-content:center;gap:.25rem;color:var(--color-heading);font-size:.8rem;font-weight:600;line-height:1.4}.projects__badge-period{white-space:nowrap}.projects__badge-separator{opacity:.6}.projects__badge-description{display:-webkit-box;max-width:20rem;overflow:hidden;color:var(--color-default);font-size:.82rem;font-weight:400;line-height:1.45;-webkit-box-orient:vertical;-webkit-line-clamp:3}.projects a.projects__badge{text-decoration:none}.projects a.projects__badge:hover>span{text-decoration:underline;text-underline-offset:.2em}.projects a.projects__badge:focus-visible{outline-offset:-3px}.projects__skill-tabs{--projects-tab-radius: min(var(--img-border-radius), var(--spacing-xs));position:relative;z-index:1;display:flex;gap:calc(2*var(--projects-tab-radius));min-width:0;margin-bottom:-1px;padding-inline:calc(var(--img-border-radius) + var(--projects-tab-radius));clip-path:inset(0 var(--projects-tabs-inset-right, var(--img-border-radius)) 0 var(--projects-tabs-inset-left, var(--img-border-radius)));overflow-x:auto;overflow-y:hidden;overscroll-behavior:contain;touch-action:pan-x pinch-zoom;scrollbar-width:none}.projects__skill-tabs::-webkit-scrollbar{display:none}.projects__skill-tabs a{text-decoration:none}.projects__skill-tabs a:focus-visible{outline-offset:-4px}.projects__skill-tab{--projects-tab-background: var(--projects-tab-inactive-background);--projects-tab-border: var(--projects-rule);position:relative;display:flex;flex:0 0 auto;align-items:center;gap:var(--spacing-xs);justify-content:center;padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--projects-rule);border-bottom-color:var(--projects-tab-border);border-radius:var(--img-border-radius) var(--img-border-radius) 0 0;background:var(--projects-tab-background);color:var(--color-heading);font-size:1rem;font-weight:700;line-height:1.4;white-space:nowrap}.projects__skill-tab:hover{color:var(--color-accent)}.projects__skill-tab::before,.projects__skill-tab::after{position:absolute;bottom:-1px;width:calc(var(--projects-tab-radius) + 1px);height:calc(var(--projects-tab-radius) + 1px);border-bottom:1px solid var(--projects-rule);background:var(--color-background);box-shadow:0 0 0 var(--projects-tab-radius) var(--projects-tab-background);clip-path:inset(0);pointer-events:none;content:""}.projects__skill-tab::before{left:calc(-1*var(--projects-tab-radius) - 1px);border-right:1px solid var(--projects-rule);border-bottom-right-radius:100%}.projects__skill-tab::after{right:calc(-1*var(--projects-tab-radius) - 1px);border-left:1px solid var(--projects-rule);border-bottom-left-radius:100%}.projects__skill-tab[aria-selected=true]{--projects-tab-background: var(--projects-highlight);--projects-tab-border: var(--projects-highlight);color:var(--color-accent)}.projects__skill-tab-edge{position:absolute;z-index:1;right:calc(-1*var(--projects-tab-radius) - 1px);bottom:-1px;left:calc(-1*var(--projects-tab-radius) - 1px);height:1px;background:var(--projects-tab-border);pointer-events:none}.projects__skill-panels{position:relative;display:grid;gap:var(--spacing-sm);min-width:0;border:1px solid var(--projects-rule);border-radius:var(--img-border-radius);background:var(--projects-highlight)}.projects__skill-panels[hidden]{display:none}.projects__skill-panels::before,.projects__skill-panels::after{position:absolute;z-index:-1;top:0;box-sizing:border-box;width:calc(var(--img-border-radius) - 1px + var(--projects-corner-offset));height:calc(var(--img-border-radius) - 1px);border-top:1px solid var(--projects-rule);background:var(--projects-tab-inactive-background);opacity:0;pointer-events:none;content:""}.projects__skill-panels::before{--projects-corner-offset: min(var(--img-border-radius), var(--projects-tabs-scroll-left, 0px));left:calc(-1*var(--projects-corner-offset));border-left:1px solid var(--projects-rule);border-top-left-radius:calc(var(--img-border-radius) - 1px);clip-path:inset(0 0 0 max(0px,var(--projects-corner-offset) - 1px))}.projects__skill-panels::after{--projects-corner-offset: min(var(--img-border-radius), var(--projects-tabs-scroll-right, 0px));right:calc(-1*var(--projects-corner-offset));border-right:1px solid var(--projects-rule);border-top-right-radius:calc(var(--img-border-radius) - 1px);clip-path:inset(0 max(0px,var(--projects-corner-offset) - 1px) 0 0)}.projects [data-tabs-ready]:not([data-skill-clipped-left])>.projects__skill-panels::before,.projects [data-tabs-ready]:not([data-skill-clipped-right])>.projects__skill-panels::after{opacity:1}.projects [data-skill-clipped-left]>.projects__skill-panels{border-top-left-radius:0}.projects [data-skill-clipped-right]>.projects__skill-panels{border-top-right-radius:0}.projects [data-skill-scroll-left]>.projects__skill-tabs{--projects-tabs-inset-left: 0px}.projects [data-skill-scroll-right]>.projects__skill-tabs{--projects-tabs-inset-right: 0px}.projects__skill-card{min-width:0;padding:var(--spacing-md);break-inside:avoid;scroll-margin-top:8rem}.projects__skill-card:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}.projects__skill-panel-title{margin:0 0 var(--spacing-sm);font-size:1.125rem;font-weight:700}.projects [data-tabs-ready] .projects__skill-panel-title{display:none}.projects__skill-icon{display:inline-flex;flex:0 0 1.75rem;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;border-radius:var(--spacing-xs);background:color-mix(in srgb, var(--color-accent) 8%, var(--color-background));color:var(--color-accent);font-size:1.125rem}@media screen and (prefers-reduced-motion: no-preference){.projects__skill-tabs{transition:clip-path 160ms ease}.projects__skill-panels{transition:border-top-left-radius 160ms ease,border-top-right-radius 160ms ease}.projects__skill-panels::before,.projects__skill-panels::after{transition:opacity 160ms ease}.projects__skill-tab,.projects__badge{transition:background-color 200ms ease,color 200ms ease,border-bottom-color 200ms ease}.projects__skill-tab>span:not([aria-hidden]),.projects__skill-tab>i,.projects__badge>span:not([aria-hidden]),.projects__badge>i{transition:transform 240ms cubic-bezier(.2, .7, .3, 1)}.projects__skill-tab:hover>span:not([aria-hidden]),.projects__skill-tab:focus-visible>span:not([aria-hidden]),.projects__badge:hover>span:not([aria-hidden]),.projects__badge:focus-visible>span:not([aria-hidden]){transform:translateY(-1px)}.projects__skill-tab:hover>i,.projects__skill-tab:focus-visible>i,.projects__badge:hover>i,.projects__badge:focus-visible>i{transform:translateY(-2px) rotate(-6deg) scale(1.08)}.projects__skill-items li{transition:transform 180ms ease,border-color 180ms ease,box-shadow 180ms ease}}@media screen and (prefers-reduced-motion: no-preference) and (hover: hover){.projects__skill-items li:hover{transform:translateY(-2px);border-color:color-mix(in srgb, var(--color-accent) 45%, var(--color-background));box-shadow:0 3px 8px color-mix(in srgb, var(--color-accent) 12%, rgba(0,0,0,0))}}@media screen and (prefers-reduced-motion: no-preference){.projects [data-tabs-ready] .projects__skill-card:not([hidden]) .projects__skill-items li{animation:projects-skill-enter 260ms ease-out 160ms backwards}.projects [data-tabs-ready] .projects__skill-card:not([hidden]) .projects__skill-items li:nth-child(1){animation-delay:0ms}.projects [data-tabs-ready] .projects__skill-card:not([hidden]) .projects__skill-items li:nth-child(2){animation-delay:20ms}.projects [data-tabs-ready] .projects__skill-card:not([hidden]) .projects__skill-items li:nth-child(3){animation-delay:40ms}.projects [data-tabs-ready] .projects__skill-card:not([hidden]) .projects__skill-items li:nth-child(4){animation-delay:60ms}.projects [data-tabs-ready] .projects__skill-card:not([hidden]) .projects__skill-items li:nth-child(5){animation-delay:80ms}.projects [data-tabs-ready] .projects__skill-card:not([hidden]) .projects__skill-items li:nth-child(6){animation-delay:100ms}.projects [data-tabs-ready] .projects__skill-card:not([hidden]) .projects__skill-items li:nth-child(7){animation-delay:120ms}.projects [data-tabs-ready] .projects__skill-card:not([hidden]) .projects__skill-items li:nth-child(8){animation-delay:140ms}}.projects__skill-items{display:flex;flex-wrap:wrap;gap:var(--spacing-xs) .75rem;margin:0;padding:0;list-style:none}.projects__skill-items li{display:inline-flex;align-items:center;gap:var(--spacing-xs);max-width:100%;padding:.375rem .75rem;border:1px solid color-mix(in srgb, var(--color-accent) 18%, var(--color-background));border-radius:999px;background:var(--color-surface);color:var(--color-heading);font-size:.9375rem;font-weight:500;line-height:1.4}.projects__skill-items li::before{flex:0 0 .375rem;width:.375rem;height:.375rem;border-radius:50%;background:var(--color-accent);content:""}.projects__columns{display:grid;gap:var(--spacing-xl)}.projects__column{min-width:0}.projects__section+.projects__section{margin-top:var(--spacing-xl)}.projects__section-title{margin:0 0 var(--spacing-lg);font-size:1.5rem;font-weight:700;line-height:1.35;scroll-margin-top:8rem}.projects__timeline{margin:0;padding:0;list-style:none}.projects__entry{position:relative;margin-left:.375rem;padding:0 0 var(--spacing-lg) var(--spacing-md)}.projects__entry::after{position:absolute;top:0;bottom:0;left:-1px;border-left:2px solid var(--color-accent);content:""}.projects__entry:first-child::after{top:.4rem}.projects__entry::before{position:absolute;z-index:1;top:.4rem;left:-.375rem;width:.75rem;height:.75rem;border:2px solid var(--color-accent);border-radius:50%;background:var(--color-background);content:""}.projects__entry:last-child{padding-bottom:0}.projects__entry-header{margin-bottom:var(--spacing-sm)}.projects__entry-heading{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--spacing-xs) var(--spacing-sm)}.projects__entry-heading h3{flex:1 1 auto;min-width:0;margin:0;color:var(--color-accent);font-size:1.125rem;font-weight:700;line-height:1.45}.projects__period{display:inline-flex;align-items:baseline;flex:0 1 auto;max-width:100%;margin:0;text-align:left}.projects__period time{white-space:nowrap}.projects__details{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--spacing-xxs) var(--spacing-sm);margin:var(--spacing-xs) 0 0;color:var(--color-heading);font-size:.9375rem;font-style:italic;line-height:1.6}.projects__details-separator{display:none}.projects__location{margin-left:auto;text-align:right}.projects__entry-header--stacked .projects__details{display:block}.projects__entry-header--stacked .projects__details-separator{display:inline}.projects__entry-header--stacked .projects__location{margin-left:0;text-align:left}.projects__entry-content>:last-child,.projects__entry-content li>:last-child{margin-bottom:0}.projects__prose li,.projects__summary>:is(ul,ol) li,.projects__skills-summary>:is(ul,ol) li,.projects__entry-content li{text-align:justify}.projects__summary>p,.projects__skills-summary>p{text-align:justify}.projects__entry-content>ul{margin:var(--spacing-sm) 0 0;padding-left:1.1rem;list-style:disc}.projects__entry-content>ul li{padding-left:var(--spacing-xxs)}.projects__entry-content>ul li+li{margin-top:var(--spacing-xs)}.projects__entry-content>ul li::marker{color:var(--color-accent);font-size:.8em}.projects__icon-item{position:relative}.projects__icon-item::marker{content:""}.projects__bullet-icon{position:absolute;inset-block-start:0;inset-inline-end:calc(100% + var(--spacing-xxs));width:1em;color:var(--color-accent);line-height:inherit;text-align:center}@media (min-width: 992px){.projects__subtitle{font-size:1.25rem}.projects__columns--split{grid-template-columns:repeat(2, minmax(0, 1fr));gap:var(--spacing-xxl)}}.projects__skill-card[hidden]{display:none !important}.projects__skill-panels[hidden]{display:none !important}.projects [role=tabpanel][hidden]{display:none !important}.projects__skill-panels,.projects__skill-card,.projects__entry,.projects__entry-content{min-width:0}.projects__entry-heading{width:100%}.projects__period{flex-shrink:0}.projects__entry-header--stacked .projects__entry-heading{align-items:flex-start}.projects__entry-header--stacked .projects__details{display:block}.projects__entry-header--stacked .projects__location{margin-left:0;text-align:left}@keyframes projects-skill-enter{from{opacity:0;translate:0 5px}to{opacity:1;translate:0 0}}.projects__skip{position:fixed;top:var(--spacing-sm);left:var(--spacing-sm);z-index:10000;padding:var(--spacing-xs) var(--spacing-sm);transform:translateY(-200%);background:var(--color-background);color:var(--color-accent)}.projects__skip:focus{transform:translateY(0);outline:2px solid var(--color-accent)}@media print{@page{margin:15mm}.projects{--color-default: #000;--color-heading: #000;--color-accent: #000;--color-background: #fff;--projects-rule: #bbb;width:100%;max-width:none;padding:0;font-size:10pt;line-height:1.5}.projects__header{margin-bottom:1rem}.projects__summary{display:block;margin-bottom:1.5rem;padding-block:1rem}.projects__columns{display:block}.projects__skills{margin-bottom:1.5rem}.projects__skills-layout{display:block}.projects__skills-summary{margin-bottom:1rem;padding:0;border:0;background:none}.projects__skills-grid{gap:1rem}.projects__skill-card{padding:.75rem}.projects__skill-panels{background:none}.projects__skill-panels::before,.projects__skill-panels::after{display:none}.projects__skill-panels[hidden],.projects__skill-card[hidden],.projects [data-tabs-ready] .projects__skill-panel-title{display:block}.projects__skill-tabs{display:none}.projects__skill-items{padding:0}.projects__skill-items li{display:inline;padding:0;border:0;background:none;font-size:inherit;font-weight:inherit}.projects__skill-items li::before{display:none}.projects__skill-items li:not(:last-child)::after{content:","}.projects__badge{background:none;border-color:var(--projects-rule);color:inherit}.projects [data-badge-copy]{display:none !important}.projects__badges-viewport{width:100%;max-width:100%;overflow:visible}.projects__badges-track{display:block;width:100%}.projects__summary-badges{display:grid;grid-template-columns:repeat(auto-fit, minmax(12rem, 1fr));gap:var(--spacing-sm);width:100%;margin:0;padding:0;list-style:none}.projects__summary-badges li{display:flex;min-width:0}.projects__summary-badges i{font-size:1.75rem;line-height:1}.projects [data-badge-copy]{display:none !important}.projects__column+.projects__column,.projects__section+.projects__section{margin-top:1.5rem}.projects__section-title{margin-bottom:1rem;font-size:14pt}.projects__entry{padding-bottom:1rem}.projects__entry-header,.projects__section-title,.projects h3{break-after:avoid}.projects__entry-header{break-inside:avoid}.projects p,.projects li{orphans:3;widows:3}}