:where(.spe-card,.spe-card:hover,.spe-card:active,.spe-card:focus,.spe-card:focus-visible,.spe-card:focus-within,.spe-card:target){box-shadow:none;transform:none}.spe-card.svelte-gtdkvo{padding:var(--spe-card-padding,20px);color:var(--spe-font-color);background:var(--spe-bg-tint);border:1px solid color-mix(in srgb, var(--spe-font-color) 10%, transparent);border-radius:var(--spe-radius-med);display:block}.spe-card-simple.svelte-gtdkvo{background:0 0;border:none}.spe-card-simple.svelte-gtdkvo:hover,.spe-card-simple.svelte-gtdkvo:focus-within{background:var(--spe-bg-tint)}.spe-card-accent.svelte-gtdkvo{border-color:var(--spe-accent)}.spe-card-no-border.svelte-gtdkvo{border:none}.spe-card-no-bg-tint.svelte-gtdkvo{background:0 0}.spe-card-dashed-border.svelte-gtdkvo{border-style:dashed}.spe-pilltab.svelte-1el6z10{background:color-mix(in srgb, var(--spe-mode) 85%, var(--spe-font-color) 15%);border-radius:var(--spe-radius-low);align-items:center;gap:2px;padding:0;display:inline-flex}.vn-button{width:var(--vn-button-width,fit-content);max-width:var(--vn-button-max-width,100%);justify-content:center;align-items:center;gap:var(--vn-button-gap,.5em);padding:var(--vn-button-padding,.25em .5em);border:var(--vn-button-border,1px solid transparent);border-radius:var(--vn-radius);background:var(--vn-button-bg,transparent);color:inherit;font:inherit;font-family:var(--vn-button-font-family,var(--vn-font));line-height:var(--vn-button-line-height,1.2);cursor:pointer;transition:background-color var(--vn-button-duration,.12s) ease, border-color var(--vn-button-duration,.12s) ease;text-decoration:none;display:inline-flex}.vn-button:focus-visible{outline:var(--vn-button-focus-outline,2px solid currentColor);outline-offset:var(--vn-button-focus-outline-offset,2px)}.vn-button:disabled{cursor:not-allowed;opacity:var(--vn-button-disabled-opacity,.5)}.vn-button--simple:hover:not(:disabled){background:var(--vn-button-simple-hover-bg,color-mix(in srgb, currentColor 8%, transparent))}.vn-button--simple:active:not(:disabled){background:var(--vn-button-simple-active-bg,color-mix(in srgb, currentColor 14%, transparent))}.vn-button--solid{background:var(--vn-accent);color:var(--vn-accent-font-color)}.vn-button--solid:hover:not(:disabled){background:var(--vn-button-solid-hover-bg,color-mix(in srgb, var(--vn-accent) 90%, var(--vn-accent-font-color)))}.vn-button--solid:active:not(:disabled){background:var(--vn-button-solid-active-bg,color-mix(in srgb, var(--vn-accent) 80%, var(--vn-accent-font-color)))}.vn-button--tonal{background:var(--vn-button-tonal-bg,color-mix(in srgb, var(--vn-accent) 15%, transparent));color:var(--vn-accent)}.vn-button--tonal:hover:not(:disabled){background:var(--vn-button-tonal-hover-bg,color-mix(in srgb, var(--vn-accent) 22%, transparent))}.vn-button--tonal:active:not(:disabled){background:var(--vn-button-tonal-active-bg,color-mix(in srgb, var(--vn-accent) 30%, transparent))}.vn-button--outlined{border-color:var(--vn-button-outlined-border-color,color-mix(in srgb, var(--vn-accent) 50%, transparent));color:var(--vn-accent)}.vn-button--outlined:hover:not(:disabled){background:var(--vn-button-outlined-hover-bg,color-mix(in srgb, var(--vn-accent) 8%, transparent));border-color:var(--vn-accent)}.vn-button--outlined:active:not(:disabled){background:var(--vn-button-outlined-active-bg,color-mix(in srgb, var(--vn-accent) 14%, transparent))}.vn-nav.svelte-138pb4t{box-sizing:border-box;z-index:50;justify-content:space-between;align-items:center;gap:var(--vn-navbar-gap,16px);height:var(--vn-navbar-height,40px);padding:var(--vn-navbar-padding,0 20px);background:var(--vn-navbar-bg,var(--vn-bg-tint));border-bottom:var(--vn-navbar-border-width,1px) solid color-mix(in srgb, var(--vn-font-color) 10%, transparent);color:var(--vn-font-color);font-family:var(--vn-navbar-font-family,var(--vn-font));display:flex;position:fixed;top:0;left:0;right:0}.vn-nav-sticky.svelte-138pb4t{margin-bottom:var(--vn-navbar-sticky-bottom-margin,16px);position:sticky}.vn-nav-static.svelte-138pb4t{position:static}.vn-nav-blur.svelte-138pb4t{background:var(--vn-navbar-blur-bg,transparent);border-bottom:var(--vn-navbar-blur-border-width,1px) solid color-mix(in srgb, var(--vn-font-color) 8%, transparent)}.vn-nav-blur.svelte-138pb4t:before{content:"";z-index:-1;pointer-events:none;background:color-mix(in srgb, var(--vn-navbar-bg,var(--vn-bg-tint)) 70%, transparent);-webkit-backdrop-filter:blur(14px)saturate(140%);position:absolute;inset:0}.vn-nav-left.svelte-138pb4t,.vn-nav-right.svelte-138pb4t{align-items:center;display:flex}.vn-nav-left.svelte-138pb4t{gap:var(--vn-navbar-left-gap,16px);min-width:var(--vn-navbar-left-min-width,0);flex:auto}.vn-nav-right.svelte-138pb4t{gap:var(--vn-navbar-right-gap,16px);flex:none}.vn-nav.svelte-138pb4t h1,.vn-nav.svelte-138pb4t h2,.vn-nav.svelte-138pb4t h3,.vn-nav.svelte-138pb4t h4,.vn-nav.svelte-138pb4t h5,.vn-nav.svelte-138pb4t h6{margin:var(--vn-navbar-title-margin,0);min-width:var(--vn-navbar-title-min-width,0);max-width:var(--vn-navbar-title-max-width,100%);font-size:var(--vn-navbar-title-size,clamp(15px, 1.1rem + .35vw, 19px));font-weight:var(--vn-navbar-title-weight,700);line-height:var(--vn-navbar-title-line-height,1.2);letter-spacing:var(--vn-navbar-title-letter-spacing,-.01em);white-space:var(--vn-navbar-title-white-space,nowrap);overflow:var(--vn-navbar-title-overflow,hidden);text-overflow:var(--vn-navbar-title-text-overflow,ellipsis)}.vn-hl.svelte-n2994e{color:inherit;font-family:var(--vn-a-font-family,var(--vn-font));border-bottom:var(--vn-a-border-bottom,1.5px solid transparent);background-image:var(--vn-a-background-image,repeating-linear-gradient(to right, color-mix(in srgb, var(--vn-font-color) 40%, transparent) 0px, color-mix(in srgb, var(--vn-font-color) 40%, transparent) 4px, transparent 4px, transparent 8px));background-size:var(--vn-a-background-size,100% 1.5px);background-position:var(--vn-a-background-position,0 100%);transition:color var(--vn-a-duration,.12s) ease, background-image var(--vn-a-duration,.12s) ease, border-bottom-color var(--vn-a-duration,.12s) ease;background-repeat:repeat-x;text-decoration:none}.vn-hl.svelte-n2994e:hover{color:var(--vn-accent);border-bottom-color:var(--vn-accent);background-image:none}.vn-hl-accent.svelte-n2994e{color:var(--vn-accent)}.vn-hl-accent.svelte-n2994e:hover{color:var(--vn-accent);filter:var(--vn-a-accent-hover-filter,brightness(1.15))}.vn-a-icon.svelte-n2994e{flex:none;display:inline-flex}main.svelte-1uha8ag{min-height:100vh;padding-top:60px}.hero.svelte-1uha8ag{max-width:1200px;min-height:calc(100vh - var(--vn-navbar-height,40px));flex-wrap:wrap;justify-content:space-between;align-items:center;gap:40px;margin:0 auto;padding:80px 24px;display:flex}.hero-copy.svelte-1uha8ag{flex:1;min-width:300px}.eyebrow.svelte-1uha8ag{color:var(--spe-accent);margin-bottom:8px;font-weight:600}.hero-title.svelte-1uha8ag{margin:0 0 16px;font-size:56px;line-height:1.1}.hero-description.svelte-1uha8ag{max-width:480px;color:color-mix(in srgb, var(--spe-font-color) 80%, transparent);margin-bottom:24px}.cta-row.svelte-1uha8ag{flex-wrap:wrap;gap:12px;margin-bottom:24px;display:flex}.social-links.svelte-1uha8ag{flex-wrap:wrap;gap:16px;display:flex}.social-links.svelte-1uha8ag a,.footer-social.svelte-1uha8ag a{align-items:center;gap:6px;display:inline-flex}.social-icon.svelte-1uha8ag{width:16px;height:16px;-webkit-mask-image:var(--icon-url);mask-image:var(--icon-url);background-color:currentColor;flex-shrink:0;transition:background-color .15s,transform .15s;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.social-links.svelte-1uha8ag a:hover .social-icon,.footer-social.svelte-1uha8ag a:hover .social-icon{background-color:var(--spe-accent);transform:scale(1.12)}.hero-visual.svelte-1uha8ag{flex-shrink:0}.portrait-frame.svelte-1uha8ag{border-radius:var(--spe-radius-high);width:260px;height:260px;overflow:hidden}.portrait-frame.svelte-1uha8ag img:where(.svelte-1uha8ag){object-fit:cover;width:100%;height:100%}section[id]{scroll-margin-top:80px}.section.svelte-1uha8ag{max-width:1200px;margin:0 auto;padding:60px 24px}.section-label.svelte-1uha8ag{color:var(--spe-accent);margin-bottom:4px;font-weight:600}.section-title.svelte-1uha8ag{margin:0 0 32px;font-size:32px}.projects-grid.svelte-1uha8ag{columns:1;column-gap:8px;margin-bottom:32px}@media (width>=640px){.projects-grid.svelte-1uha8ag{columns:2}}@media (width>=1024px){.projects-grid.svelte-1uha8ag{columns:3}}.spe-card.project-card.project-card{break-inside:avoid;flex-direction:column;margin-bottom:8px;display:flex}.project-card h3{margin:0 0 6px;font-size:20px;line-height:1.25}.project-card p{color:color-mix(in srgb, var(--spe-font-color) 75%, transparent);margin:0 0 16px;line-height:1.55}.project-image{border-radius:var(--spe-radius-low);max-width:100%;margin-bottom:12px}.project-links{flex-wrap:wrap;gap:8px;margin-top:auto;display:flex}.more-row.svelte-1uha8ag{justify-content:center;display:flex}.contact-wrapper.svelte-1uha8ag{flex-wrap:wrap;gap:40px;display:flex}.contact-text.svelte-1uha8ag{flex:1;min-width:240px}.location-row.svelte-1uha8ag{color:color-mix(in srgb, var(--spe-font-color) 70%, transparent);gap:8px;margin-top:16px;display:flex}.contact-form-wip.svelte-1uha8ag{background:var(--spe-bg-tint);border-radius:var(--spe-radius-med);text-align:center;min-width:240px;color:color-mix(in srgb, var(--spe-font-color) 60%, transparent);flex:1;padding:40px}.site-footer.svelte-1uha8ag{border-top:1px solid color-mix(in srgb, var(--spe-font-color) 10%, transparent);padding:40px 24px}.footer-grid.svelte-1uha8ag{flex-wrap:wrap;justify-content:space-between;gap:20px;max-width:1200px;margin:0 auto;display:flex}.footer-social.svelte-1uha8ag{gap:16px;display:flex}.footer-tech.svelte-1uha8ag{gap:24px;display:flex}.tech-item.svelte-1uha8ag{color:color-mix(in srgb, var(--spe-font-color) 60%, transparent);flex-direction:column;font-size:13px;display:flex}.footer-copyright.svelte-1uha8ag{text-align:center;max-width:1200px;color:color-mix(in srgb, var(--spe-font-color) 50%, transparent);margin:24px auto 0;font-size:13px}.lang-row{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:8px;display:flex}.lang-pill{color:var(--lang-color);background:color-mix(in srgb, var(--lang-color) 15%, transparent);border:1px solid color-mix(in srgb, var(--lang-color) 35%, transparent);border-radius:999px;align-items:center;gap:6px;padding:2px 10px 2px 6px;font-size:12px;font-weight:600;line-height:1.6;display:inline-flex}.lang-icon{fill:currentColor;flex-shrink:0;width:12px;height:12px}.project-image-button{background:0 0;border:none;width:100%;padding:0;display:block;cursor:zoom-in!important}.project-image-button:hover{box-shadow:none;background:0 0!important}.project-image{-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.project-image:hover{opacity:1;filter:none}.image-overlay{z-index:1000;background:#000000d9;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.image-close{color:#fff;cursor:pointer;background:#ffffff26;border:none;border-radius:999px;width:40px;height:40px;font-size:28px;line-height:1;position:absolute;top:16px;right:16px}.fullscreen-image{border-radius:var(--spe-radius-low);max-width:90vw}.image-download{color:#fff;background:#ffffff26;border-radius:999px;padding:8px 16px;font-weight:600;text-decoration:none;position:absolute;bottom:16px}.lang-icon svg{width:100%;height:100%;display:block}.license-group{white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.lang-separator{color:color-mix(in srgb, var(--spe-font-color) 60%, transparent);font-size:16px;line-height:1.6;transform:translateY(-2px)}.license-text{color:color-mix(in srgb, var(--spe-font-color) 75%, transparent);font-size:12px;font-weight:600;line-height:1.6}
