.error-boundary{display:flex;align-items:center;justify-content:center;padding:16px;min-height:200px;background:var(--color-bg);border-radius:var(--border-radius);border:2px solid var(--tertiary-background)}.error-boundary--app{min-height:100vh;background:var(--body-bg);border:none;border-radius:0}.error-boundary--page{min-height:60vh;background:var(--primary-background-contrast);border-color:var(--primary-background)}.error-boundary--component{min-height:0;height:auto;display:contents}.error-boundary--component.has-error{display:block;height:auto;min-height:200px;padding:24px;background:var(--error-bg, #fef2f2);border:1px solid var(--error-border, #fecaca);border-radius:var(--border-radius, 8px);margin:16px 0}.error-boundary--component .error-content{text-align:center}.error-boundary--component .error-title{color:var(--error-color, #dc2626);font-size:1.25rem;font-weight:600;margin-bottom:8px}.error-boundary--component .error-message{color:var(--error-text, #374151);margin-bottom:16px}.error-boundary--component .error-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.error-boundary__content{text-align:center;max-width:600px;padding:24px}.error-boundary__icon{font-size:4rem;margin-bottom:16px;display:block}.error-boundary__title{font-family:var(--font-small-display);font-size:var(--title-size);color:var(--tertiary-background);margin-bottom:12px}.error-boundary--app .error-boundary__title,.error-boundary--page .error-boundary__title{color:var(--primary-text)}.error-boundary--component .error-boundary__title{color:var(--secondary-text)}.error-boundary__message{font-family:var(--font-body);font-size:1.1rem;color:var(--color-dark-text);line-height:1.5;margin-bottom:24px}.error-boundary__details{text-align:left;margin:24px 0;padding:16px;background:var(--shade-1);border-radius:var(--border-radius);border:1px solid var(--shade-3)}.error-boundary__details summary{cursor:pointer;font-weight:600;color:var(--color-light-text);margin-bottom:12px}.error-boundary__details summary:hover{color:var(--tertiary-background-contrast)}.error-boundary__error{font-family:Courier New,monospace;font-size:.85rem;color:var(--color-light-text);white-space:pre-wrap;overflow-x:auto;max-height:300px;overflow-y:auto;padding:8px;background:rgba(0,0,0,.3);border-radius:4px}.error-boundary__actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.error-boundary__button{padding:12px 24px;border:none;border-radius:var(--border-radius);font-family:var(--font-body);font-size:1rem;font-weight:600;cursor:pointer;transition:var(--transition-rules);min-width:120px}.error-boundary__button:hover{transform:translateY(-2px);filter:var(--drop-shadow)}.error-boundary__button:focus{outline:2px solid var(--focus-shadow);outline-offset:2px}.error-boundary__button--primary{background:var(--tertiary-background);color:var(--tertiary-text)}.error-boundary__button--primary:hover{background:var(--tertiary-background-contrast);color:var(--tertiary-text-contrast)}.error-boundary__button--secondary{background:var(--quaternary-background);color:var(--quaternary-text)}.error-boundary__button--secondary:hover{background:var(--quaternary-background-contrast);color:var(--quaternary-text-contrast)}@media (max-width: 640px){.error-boundary__content{padding:16px}.error-boundary__icon{font-size:3rem}.error-boundary__title{font-size:1.5rem}.error-boundary__message{font-size:1rem}.error-boundary__actions{flex-direction:column;align-items:stretch}.error-boundary__button{width:100%}}.badge{--title-size: var(--badge-text-size)}.badge .badge-content{display:flex;flex-direction:row;align-items:center;gap:8px;background-color:inherit;color:inherit}.badge .badge-content .fa-icon{position:relative}.badge .badge-content .fa-icon svg{z-index:1;position:relative}.badge .badge-content .fa-icon:after{--radius: 30px;--background-color: transparent;content:"";pointer-events:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:block;width:var(--radius);height:var(--radius);border-radius:9999px;background-color:transparent;z-index:0}.badge.pill .badge-content{border-radius:9999px;padding:4px 12px;line-height:1.25rem;width:fit-content;text-transform:uppercase;filter:var(--drop-shadow)}.badge.pill .badge-content:has(:not(.fa-icon)){padding:8px 16px}.badge.pill .title{--title-size: 1rem;position:relative;top:1px}.badge .badge-content,.badge.highlight .badge-content,.badge.highlight .badge-content .fa-icon{transition:color var(--transition-rules)}.badge:has(a,button) .badge-content .fa-icon:after,.badge.highlight .badge-content .fa-icon:after,.badge:has(a,button):hover .badge-content .fa-icon:after,.badge:has(a,button):focus .badge-content .fa-icon:after,.badge:has(a,button):focus-within .badge-content .fa-icon:after{transition:background-color var(--transition-rules)}.badge.primary .badge-content{background-color:var(--badge-primary-bg);color:var(--badge-primary-text);border:var(--badge-border-width) solid var(--badge-primary-border)}.badge.primary:has(a,button) .badge-content:hover :not(.title),.badge.primary.highlight .badge-content .fa-icon{color:var(--badge-primary-text-highlight)}.badge.primary:has(a,button):hover .badge-content .fa-icon:after,.badge.primary.highlight .badge-content .fa-icon:after,.badge.primary:has(a,button):focus .badge-content .fa-icon:after,.badge.primary:has(a,button):focus-within .badge-content .fa-icon:after{background-color:var(--badge-primary-bg-highlight);color:var(--badge-primary-text-highlight)}.badge.secondary .badge-content{background-color:var(--badge-secondary-bg);color:var(--badge-secondary-text);border:var(--badge-border-width) solid var(--badge-secondary-border)}.badge.secondary:has(a,button) .badge-content:hover :not(.title),.badge.secondary.highlight .badge-content .fa-icon{color:var(--badge-secondary-text-highlight)}.badge.secondary:has(a,button):hover .badge-content .fa-icon:after,.badge.secondary.highlight .badge-content .fa-icon:after,.badge.secondary:has(a,button):focus .badge-content .fa-icon:after,.badge.secondary:has(a,button):focus-within .badge-content .fa-icon:after{background-color:var(--badge-secondary-bg-highlight);color:var(--badge-secondary-text-highlight)}.badge.tertiary .badge-content{background-color:var(--badge-tertiary-bg);color:var(--badge-tertiary-text);border:var(--badge-border-width) solid var(--badge-tertiary-border)}.badge.tertiary:has(a,button) .badge-content:hover :not(.title),.badge.tertiary.highlight .badge-content .fa-icon{color:var(--badge-tertiary-text-highlight)}.badge.tertiary:has(a,button):hover .badge-content .fa-icon:after,.badge.tertiary.highlight .badge-content .fa-icon:after,.badge.tertiary:has(a,button):focus .badge-content .fa-icon:after,.badge.tertiary:has(a,button):focus-within .badge-content .fa-icon:after{background-color:var(--badge-tertiary-bg-highlight);color:var(--badge-tertiary-text-highlight)}.badge.quaternary .badge-content{background-color:var(--badge-quaternary-bg);color:var(--badge-quaternary-text);border:var(--badge-border-width) solid var(--badge-quaternary-border)}.badge.quaternary:has(a,button) .badge-content:hover :not(.title),.badge.quaternary.highlight .badge-content .fa-icon{color:var(--badge-quaternary-text-highlight)}.badge.quaternary:has(a,button):hover .badge-content .fa-icon:after,.badge.quaternary.highlight .badge-content .fa-icon:after,.badge.quaternary:has(a,button):focus .badge-content .fa-icon:after,.badge.quaternary:has(a,button):focus-within .badge-content .fa-icon:after{background-color:var(--badge-quaternary-bg-highlight);color:var(--badge-quaternary-text-highlight)}.badge.disabled,.badge.disabled .badge-content,.badge.disabled .badge-content .fa-icon,.badge.disabled .badge-content .fa-icon:after{opacity:.65;cursor:default}.image-container{position:relative;width:100%;height:100%;display:block;overflow:hidden}.image-container img{width:100%;height:100%;display:block;transform:translateZ(0)}.image-loading{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--color-bg, #f5f5f5)}.loading-skeleton{width:100%;height:100%;background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0,#f0f0f0 75%);background-size:200% 100%;animation:loading 1.5s infinite}@keyframes loading{0%{background-position:200% 0}to{background-position:-200% 0}}.image-error{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--color-bg, #f5f5f5);color:var(--color-text, #666);font-size:.875rem}@media (prefers-color-scheme: dark){.loading-skeleton{background:linear-gradient(90deg,#2a2a2a 25%,#1a1a1a,#2a2a2a 75%);background-size:200% 100%}.image-error{background:#2a2a2a;color:#ccc}.image-loading{background:#2a2a2a}}.image-container img{backface-visibility:hidden;-webkit-backface-visibility:hidden}.image-container[style*=aspect-ratio]{width:100%}.hex{container-name:hex;container-type:inline-size}.hex-grid{display:flex;flex-direction:column;pointer-events:none}.hex-row{display:flex}.hex{clip-path:var(--hex-clip-path);position:relative;pointer-events:all;border:0}.hex{width:var(--hex-width, 122px);min-width:var(--hex-width, 122px);height:calc(var(--hex-width, 122px) * 1.1547);margin:var(--hex-margin, 3px) var(--hex-margin, 3px) calc(var(--hex-margin, 3px) - var(--hex-width, 122px) * .2886 + 1px)}.hex-row:nth-child(2n){margin-left:calc(var(--hex-width, 122px) / 2 + var(--hex-margin, 3px))}.hex.with-bg,.hex.with-bg-image{background-size:cover;background-position:center}.hex .hex-image{width:100%;height:100%;object-fit:cover;clip-path:var(--hex-clip-path);position:relative;z-index:0}.hex.full-area .hex-text-content,.hex .hex-full-area-content{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;color:inherit,var(--default-hex-text);text-decoration:none;z-index:1;background-color:transparent;transform:none}.hex.full-area .hex-text-content *:not(.fa-icon,svg,.title){width:100%;height:100%;display:flex;justify-content:center;align-items:center;flex:1 1 auto}.hex .hex-text-content{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;justify-content:center;align-items:center;color:inherit,var(--default-hex-text);text-decoration:none;z-index:2}.hex.with-svg .hex-text-content{width:100%}.hex.with-link .hex-text-content,.hex.with-onclick .hex-text-content{pointer-events:none}.hex-grid.shifted-up{margin-top:calc((var(--mobile-hex-width) * (49 / 44)) / 2 * -1);padding-bottom:calc((var(--mobile-hex-width) * (49 / 44)) / 2)}.hex.icon-bg .badge .badge-content .fa-icon{display:none;font-size:3rem;position:absolute;left:50%;transform:translate(-50%);z-index:-1;opacity:.25;transition:color var(--transition-rules),font-size var(--transition-rules),opacity var(--transition-rules)}.hex.icon-bg .title{font-size:1.125rem}.hex.icon-bg:hover .badge .badge-content .fa-icon{font-size:3.5rem;opacity:.4;transition:color var(--transition-rules),font-size var(--transition-rules),opacity var(--transition-rules)}@container hex (width > 80px){.hex.icon-bg .title{font-size:1.25rem}.hex.icon-bg .badge .badge-content .fa-icon{font-size:3.5rem}.hex.icon-bg:hover .badge .badge-content .fa-icon{font-size:4rem}}@container hex (width > 120px){.hex.icon-bg .title{font-size:1.375rem}.hex.icon-bg .badge .badge-content .fa-icon{font-size:4rem}.hex.icon-bg:hover .badge .badge-content .fa-icon{font-size:4.5rem}}@media (min-width: 64em){.hex-grid.shifted-up{margin-top:calc((var(--desktop-hex-width) * (49 / 44)) / 2 * -1);padding-bottom:calc((var(--desktop-hex-width) * (49 / 44)) / 2)}}.hex.transparent{background:transparent}.hex[class*=gradient]{--gradient-angle: 120deg;--stop-color-1: var(--shade-1);--stop-color-2: var(--shade-2);background:var(--stop-color-1);background:linear-gradient(var(--gradient-angle),var(--stop-color-1) var(--stop-1-of-2),var(--stop-color-2) var(--stop-2-of-2))}.hex.gradient-1{background:var(--shade-1)}.hex.gradient-1-3{--stop-color-1: var(--shade-1);--stop-color-2: var(--shade-3)}.hex.gradient-1-transparent{--stop-color-1: var(--shade-1);--stop-color-2: transparent}.hex.gradient-2-3{--stop-color-1: var(--shade-2);--stop-color-2: var(--shade-3)}.hex.gradient-2-4{--stop-color-1: var(--shade-2);--stop-color-2: var(--shade-4)}.hex.gradient-3-4{--stop-color-1: var(--shade-3);--stop-color-2: var(--shade-4)}.hex.gradient-3-5{--stop-color-1: var(--shade-3);--stop-color-2: var(--shade-5)}.hex.gradient-4{background:var(--shade-4)}.hex.gradient-4-5{--stop-color-1: var(--shade-4);--stop-color-2: var(--shade-5)}.hex.gradient-4-6{--stop-color-1: var(--shade-4);--stop-color-2: var(--shade-6)}.hex.gradient-5-6{--stop-color-1: var(--shade-5);--stop-color-2: var(--shade-6)}.hex.gradient-5-8{--stop-color-1: var(--shade-5);--stop-color-2: var(--shade-8)}.hex.gradient-6-7{--stop-color-1: var(--shade-6);--stop-color-2: var(--shade-7)}.hex.gradient-6-8{--stop-color-1: var(--shade-6);--stop-color-2: var(--shade-8)}.hex.gradient-7-8{--stop-color-1: var(--shade-7);--stop-color-2: var(--shade-8)}.hex.gradient-8{background:var(--shade-8)}.hex.gradient-8-9{--stop-color-1: var(--shade-8);--stop-color-2: var(--shade-9)}.hex.gradient-8-10{--stop-color-1: var(--shade-8);--stop-color-2: var(--shade-10)}.hex.gradient-9{background:var(--shade-9)}.hex.gradient-9-10{--stop-color-1: var(--shade-9);--stop-color-2: var(--shade-10)}.hex.gradient-9-11{--stop-color-1: var(--shade-9);--stop-color-2: var(--shade-11)}.hex.gradient-10-11{--stop-color-1: var(--shade-10);--stop-color-2: var(--shade-11)}.hex.gradient-10-12{--stop-color-1: var(--shade-10);--stop-color-2: var(--shade-12)}.hex.gradient-11-12{--stop-color-1: var(--shade-11);--stop-color-2: var(--shade-12)}.hex.gradient-12-11{--stop-color-1: var(--shade-12);--stop-color-2: var(--shade-11)}.hex.gradient-12-1{--stop-color-1: var(--shade-12);--stop-color-2: var(--shade-1)}.hex.gradient-1-body-bg{--stop-1-of-2: 0%;--stop-2-of-2: 50%;--stop-color-1: var(--shade-1);--stop-color-2: var(--body-bg)}.hex.gradient-10-body-bg{--stop-1-of-2: 0;--stop-2-of-2: 50%;--stop-color-1: var(--shade-10);--stop-color-2: var(--body-bg)}.hex.gradient-11-body-bg{--stop-1-of-2: 0;--stop-2-of-2: 50%;--stop-color-1: var(--shade-11);--stop-color-2: var(--body-bg)}.hex.gradient-12-body-bg{--stop-1-of-2: 0;--stop-2-of-2: 50%;--stop-color-1: var(--shade-12);--stop-color-2: var(--body-bg)}.hex.body-bg{background:var(--body-bg)}.hex.img-top-left{background-position:top left}.hex.img-top-right{background-position:top right}.hex.img-left,.hex.img-center{background-position:left}.hex.img-right{background-position:right}.hex.img-bottom-left{background-position:bottom left}.hex.img-bottom-right{background-position:bottom right}.hex{--hex-top: var(--shade-1);--outer-wall-top-left: var(--shade-6);--outer-wall-top-right: var(--shade-7);--outer-wall-right: var(--shade-8);--outer-wall-bottom-right: var(--shade-9);--outer-wall-bottom-left: var(--shade-8);--outer-wall-left: var(--shade-7);--hex-wall-top-left: var(--shade-11);--hex-wall-top-right: var(--shade-2);--hex-wall-right: var(--shade-3);--hex-wall-bottom-right: var(--shade-4);--hex-wall-bottom-left: var(--shade-3);--hex-wall-left: var(--shade-2)}.hex .hex-top{fill:var(--hex-top)}.hex .outer-wall-top-left{fill:var(--outer-wall-top-left)}.hex .outer-wall-top-right{fill:var(--outer-wall-top-right)}.hex .outer-wall-right{fill:var(--outer-wall-right)}.hex .outer-wall-bottom-right{fill:var(--outer-wall-bottom-right)}.hex .outer-wall-bottom-left{fill:var(--outer-wall-bottom-left)}.hex .outer-wall-left{fill:var(--outer-wall-left)}.hex .hex-wall-top-left{fill:var(--hex-wall-top-left)}.hex .hex-wall-top-right{fill:var(--hex-wall-top-right)}.hex .hex-wall-right{fill:var(--hex-wall-right)}.hex .hex-wall-bottom-right{fill:var(--hex-wall-bottom-right)}.hex .hex-wall-bottom-left{fill:var(--hex-wall-bottom-left)}.hex .hex-wall-left{fill:var(--hex-wall-left)}.hex.logo *{transition:fill var(--transition-rules),color var(--transition-rules)}.hex .outer-hex{fill:var(--outer-hex)}.hex .middle-hex{fill:var(--middle-hex)}.hex .inner-hex{fill:var(--inner-hex)}.hex .logo-text{--shadow-scale: 1.75px;--inverted-shadow-scale: calc(var(--shadow-scale) * -1);fill:var(--logo-text);font-family:var(--font-heading);font-weight:800;font-size:7rem;transform:translateY(12px);color:var(--logo-text);animation:titleGlow 16s ease infinite}.hex.logo:hover *{--outer-hex: var(--outer-hex-hover);--middle-hex: var(--middle-hex-hover);--inner-hex: var(--inner-hex-hover);--logo-text: var(--logo-text-hover);transition:fill var(--transition-rules),color var(--transition-rules)}.nav{--nav-width: 344px;--nav-height: calc(var(--nav-width) * 1.1547);--shadow-width: 64px;--shadow-height: calc(var(--shadow-width) * 1.1547);position:fixed;top:0;right:0;width:0;height:0;z-index:3;filter:var(--drop-shadow)}.nav .shadow{filter:var(--drop-shadow);width:var(--shadow-width);min-width:var(--shadow-width);margin:3px 3px calc(3px - var(--shadow-width) * .2886 + 1px);height:var(--shadow-height);z-index:1;position:relative}.nav-toggle{position:fixed;top:8px;right:83px;z-index:2;height:var(--shadow-height)}.nav-toggle-hex{background-color:var(--nav-toggle-bg);color:var(--nav-toggle-text);filter:var(--drop-shadow);transition:background-color var(--transition-rules),color var(--transition-rules);transform:translateY(-9px)}.nav-toggle:hover .nav-toggle-hex,.nav-toggle:focus-within .nav-toggle{background-color:var(--nav-toggle-bg-hover);color:var(--nav-toggle-text-hover);cursor:pointer;transition:background-color var(--transition-rules),color var(--transition-rules)}.nav-hex{background-color:var(--nav-bg);color:var(--nav-text);position:fixed;top:-300px;right:-344px;transition:top .5s ease,right .5s ease;width:var(--nav-width);min-width:var(--nav-width);height:var(--nav-height)}.nav-hex.open{top:-102px;right:-2px;transition:top .5s ease,right .5s ease}.nav .hex-content{position:absolute;top:84px;left:0;transform:translate(0);display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:16px;width:100%;height:100%;padding:16px}.nav .locale{position:absolute;top:32px;left:16px;font-size:1.25rem;display:flex;flex-direction:column;align-items:flex-start;gap:4px;color:var(--nav-text)}.nav .nav-links{display:flex;flex-direction:row;flex-wrap:wrap;align-items:flex-start;justify-content:center;gap:16px;width:100%}.nav .hex.icon-bg .badge .badge-content .fa-icon{font-size:2.5rem;color:var(--nav-icon-color)}.nav .hex.icon-bg .title{font-size:1.25rem}.nav .hex.icon-bg:hover .badge .badge-content .fa-icon{font-size:2.5rem;opacity:.25}.hex-header{--header-offset: 20px;--left: calc(50% - var(--header-offset));--width: calc(100vw + (var(--header-offset) * 2));position:absolute;top:0;left:var(--left);transform:translate(-50%);height:auto;width:var(--width);z-index:2;pointer-events:none;overflow-y:visible;overflow-x:hidden}.hex-header .hex:has(a),.hex-header .hex:has(button){pointer-events:all;color:var(--hh-link-color);transition:color var(--transition-rules)}.hex-header .hex:has(a):hover,.hex-header .hex:has(button):hover{cursor:pointer;color:var(--hh-link-color-hover);transition:color var(--transition-rules)}.hex-header .hex.icon-bg .badge .badge-content .fa-icon{color:var(--hh-icon-color)}.hex-header .hex.icon-bg:hover .badge .badge-content .fa-icon{color:var(--hh-icon-color-hover);opacity:.4}.hex-header .hex:not([class*=-body-bg]){animation:gradientAngleSpin 198s ease infinite}.hex-header .hex[class*=-body-bg]{--gradient-angle: 180deg}.hex-header .hex-row:has(.hex[class*=-body-bg])+.hex-row:has(.hex[class*=-body-bg]) .hex[class*=-body-bg]{--gradient-angle: 0deg}.hex-header .hex *:focus-visible{outline-offset:-16px}@media screen and (min-width: 40em){.hex-header{--header-offset: 24px}}@media screen and (min-width: 64em){.hex-header{--header-offset: 32px}}.hero{--title-size: clamp(3.25rem, 18vw, 6rem);--subtitle-size: clamp(1.6rem, 7vw, 2.35rem);--content-padding: 8px;--content-top: 96px;--content-offset: 0;--content-width: calc(100% - var(--content-offset));--content-max-width: 600px;position:relative;width:100vw;height:56.25vw;min-height:720px;margin-bottom:16px;z-index:1}.hero-bg-image{position:absolute;top:0;left:0;width:100%;height:100%}@media (min-width: 40em){.hero-bg-image{aspect-ratio:16/9}}.hero-bg-image img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;z-index:-1;-webkit-mask-image:linear-gradient(to bottom,#000 80%,rgba(0,0,0,.2) 95%,rgba(0,0,0,0));mask-image:linear-gradient(to bottom,#000 80%,rgba(0,0,0,.2) 95%,rgba(0,0,0,0))}.hero .hex-grid{z-index:1}.hero .hero-content{position:absolute;top:var(--content-top);right:0;width:auto;max-width:var(--content-width);padding:0 var(--content-padding) var(--content-padding);text-align:right}.hero .title{--shadow-scale: 1.25px;--inverted-shadow-scale: calc(var(--shadow-scale) * -1);line-height:.9;animation:titleGlow 16s ease infinite}.hero .subtitle{--shadow-scale: .75px;--inverted-shadow-scale: calc(var(--shadow-scale) * -1);line-height:1.2;animation:titleGlow 32s ease infinite}@media screen and (min-width: 27em){.hero{--content-padding: 16px}}@media screen and (min-width: 40em){.hero{--content-offset: 148px;--content-top: 120px;--title-size: 6rem}.hero .hero-content{max-width:var(--content-max-width)}}@media screen and (min-width: 64em){.hero{--content-padding: 48px;--content-top: 132px;--content-offset: 440px;--title-size: clamp(6rem, 9vw, 15rem);--subtitle-size: clamp(1.6rem, 3.55vw, 5.525rem)}.hero .hero-content{max-width:var(--content-width)}}@media screen and (min-width: 90em){.hero{--content-top: 160px;--content-offset: 600px}}.intro-panel{--title-size: 3rem;--y-offset: -180px;--margin-bottom-offset: 16px;--y-offset-margin: calc(var(--y-offset) + var(--margin-bottom-offset));z-index:1;margin-bottom:32px;display:flex;flex-direction:column;gap:16px;position:relative;top:var(--y-offset);margin-bottom:var(--y-offset-margin);border-radius:var(--border-radius);padding:16px;background:linear-gradient(var(--intro-panel-bg-top-color),var(--intro-panel-bg-bottom-color));color:var(--intro-panel-text)}.intro-panel h3{--shadow-scale: .25px;--inverted-shadow-scale: calc(var(--shadow-scale) * -1);font-size:var(--title-size);background-size:cover;background-position:center;-webkit-background-clip:text;background-clip:text;color:transparent;transition:background-image var(--transition-rules);animation:titleGlow 16s ease infinite}@media screen and (min-width: 40em){.intro-panel{--title-size: 4rem;--margin-bottom-offset: 24px}}@media screen and (min-width: 64em){.intro-panel{--title-size: 5rem;--margin-bottom-offset: 32px}}.text-panel{position:relative}.expandable-container{max-height:1000px;overflow:hidden;transition:max-height var(--transition-rules-slow)}.expandable-container.hidden{max-height:150px;overflow:hidden;position:relative;transition:max-height var(--transition-rules-slow)}.expandable-container.hidden:after{content:"";position:absolute;bottom:0;left:0;right:0;height:3rem;background:linear-gradient(to bottom,transparent,var(--body-bg));pointer-events:none}.read-more-wrapper{display:flex;justify-content:center;margin-top:16px}.read-more-btn{cursor:pointer;margin-bottom:32px}@media screen and (min-width: 64em){.expandable-container.hidden{max-height:1000px}.read-more-wrapper{display:none}.expandable-container.hidden:after{display:none}}.favorite-techs .tech-list{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;list-style:none;padding:0;margin:0}@media screen and (min-width: 40em){.favorite-techs .tech-list{padding:0 32px}}@media screen and (min-width: 64em){.favorite-techs .tech-list{padding:0 64px}}.project-index .filters{--icon-size: 1.5rem;--title-size: 1rem;position:absolute;top:-32px;left:0;z-index:1;pointer-events:none;height:100%;filter:var(--drop-shadow)}.project-index .filters .filter-title{font-size:calc(var(--title-size) * 1.25);margin:16px 0 8px 16px}.project-index .filter-wrapper fieldset{border:none;margin:0 0 16px;padding:0}.project-index .filter-wrapper legend{padding:0 16px 8px;font-weight:600}.project-index .filter-button{border:none;background:transparent;padding:4px;border-radius:var(--border-radius);cursor:pointer;transition:all var(--transition-rules);width:100%;display:flex;align-items:center}.project-index .filter-button:focus{outline:2px solid var(--focus-shadow);outline-offset:2px;background-color:var(--project-filter-bg-hover-top)}.project-index .bottom .filter-button{--focus-shadow: var(--project-filter-bg-hover-bottom)}.project-index .bottom .filter-button:focus{background-color:var(--project-filter-bg-hover-bottom)}.project-index .filter-button:focus-visible{outline:3px solid var(--focus-shadow);outline-offset:3px}.project-index .bottom .filter-button:focus-visible{background-color:var(--project-filter-bg-hover-bottom)}@media (prefers-contrast: high){.project-index .filter-button:focus{outline-width:3px;background-color:var(--focus-shadow);color:var(--body-bg)}.project-index .filter-item.selected{border:2px solid currentColor}}.project-index .filter-toggle.hex{position:absolute;top:0;left:0;margin:0;background-color:var(--project-filter-toggle-bg);color:var(--project-filter-toggle-text);filter:var(--drop-shadow);transition:background-color var(--transition-rules),color var(--transition-rules)}.project-index .filter-toggle.hex:hover,.project-index .filter-toggle.hex:focus-within{background-color:var(--project-filter-toggle-bg-hover);color:var(--project-filter-toggle-text-hover);cursor:pointer;transition:background-color var(--transition-rules),color var(--transition-rules)}.project-index .filters.hide-mobile-filter .filter-wrapper{left:-152px;transition:left var(--transition-rules)}.project-index .filter-wrapper{top:112px;left:0;color:var(--project-filter-text);transition:left var(--transition-rules);pointer-events:all}.project-index .filter-wrapper h2{--title-size: 1.625rem;padding-left:16px}.project-index .filter-list{display:flex;flex-direction:column;gap:16px;padding:0 8px}.project-index .filter-item{font-family:var(--font-display);font-size:var(--icon-size);padding:4px;border-radius:var(--border-radius);cursor:pointer;transition:background-color var(--transition-rules),color var(--transition-rules)}.project-index .filter-item .title{--title-size: 1rem}.project-index .filter-item:hover,.project-index .filter-item.selected{background-color:var(--project-filter-bg-hover-top);color:var(--project-filter-text-hover-top);transition:background-color var(--transition-rules),color var(--transition-rules)}.project-index .filter-item.bottom{color:var(--project-filter-text-contrast);transition:background-color var(--transition-rules),color var(--transition-rules)}.project-index .filter-item.bottom:hover,.project-index .filter-item.bottom.selected{background-color:var(--project-filter-bg-hover-bottom);color:var(--project-filter-text-hover-bottom);transition:background-color var(--transition-rules),color var(--transition-rules)}@media screen and (min-width: 40em){.project-index .filters.hide-mobile-filter .filter-wrapper{left:-192px}}@media screen and (min-width: 64em){.project-index .filters{--title-size: 1.125rem;position:sticky;top:24px;margin-bottom:236px}.project-index .filter-toggle{display:none}.project-index .filter-wrapper,.project-index .filters.hide-mobile-filter .filter-wrapper{top:var(--variable-height-hex-triangle-height);left:0}}.project-result-container{container-name:project-card;container-type:inline-size;height:100%}.project-result{--links-max-width: 300px;display:flex;flex-direction:column;height:100%;min-height:320px;filter:var(--drop-shadow);border-radius:var(--border-radius);overflow:hidden;position:relative}.project-result .card-top{position:relative;flex:1 1 auto;display:flex;flex-direction:column;z-index:0}.project-result .header-image{position:relative;width:100%;overflow:hidden}.project-result .header-image .inner{width:100%;height:100%;position:relative;border:none;background:none;cursor:pointer;padding:0}.project-result .inner:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(var(--gradient-angle),var(--shade-5) 16%,var(--shade-3) 33%,var(--shade-1) 50%,var(--shade-11) 66%,var(--shade-9) 83%,var(--shade-7) 100%);animation:gradientAngleSpin 36s ease infinite;opacity:0;filter:blur(0px);transition:opacity var(--transition-rules-slow),filter var(--transition-rules-slow);pointer-events:none;z-index:1}.project-result:hover .inner:after{opacity:.5;filter:blur(40px);transition:opacity var(--transition-rules-slow),filter var(--transition-rules-slow)}.project-result .card-top .inner:before{background:var(--black);opacity:.3;z-index:1;transition:opacity var(--transition-rules-slow)}.project-result:hover .card-top .inner:before{opacity:.15;transition:opacity var(--transition-rules-slow)}.project-result .image{width:100%;height:100%;object-fit:cover;position:relative;z-index:0}.project-result .header-content{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;justify-content:space-between;padding:16px;z-index:2;pointer-events:none}.project-result .header-content>*{pointer-events:all}.project-result .title.primary{--title-size: 2rem;--shadow-scale: .5px;--inverted-shadow-scale: calc(var(--shadow-scale) * -1);color:#fff;text-align:right;margin:0;line-height:1.1;align-self:flex-end;animation:titleGlow 16s ease infinite;cursor:pointer}.project-result:hover .title.primary{--shadow-scale: .75px}.project-result .featured-wrapper{display:flex;flex-direction:column;gap:4px;align-items:flex-end}.project-result .featured-wrapper .featured-flag .title,.project-result .featured-wrapper .featured-flag .fa-icon{--title-size: .75rem;font-size:var(--title-size)}.project-result .featured-wrapper .badge.pill .badge-content:has(:not(.fa-icon)){padding:4px 8px}.project-result .badge .badge-content{pointer-events:all}.project-result .badges-list{display:flex;flex-wrap:wrap;gap:12px;justify-content:flex-end;margin:0;padding:0;list-style:none}.project-result .info-panel{flex:0 0 auto;padding:12px 16px;background:var(--info-panel-bg-top-color);background:linear-gradient(180deg,var(--info-panel-bg-top-color) 10%,var(--info-panel-bg-bottom-color) 100%);color:var(--info-panel-text);display:flex;flex-direction:column;gap:16px;position:relative}.project-result .info-panel.has-footer-links{padding-bottom:112px}.project-result .description{margin:0;font-size:1.2rem;line-height:1.3;color:inherit}.project-result .footer-links{position:absolute;bottom:0;left:16px;display:flex;flex-direction:row;justify-content:space-between;align-items:flex-start;gap:16px;padding:0;z-index:2;width:calc(100% - 32px)}.project-result .footer-links .link-badge{background-color:var(--link-badge-bg);color:var(--link-badge-text);position:relative;top:44px;transition:top var(--transition-rules),background-color var(--transition-rules),color var(--transition-rules);pointer-events:all}.project-result .footer-links .link-badge:hover,.project-result .footer-links .link-badge:focus-within{background-color:var(--link-badge-bg-hover);color:var(--link-badge-text-hover)}.project-result .footer-links .link-badge .hex-text-content{top:16px;transform:translate(-50%)}.project-result .footer-links .link-badge .badge .badge-content{color:inherit;transition:color var(--transition-rules);display:flex;flex-direction:column;align-items:center;gap:16px}.project-result .footer-links .link-badge a{pointer-events:all;z-index:3;text-decoration:none;color:inherit}.project-result .decorative-hex-border{position:absolute;bottom:-10px;left:50%;transform:translate(-50%);z-index:1;pointer-events:none;flex-direction:column;gap:24px}.project-result .decorative-hex-border .hex-row{--gradient-height: 9px;background:linear-gradient(to bottom,transparent var(--gradient-height),var(--info-panel-bg-top-color) var(--gradient-height))}@container project-card (width > 320px){.project-result .title.primary{--title-size: 2.375rem}}@container project-card (width > 340px){.project-result .title.primary{--title-size: 2.5rem}}@container project-card (width > 360px){.project-result .title.primary{--title-size: 2.625rem}}@container project-card (width > 380px){.project-result .title.primary{--title-size: 2.75rem}}@container project-card (width > 400px){.project-result .title.primary{--title-size: 2.875rem}.project-result .info-panel{padding:20px}}@container project-card (width > 450px){.project-result .title.primary{--title-size: 3rem}}@container project-card (width > 500px){.project-result .title.primary{--title-size: 3.375rem}}@container project-card (width > 550px){.project-result .title.primary{--title-size: 3.875rem}}@container project-card (width > 600px){.project-result .title.primary{--title-size: 4.375rem}}@media (hover: hover){.project-result .footer-links .link-badge{top:70px}.project-result .footer-links .link-badge:hover{top:30px}}.project-result:focus-within{outline:2px solid var(--focus-shadow);outline-offset:2px}.pagination{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:16px}.pagination-info{font-size:.9rem;color:var(--color-text-secondary, #666)}.pagination-controls{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;justify-content:center}.pagination-pages{display:flex;align-items:center;gap:.25rem}.pagination-ellipsis{display:flex;align-items:center;justify-content:center;min-width:2.5rem;height:2.5rem;color:var(--color-text-secondary, #666);font-size:.875rem}.pagination-first,.pagination-last{font-size:1rem;font-weight:700}.pagination .pagination-pages .pagination-btn:not(.active):hover .badge-content{background-color:var(--badge-tertiary-bg-highlight);color:var(--badge-tertiary-text-highlight);cursor:pointer}.pagination .pagination-pages .pagination-btn.active .badge-content{opacity:.65;cursor:default}@media (max-width: 768px){.pagination-controls{gap:.25rem}.pagination-btn{min-width:2rem;height:2rem;padding:.25rem .5rem;font-size:.75rem}.pagination-ellipsis{min-width:2rem;height:2rem}.pagination-first,.pagination-last{display:none}}.project-feature:has(.project-detail-view){margin-top:48px}.project-index{--filter-transition: .3s ease-out;position:relative;width:100%;display:block;min-height:788px}.project-index .helper-results{width:100%;display:block;padding-bottom:36px}.project-index .pagination-cont{margin:16px auto}.project-index .pagination-cont.desktop{display:none}.project-index .results,.project-index .helper-results .results{position:relative;padding:0 0 32px;display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));grid-template-rows:auto;gap:16px;z-index:0;width:100%}.project-index .results{transition:opacity .32s ease;opacity:1}.project-index .results.fade{opacity:0;pointer-events:none}.project-index .results .result-item{transition:transform .32s ease,opacity .32s ease;opacity:1}.project-index .results.fade .result-item{opacity:0;transform:translateY(8px)}.project-index .results li{display:flex;list-style:none;margin:0;padding:0}.project-index .results .project-result-container{width:100%;display:flex;flex-direction:column}.selected-project{position:relative}.project-index .hex.icon-bg .badge .badge-content .fa-icon{font-size:2rem}@media screen and (min-width: 64em){.project-index{--filter-offset: 16px;display:flex}.project-index .results,.project-index .helper-results .results{margin-left:var(--filter-offset);width:calc(100% - var(--filter-offset));grid-template-columns:1fr 1fr}.project-index .pagination-cont{margin:0 0 0 var(--filter-offset);min-height:unset}.project-index .pagination-cont.mobile{display:none}.project-index .pagination-cont.desktop{display:block}}@media screen and (min-width: 1150px){.project-index .results,.project-index .helper-results .results{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}}.error-banner{background-color:var(--color-danger-bg, #ffeaea);border:1px solid var(--color-danger, #ff6b6b);border-radius:var(--border-radius, 4px);padding:1rem;margin-bottom:1rem;color:var(--color-danger-text, #d63384)}.error-banner .error-content{display:flex;align-items:center;justify-content:space-between;gap:1rem}.error-banner p{margin:0;flex:1}.error-banner .dismiss-error{background:none;border:none;font-size:1.5rem;line-height:1;color:var(--color-danger, #ff6b6b);cursor:pointer;padding:.25rem;border-radius:2px;transition:background-color .2s ease}.error-banner .dismiss-error:hover{background-color:var(--color-danger-hover-bg, rgba(255, 107, 107, .1))}.error-banner .dismiss-error:focus{outline:2px solid var(--color-danger, #ff6b6b);outline-offset:2px}@media screen and (min-width: 40em){.project-index.routing-error{flex-direction:column}}.footer{--hex-content-width: calc(100vw * 208 / 360);--gradient-height: 40px;--gradient-top: calc(var(--gradient-height) * -.5);height:700px;position:relative;z-index:2;margin-top:32px;background-color:var(--color-bg)}.footer:after{content:"";position:absolute;top:var(--gradient-top);left:0;width:100%;height:var(--gradient-height);background:linear-gradient(to top,var(--color-bg) calc(50% + 16px),transparent calc(100% - 32px));pointer-events:none;z-index:-1}.footer .footer-hex-wrapper{width:100vw;overflow:hidden;height:100%;position:relative}.footer .hex-grid{position:absolute;top:0;left:50%;transform:translate(-50%)}.footer .footer-hex.decorative{background:linear-gradient(30deg,var(--footer-decorative-hex-color-odd) 0%,var(--footer-decorative-hex-color-even) 100%);filter:var(--drop-shadow)}.footer .footer-hex.decorative:nth-child(2n){background:linear-gradient(30deg,var(--footer-decorative-hex-color-even) 0%,var(--footer-decorative-hex-color-odd) 100%)}.footer .footer-hex.footer-text{padding:16px;display:flex;flex-direction:column;justify-content:center;gap:16px;background:var(--footer-content-bg-top-color);background:linear-gradient(30deg,var(--footer-content-bg-top-color) 10%,var(--footer-content-bg-bottom-color) 100%);color:var(--footer-content-text)}.footer .footer-hex.footer-links{padding:16px;display:flex;flex-direction:column;justify-content:center;align-items:flex-end;gap:16px;background:var(--footer-nav-bg-top-color);background:linear-gradient(30deg,var(--footer-nav-bg-top-color) 10%,var(--footer-nav-bg-bottom-color) 100%);color:var(--footer-content-text)}.footer .footer-hex.footer-links .nav-links{display:flex;flex-direction:column;justify-content:flex-end;gap:8px}.footer .footer-hex.footer-text.hex .hex-text-content{left:16px;transform:translateY(-50%);max-width:var(--hex-content-width)}.footer .footer-hex.footer-links.hex .hex-text-content{left:auto;right:16px;transform:translateY(-50%);max-width:var(--hex-content-width)}.footer .footer-hex.footer-links.hex .hex-text-content .nav-links{display:flex;flex-direction:column;justify-content:flex-end;align-items:flex-end;gap:8px}.footer .footer-content{display:flex;flex-direction:column;gap:8px;max-width:clamp(220px,60vw,280px)}.footer .footer-content .title{--shadow-scale: .25px;--inverted-shadow-scale: calc(var(--shadow-scale) * -1);--title-size: 1.625rem;animation:titleGlow 16s ease infinite}.footer .description,.footer .copyright{margin-bottom:0}@media screen and (min-width: 500px){.footer .title{--title-size: 2rem}}@media screen and (min-width: 64em){.footer{--gradient-height: 400px;margin-top:200px}}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video,button{margin:0;padding:0;border:none;font-size:100%;font:inherit;vertical-align:baseline;background:none}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}*,*:before,*:after{box-sizing:border-box}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:"";content:none}table{border-collapse:collapse;border-spacing:0}html{font-size:16px;overflow:hidden auto}body,html{height:100%}body{overflow-anchor:none}[tabindex='"-1"']:focus{outline:0}code{font:12px monospace}img{width:100%;height:auto}a,a:visited,a:hover,a:active{text-decoration:none;cursor:pointer;color:inherit}button{cursor:pointer;background:none;border:none;padding:0;font:inherit;color:inherit}button .title{pointer-events:none}@font-face{font-display:swap;font-family:Bakbak One;font-style:normal;font-weight:400;src:url(/fonts/bakbak-one-v10-latin-regular.woff2)}@font-face{font-display:swap;font-family:Red Hat Text;font-style:normal;font-weight:500;src:url(/fonts/red-hat-text-v18-latin-500.woff2)}@font-face{font-display:swap;font-family:Red Hat Text;font-style:normal;font-weight:600;src:url(/fonts/red-hat-text-v18-latin-600.woff2)}@font-face{font-display:swap;font-family:Red Hat Text;font-style:normal;font-weight:700;src:url(/fonts/red-hat-text-v18-latin-700.woff2)}@font-face{font-display:swap;font-family:Oxanium;font-style:normal;font-weight:600;src:url(/fonts/oxanium-v21-latin-600.woff2)}:root{--font-bakbak: "Bakbak One";--font-redhat: "Red Hat Text";--font-inter: "Oxanium";--font-display: var(--font-bakbak), sans-serif;--font-body: var(--font-redhat), sans-serif;--font-small-display: var(--font-inter), sans-serif;--content-max-width: 1280px;--content-margin: 0 auto;--content-padding: 0 16px;--orange: #da7e1b;--red: #cd5e57;--pink: #ae5378;--purple: #7a5484;--plum: #65617f;--blue: #4f6d7a;--cyan: #428d95;--teal: #41ad9f;--green: #68cb97;--lime: #a9e583;--yellow: #e9e377;--tangerine: #e2b149;--beige: #f7f5d3;--black: #120a03;--white: #fff;--dark-gray: #211e1b;--shade-1: var(--orange);--shade-2: var(--red);--shade-3: var(--pink);--shade-4: var(--purple);--shade-5: var(--plum);--shade-6: var(--blue);--shade-7: var(--cyan);--shade-8: var(--teal);--shade-9: var(--green);--shade-10: var(--lime);--shade-11: var(--yellow);--shade-12: var(--tangerine);--color-bg: var(--beige);--color-dark-text: var(--black);--color-light-text: var(--white);--color-gray-text: var(--dark-gray);--text-content-link: var(--blue);--text-content-link-highlight: var(--purple);--body-bg: var(--color-bg);--body-color: var(--color-dark-text);--body-color-contrast: var(--color-light-text);--transparent: transparent;--primary-background: var(--teal);--primary-text: var(--color-dark-text);--primary-background-contrast: var(--lime);--primary-text-contrast: var(--color-dark-text);--secondary-background: var(--plum);--secondary-text: var(--color-light-text);--secondary-background-contrast: var(--green);--secondary-text-contrast: var(--color-gray-text);--tertiary-background: var(--cyan);--tertiary-text: var(--color-dark-text);--tertiary-background-contrast: var(--blue);--tertiary-text-contrast: var(--color-light-text);--quaternary-background: var(--pink);--quaternary-text: var(--color-light-text);--quaternary-background-contrast: var(--cyan);--quaternary-text-contrast: var(--color-dark-text);--stop-1-of-2: 50%;--stop-2-of-2: 100%;--mobile-hex-width: 122px;--desktop-hex-width: 170px;--hex-clip-path: polygon(0% 25%, 0% 75%, 50% 100%, 100% 75%, 100% 25%, 50% 0%);--transition-rules: .3s ease-out;--transition-rules-slow: .5s ease-out;--border-radius: 8px;--drop-shadow: drop-shadow(2px 2px 4px rgba(0, 0, 0, .2));--drop-shadow-top: drop-shadow(0px -2px 4px rgba(0, 0, 0, .2));--drop-shadow-bottom: drop-shadow(0px 8px 4px rgba(0, 0, 0, .05));--focus-shadow: var(--primary-background-contrast);--overlay-title-color: var(--color-light-text);--title-size: 1.75rem;--subtitle-size: 1.25rem;--shadow-scale: .65px;--inverted-shadow-scale: calc(var(--shadow-scale) * -1);--from-color: var(--quaternary-background);--from-text: var(--quaternary-text);--to-color: var(--quaternary-background-contrast);--to-text: var(--quaternary-text-contrast);--gradient-angle: 30deg;--badge-text-size: .875rem;--badge-border-width: 1px;--badge-primary-bg: var(--primary-background-contrast);--badge-primary-text: var(--primary-text-contrast);--badge-primary-border: var(--black);--badge-primary-bg-highlight: var(--primary-background);--badge-primary-text-highlight: var(--primary-text);--badge-primary-border-highlight: var(--badge-primary-border);--badge-secondary-bg: var(--secondary-background);--badge-secondary-text: var(--secondary-text);--badge-secondary-border: var(--black);--badge-secondary-bg-highlight: var(--secondary-background-contrast);--badge-secondary-text-highlight: var(--secondary-text-contrast);--badge-secondary-border-highlight: var(--badge-secondary-border);--badge-tertiary-bg: var(--tertiary-background);--badge-tertiary-text: var(--tertiary-text);--badge-tertiary-border: var(--black);--badge-tertiary-bg-highlight: var(--tertiary-background-contrast);--badge-tertiary-text-highlight: var(--tertiary-text-contrast);--badge-tertiary-border-highlight: var(--badge-tertiary-border);--badge-quaternary-bg: var(--quaternary-background);--badge-quaternary-text: var(--quaternary-text);--badge-quaternary-border: var(--black);--badge-quaternary-bg-highlight: var(--quaternary-background-contrast);--badge-quaternary-text-highlight: var(--quaternary-text-contrast);--badge-quaternary-border-highlight: var(--badge-quaternary-border);--link-badge-bg: var(--primary-background);--link-badge-text: var(--primary-text);--link-badge-bg-hover: var(--primary-background-contrast);--link-badge-text-hover: var(--primary-text-contrast);--default-hex-text: var(--color-dark-text);--default-hex-text-hover: var(--color-light-text);--variable-height-hex-width: 160px;--variable-height-hex-triangle-width: calc(var(--variable-height-hex-width) / 2);--variable-height-hex-triangle-height: calc(var(--variable-height-hex-width) * .2886 + 1px);--variable-height-hex-width-desktop: 200px;--variable-height-hex-triangle-width-desktop: calc(var(--variable-height-hex-width-desktop) / 2);--variable-height-hex-triangle-height-desktop: calc(var(--variable-height-hex-width-desktop) * .2886 + 1px);--variable-height-hex-top-color: var(--primary-background);--variable-height-hex-bottom-color: var(--primary-background-contrast);--variable-height-hex-top-color-detail: var(--quaternary-background-contrast);--variable-height-hex-bottom-color-detail: var(--quaternary-background);--outer-hex: var(--shade-6);--middle-hex: var(--shade-7);--inner-hex: var(--shade-9);--logo-text: var(--white);--outer-hex-hover: var(--shade-4);--middle-hex-hover: var(--shade-8);--inner-hex-hover: var(--shade-10);--logo-text-hover: var(--white);--nav-toggle-bg: var(--primary-background);--nav-toggle-text: var(--primary-text);--nav-toggle-bg-hover: var(--primary-background-contrast);--nav-toggle-text-hover: var(--primary-text-contrast);--nav-icon-color: var(--color-light-text);--nav-bg: var(--quaternary-background);--nav-text: var(--quaternary-text);--hh-link-color: var(--color-light-text);--hh-link-color-hover: var(--link-color);--hh-icon-color: var(--color-dark-text);--hh-icon-color-hover: var(--hh-icon-color);--caption-background: var(--secondary-background);--caption-text: var(--secondary-text);--project-index-intro-bg: var(--primary-background-contrast);--project-index-intro-text: var(--primary-text-contrast);--project-filter-toggle-width: 64px;--project-filter-text: var(--primary-text);--project-filter-text-contrast: var(--primary-text-contrast);--project-filter-bg-hover-top: var(--variable-height-hex-bottom-color);--project-filter-text-hover-top: var(--primary-text-contrast);--project-filter-bg-hover-bottom: var(--variable-height-hex-top-color);--project-filter-text-hover-bottom: var(--primary-text);--project-filter-toggle-bg: var(--secondary-background);--project-filter-toggle-bg-hover: var(--secondary-background-contrast);--project-filter-toggle-text: var(--secondary-text);--project-filter-toggle-text-hover: var(--secondary-text-contrast);--info-panel-bg-top-color: var(--primary-background);--info-panel-bg-bottom-color: var(--primary-background-contrast);--info-panel-text: var(--primary-text);--link-badge-bg: var(--tertiary-background);--link-badge-text: var(--tertiary-text);--link-badge-bg-hover: var(--tertiary-background-contrast);--link-badge-text-hover: var(--tertiary-text-contrast);--project-back-button-bg: var(--secondary-background);--project-back-button-bg-hover: var(--secondary-background-contrast);--project-back-button-text: var(--secondary-text);--project-back-button-text-hover: var(--secondary-text-contrast);--intro-panel-bg-top-color: #f7f5d3c2;--intro-panel-bg-bottom-color: var(--transparent);--intro-panel-text: var(--color-dark-text);--footer-content-bg-top-color: var(--quaternary-background);--footer-content-bg-bottom-color: var(--quaternary-background-contrast);--footer-content-text: var(--quaternary-text);--footer-nav-bg-top-color: var(--tertiary-background);--footer-nav-bg-bottom-color: var(--tertiary-background-contrast);--footer-decorative-hex-color-odd: var(--primary-background);--footer-decorative-hex-color-even: var(--primary-background-contrast)}:root{font-family:var(--font-body),system-ui,Avenir,Helvetica,Arial,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;display:flex;place-items:flex-start center;min-height:100vh;background:var(--body-bg);color:var(--body-color)}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:400}h4,h5,h6{font-family:var(--font-small-display);font-weight:600}p{font-family:var(--font-body);font-size:1.125rem;line-height:1.25;margin-bottom:16px}a,a:hover,a:visited{color:inherit;text-decoration:none}[role=button]:focus,a:focus,button:focus,input:focus,select:focus,textarea:focus{outline:2px solid var(--focus-shadow);outline-offset:2px;border-radius:var(--border-radius)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media (prefers-contrast: high){:root{--focus-shadow: #ff0080}button,[role=button],a{border:2px solid currentColor}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only:focus{position:static;width:auto;height:auto;padding:inherit;margin:inherit;overflow:visible;clip:auto;white-space:normal}button:focus-visible,[role=button]:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--focus-shadow);outline-offset:3px}@property --gradient-angle{syntax: "<angle>"; inherits: false; initial-value: 35deg;}@keyframes titleGlow{0%,to{filter:drop-shadow(var(--shadow-scale) var(--shadow-scale) var(--shade-1)) drop-shadow(var(--shadow-scale) var(--inverted-shadow-scale) var(--shade-4)) drop-shadow(var(--inverted-shadow-scale) var(--shadow-scale) var(--shade-7)) drop-shadow(var(--inverted-shadow-scale) var(--inverted-shadow-scale) var(--shade-10))}50%{filter:drop-shadow(var(--shadow-scale) var(--shadow-scale) var(--shade-3)) drop-shadow(var(--shadow-scale) var(--inverted-shadow-scale) var(--shade-6)) drop-shadow(var(--inverted-shadow-scale) var(--shadow-scale) var(--shade-9)) drop-shadow(var(--inverted-shadow-scale) var(--inverted-shadow-scale) var(--shade-12))}75%{filter:drop-shadow(var(--shadow-scale) var(--shadow-scale) var(--shade-5)) drop-shadow(var(--shadow-scale) var(--inverted-shadow-scale) var(--shade-8)) drop-shadow(var(--inverted-shadow-scale) var(--shadow-scale) var(--shade-11)) drop-shadow(var(--inverted-shadow-scale) var(--inverted-shadow-scale) var(--shade-3))}87%{filter:drop-shadow(var(--shadow-scale) var(--shadow-scale) var(--shade-7)) drop-shadow(var(--shadow-scale) var(--inverted-shadow-scale) var(--shade-10)) drop-shadow(var(--inverted-shadow-scale) var(--shadow-scale) var(--shade-1)) drop-shadow(var(--inverted-shadow-scale) var(--inverted-shadow-scale) var(--shade-5))}94%{filter:drop-shadow(var(--shadow-scale) var(--shadow-scale) var(--shade-9)) drop-shadow(var(--shadow-scale) var(--inverted-shadow-scale) var(--shade-12)) drop-shadow(var(--inverted-shadow-scale) var(--shadow-scale) var(--shade-3)) drop-shadow(var(--inverted-shadow-scale) var(--inverted-shadow-scale) var(--shade-7))}}@keyframes gradientAngleSpin{15%{--gradient-angle: 180deg}20%{--gradient-angle: 165deg}30%{--gradient-angle: 90deg}50%{--gradient-angle: 0deg}60%{--gradient-angle: 30deg}75%{--gradient-angle: -30deg}95%{--gradient-angle: 180deg }}.to-from-colors .badge-content{background:var(--from-color);background:linear-gradient(var(--gradient-angle),var(--to-color) 50%,var(--from-color) 50%);background-size:301% 100%;background-position:100% 0;transition:background-position var(--transition-rules-slow),color var(--transition-rules-slow);color:var(--from-text)}.to-from-colors:hover .badge-content{background-position:0 0;color:var(--to-text);transition:background-position var(--transition-rules-slow),color var(--transition-rules-slow)}a.skip-link{position:absolute;left:-999px;top:0;background:var(--white);color:var(--black);padding:8px 16px;z-index:1000;border-radius:4px;font-weight:700;transition:left .2s}a.skip-link:focus{left:16px;top:16px}.portfolio header{position:relative}.content,.constrained-content{max-width:var(--content-max-width);margin:var(--content-margin);padding:var(--content-padding)}.text-area-gradient{background-color:rgba(255,255,255,.2);padding:16px;border-radius:var(--border-radius);backdrop-filter:blur(10px)}.two-col{display:grid;grid-template-rows:1fr 1fr}@media screen and (min-width: 40em){.two-col{grid-template-columns:1fr 1fr}}@media screen and (min-width: 64em){.has-hex-header .content{--offset: 208px;margin:0 16px 0 var(--offset);width:calc(100vw - var(--offset) - 32px)}.content.two-col{grid-template-rows:auto;grid-template-columns:1fr 1fr}}@media screen and (min-width: 90em){.has-hex-header .content{--offset: 336px}}@media screen and (min-width: 120em){.has-hex-header .content{--offset: auto;margin:0 var(--offset)}}.title{font-size:var(--title-size);line-height:1.1}.subtitle{font-size:var(--subtitle-size);line-height:1.2}.overlay .title,.title.overlay,.overlay .subtitle,.subtitle.overlay{color:var(--overlay-title-color);animation:titleGlow 32s ease infinite}.copyright{font-size:.875rem}.card-container{container-name:card-container;container-type:inline-size}.card{overflow:hidden;border-radius:var(--border-radius)}.card-top{--image-width: 480;--image-height: 360;--height-ratio: calc(100% * var(--image-height) / var(--image-width));position:relative;aspect-ratio:4 / 3;width:100%;display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;pointer-events:none}.card-top .inner{width:100%;display:block;position:relative;pointer-events:all}.card-top .inner:before{content:"";position:absolute;bottom:0;left:0;height:100%;width:100%;background:rgba(0,0,0,.14);pointer-events:none;opacity:1;display:block}.card-top .header-image{position:absolute;top:0;left:0;display:flex;flex-direction:column;justify-content:space-between;align-items:flex-end;width:100%;height:100%;z-index:1;pointer-events:none}.card-top .header-content{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;flex-direction:column;justify-content:space-between;align-items:flex-end;padding:8px 16px 24px;z-index:1;pointer-events:none}.badges-list{display:flex;flex-direction:row;gap:8px;flex-wrap:wrap;justify-content:flex-end}.decorative-hex-border{position:absolute;bottom:-20px;left:50%;transform:translate(-50%);width:100%;z-index:1}.decorative-hex-border .hex-row{justify-content:center}.decorative-hex-border .decorative-hex{background:var(--info-panel-bg-top-color)}.info-panel{padding:32px 16px;display:flex;flex-direction:column;gap:32px;position:relative;background:var(--info-panel-bg-top-color);background:linear-gradient(180deg,var(--info-panel-bg-top-color) 10%,var(--info-panel-bg-bottom-color) 100%);color:var(--info-panel-text);z-index:0;height:100%}.variable-height-hex{--gradient-angle: 180deg;position:relative;height:100%;width:var(--variable-height-hex-width);padding:8px 0;display:flex;flex-direction:column;gap:16px;background:linear-gradient(var(--gradient-angle),var(--variable-height-hex-top-color),var(--variable-height-hex-bottom-color));filter:var(--drop-shadow)}.variable-height-hex:before,.variable-height-hex:after{content:"";pointer-events:none;position:absolute;top:calc((var(--variable-height-hex-triangle-height) * -1) + 1px);width:0px;height:0px;display:block;border-style:solid;border-width:0 var(--variable-height-hex-triangle-width) var(--variable-height-hex-triangle-height) var(--variable-height-hex-triangle-width);border-color:transparent transparent var(--variable-height-hex-top-color) transparent;transform:rotate(0)}.variable-height-hex:after{top:auto;bottom:calc((var(--variable-height-hex-triangle-height) * -1) + 1px);border-width:var(--variable-height-hex-triangle-height) var(--variable-height-hex-triangle-width) 0 var(--variable-height-hex-triangle-width);border-color:var(--variable-height-hex-bottom-color) transparent transparent transparent;filter:var(--drop-shadow-bottom)}@media screen and (min-width: 40em){.variable-height-hex{--variable-height-hex-width: var(--variable-height-hex-width-desktop);--variable-height-hex-triangle-width: var(--variable-height-hex-triangle-width-desktop);--variable-height-hex-triangle-height: var(--variable-height-hex-triangle-height-desktop)}}.caption{display:block;font-size:.875rem;color:var(--caption-text);text-align:center;background-color:var(--caption-background);padding:8px;margin:16px 0;border-radius:var(--border-radius)}.video-player video{width:100%;height:auto;display:block;aspect-ratio:16/9;object-fit:cover}.floating{width:100%;margin:16px auto}@container text-content (width > 500px){.floating{width:65%;margin:0 16px 24px}.float-right{float:right;margin-right:0}.float-left{float:left;margin-left:0}}@container text-content (width > 600px){.floating.half{width:50%}}.mosaic{display:grid;grid-template-rows:repeat(2,1fr);gap:16px}@container text-content (width > 500px){.mosaic{grid-template-rows:auto;grid-template-columns:repeat(2,1fr)}}.asset-caption video,.asset-caption img,.asset-caption .image{border-radius:var(--border-radius)}.text-content{container-name:text-content;container-type:inline-size}.text-content p,.text-content article{clear:both;margin-bottom:32px}.text-content a{color:var(--text-content-link);text-underline-offset:2px;text-decoration-thickness:1.5px;transition:color var(--transition-rules),text-decoration-color var(--transition-rules)}.text-content a:hover,.text-content a:focus,.text-content a:active,.text-content a:focus-visible{color:var(--text-content-link-highlight);text-decoration-color:var(--text-content-link-highlight);text-decoration:underline}.text-content ul{margin-left:16px}.text-content li{font-family:var(--font-body);font-size:1.125rem;line-height:1.25;margin-bottom:16px}.text-content .title{--title-size: 2rem}.text-content .subtitle{--subtitle-size: 1.5rem;line-height:1.5}.text-content .section-title{font-size:clamp(2rem,8vw,8rem);--shadow-scale: .75px;--inverted-shadow-scale: calc(var(--shadow-scale) * -1);line-height:1.2;animation:titleGlow 32s ease infinite;text-align:center;color:var(--body-color-contrast)}.text-content .section-description{text-align:center}html{scroll-behavior:smooth}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}@media screen and (min-width: 40em){.text-content ul{margin-left:24px}.text-content .title{--title-size: 2.25rem}.text-content .subtitle{--subtitle-size: 1.75rem}}:root:has(.outdoors-theme){--shade-1: #361008;--shade-2: #582F0E;--shade-3: #7F4F24;--shade-4: #936639;--shade-5: #785f3c;--shade-6: #A68A64;--shade-7: #B6AD90;--shade-8: #C2C5AA;--shade-9: #656D4A;--shade-10: #30422a;--shade-11: #414833;--shade-12: #333D29;--color-bg: #f6f9da;--black: #102222;--white: #fff}:root:has(.magic-escape){--shade-1: #71093B;--shade-2: #990B52;--shade-3: #d4458d;--shade-4: #CB8B15;--shade-5: #EAAA34;--shade-6: #e7cfa3;--shade-7: #749ED2;--shade-8: #467EC3;--shade-9: #1554a0;--shade-10: #023578;--shade-11: #022450;--shade-12: #0b0250;--color-bg: #F1F4F9;--black: #102222;--white: #fff}:root:has(.mystic-depths){--shade-1: #252933;--shade-2: #2a2533;--shade-3: #404556;--shade-4: #423041;--shade-5: #60515C;--shade-6: #8f7a81;--shade-7: #386775;--shade-8: #387573;--shade-9: #20504E;--shade-10: #205035;--shade-11: #193D31;--shade-12: #17292B;--color-bg: var(--shade-1);--black: #102222;--white: #fff}
