.nav-link[data-astro-cid-uljtwisc]{color:var(--color-primary);transition:color var(--transition-fast), transform var(--transition-fast);will-change:transform;text-decoration:none}.nav-link[data-astro-cid-uljtwisc]:hover,.nav-link[data-astro-cid-uljtwisc]:focus-visible{color:color-mix(in srgb, var(--color-primary) 88%, #000);text-decoration:none;transform:translateY(-.2rem)}.menu[data-astro-cid-uljtwisc]{cursor:pointer;background:0 0;border:none;display:none}@media (width<=700px){.menu[data-astro-cid-uljtwisc]{flex-direction:column;justify-content:center;gap:4px;width:28px;height:28px;display:flex}.menu[data-astro-cid-uljtwisc] span[data-astro-cid-uljtwisc]{background:var(--color-primary);width:100%;height:2px;transition:transform var(--transition-base), opacity var(--transition-base);display:block}.menu[data-astro-cid-uljtwisc][aria-expanded=true] span[data-astro-cid-uljtwisc]:first-child{transform:rotate(45deg)translate(.5px,8px)}.menu[data-astro-cid-uljtwisc][aria-expanded=true] span[data-astro-cid-uljtwisc]:nth-child(2){opacity:0}.menu[data-astro-cid-uljtwisc][aria-expanded=true] span[data-astro-cid-uljtwisc]:nth-child(3){transform:rotate(-45deg)translate(.5px,-8px)}.nav-wrapper[data-astro-cid-uljtwisc] .banner__nav[data-astro-cid-uljtwisc],.nav-wrapper[data-astro-cid-uljtwisc] .banner__nav[data-astro-cid-uljtwisc] a[data-astro-cid-uljtwisc],.nav-wrapper[data-astro-cid-uljtwisc] .cta-contact[data-astro-cid-uljtwisc]{display:none!important}.nav-wrapper[data-astro-cid-uljtwisc]{gap:.5rem}.drawer-nav[data-astro-cid-uljtwisc]{top:var(--header-height);height:calc(100vh - var(--header-height));background:var(--color-surface);border-left:1px solid var(--color-border);width:85%;max-width:320px;box-shadow:-8px 0 24px color-mix(in srgb, var(--color-primary) 12%, transparent);opacity:0;z-index:9998;padding:var(--space-gap-lg);gap:var(--space-gap-md);pointer-events:auto;flex-direction:column;transition:transform .22s,opacity .22s;display:flex;position:fixed;left:auto;right:0;overflow-y:auto;transform:translate(100%)}.drawer-nav[data-astro-cid-uljtwisc].open{opacity:1;transform:translate(0)}.drawer-nav[data-astro-cid-uljtwisc] .nav-link[data-astro-cid-uljtwisc],.drawer-nav[data-astro-cid-uljtwisc] .button[data-astro-cid-uljtwisc]{display:block}}@font-face{font-family:Lexend;src:url(/fonts/Lexend-ExtraLight.woff2)format("woff2");font-weight:200;font-style:normal;font-display:swap}@font-face{font-family:Lexend;src:url(/fonts/Lexend-Light.woff2)format("woff2");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:Lexend;src:url(/fonts/Lexend-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Lexend;src:url(/fonts/Lexend-Medium.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Lexend;src:url(/fonts/Lexend-SemiBold.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Lexend;src:url(/fonts/Lexend-Bold.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Lexend;src:url(/fonts/Lexend-ExtraBold.woff2)format("woff2");font-weight:800;font-style:normal;font-display:swap}@font-face{font-family:Lexend;src:url(/fonts/Lexend-Black.woff2)format("woff2");font-weight:900;font-style:normal;font-display:swap}:root{--color-background:#f3f0e8;--color-foreground:#24322b;--color-surface:#d9dfd1;--color-primary:#0f3d2e;--color-secondary:#b66f52;--color-on-primary:#f8f5ee;--color-text-muted:color-mix(in srgb, var(--color-foreground) 78%, transparent);--color-text-subtle:color-mix(in srgb, var(--color-foreground) 60%, transparent);--color-border:color-mix(in srgb, var(--color-foreground) 12%, transparent);--font-lexend:"Lexend", sans-serif;--text-hero:clamp(2.5rem, 8vw, 4.5rem);--text-h2:clamp(1.75rem, 4vw, 2.5rem);--text-h3:clamp(1.25rem, 3vw, 1.5rem);--text-lead:clamp(1rem, 1.6vw, 1.15rem);--text-body:1rem;--text-sm:.85rem;--text-xs:.68rem;--weight-regular:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--weight-extrabold:800;--leading-tight:1.2;--leading-normal:1.45;--leading-relaxed:1.6;--leading-prose:1.65;--space-section-y-top:clamp(3rem, 8vw, 5rem);--space-section-y-bottom:clamp(2rem, 5vw, 3rem);--space-gap-sm:.35rem;--space-gap-md:.75rem;--space-gap-lg:1rem;--space-gap-xl:1.5rem;--space-gap-2xl:2rem;--radius-sm:.25rem;--radius-md:.5rem;--radius-lg:1rem;--radius-pill:999px;--shadow-sm:0 2px 4px color-mix(in srgb, var(--color-primary) 5%, transparent);--shadow-md:0 .35rem .9rem color-mix(in srgb, var(--color-primary) 0%, transparent);--shadow-hover:0 .45rem 1.1rem color-mix(in srgb, var(--color-primary) 18%, transparent);--header-height:4rem;--content-max:min(100% - 2rem, 1040px);--prose-max:42rem;--transition-base:.2s ease;--transition-slow:.35s ease;--transition-fast:.18s ease;color-scheme:light}html.dark{color-scheme:dark;--color-background:#1a221e;--color-foreground:#e8ebe4;--color-surface:#2a3530;--color-primary:#6db896;--color-secondary:#d4927a;--color-on-primary:#0f1a16}@media (prefers-color-scheme:dark){:root:not(.light){--color-background:#1a221e;--color-foreground:#e8ebe4;--color-surface:#2a3530;--color-primary:#6db896;--color-secondary:#d4927a;--color-on-primary:#0f1a16}}@media (prefers-reduced-motion:no-preference){html{transition:background-color var(--transition-slow), color var(--transition-slow)}}html{scrollbar-color:var(--color-foreground) var(--color-background);scrollbar-width:thin}::selection{background:color-mix(in srgb, var(--color-secondary) 36%, var(--color-background));color:var(--color-foreground)}body{font-family:var(--font-lexend);background-color:var(--color-background);color:var(--color-foreground);margin:0}code:not(pre code){background:var(--color-surface);border-radius:var(--radius-sm);padding:.1rem .35rem;font-size:.9em}a,button{transition:color var(--transition-base), background-color var(--transition-base), border-color var(--transition-base), box-shadow var(--transition-base), opacity var(--transition-base), transform var(--transition-base)}.button{justify-content:center;align-items:center;gap:var(--space-gap-md);border-radius:var(--radius-lg);min-height:1rem;font-family:var(--font-lexend);font-size:.88rem;font-weight:var(--weight-bold);line-height:var(--leading-tight);cursor:pointer;box-shadow:var(--shadow-md);border:2px solid #0000;padding:.8rem 1rem;text-decoration:none;display:inline-flex}.button--primary{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-on-primary)}.button--primary:hover{background:color-mix(in srgb, var(--color-primary) 88%, #000);border-color:color-mix(in srgb, var(--color-primary) 88%, #000);box-shadow:var(--shadow-hover);transform:translateY(-1px)}.button--secondary{background:color-mix(in srgb, var(--color-surface) 65%, var(--color-background));border-color:color-mix(in srgb, var(--color-foreground) 22%, transparent);color:var(--color-foreground)}.button--secondary:hover{border-color:var(--color-primary);color:var(--color-primary);transform:translateY(-1px)}.button--topmargin{margin-top:var(--space-gap-md)}.button:focus-visible{outline:2px solid var(--color-foreground);outline-offset:3px}.text-link{font-weight:var(--weight-bold);color:var(--color-primary);text-decoration:none}.text-link:hover{text-decoration:underline}.content-card__tag{width:fit-content;max-width:100%;font-size:var(--text-xs);font-weight:var(--weight-semibold);letter-spacing:.02em;color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 14%, var(--color-surface));border:1px solid color-mix(in srgb, var(--color-primary) 30%, transparent);border-radius:var(--radius-pill);overflow-wrap:break-word;padding:.28rem .55rem;line-height:1.35;display:inline-block}.case-study-card{font-size:var(--text-sm);font-weight:var(--weight-medium);background:var(--color-surface);color:var(--color-foreground);border-radius:var(--radius-md);border:1px solid var(--color-border);box-shadow:var(--shadow-sm);transition:transform var(--transition-base), box-shadow var(--transition-base), border-color var(--transition-base);padding:.35rem .75rem;display:inline-block}.case-study-card:hover{box-shadow:0 4px 8px color-mix(in srgb, var(--color-primary) 8%, transparent);border-color:color-mix(in srgb, var(--color-primary) 30%, transparent);transform:translateY(-2px)}.case-study__media{gap:var(--space-gap-md);max-width:var(--prose-tight);display:flex}main{animation:.45s both page-in;overflow-x:hidden}@media (prefers-reduced-motion:no-preference){main{transition:transform var(--transition-base), opacity var(--transition-base)}}@keyframes page-in{0%{opacity:0;transform:translateY(.4rem)}to{opacity:1;transform:translateY(0)}}.page{width:var(--content-max);margin:0 auto}.page-hero{padding:var(--space-section-y-top) 0 var(--space-section-y-bottom)}.page-hero .eyebrow{margin:0 0 var(--space-gap-md);color:var(--color-primary);font-weight:var(--weight-bold);letter-spacing:.06em;text-transform:uppercase;font-size:.8rem}.page-hero h1{font-size:var(--text-hero);letter-spacing:-.02em;max-width:14ch;margin:0;line-height:1.05}.page-hero .lead{max-width:var(--prose-max);font-size:var(--text-lead);line-height:var(--leading-relaxed);color:var(--color-text-muted);margin:1.25rem 0 0}.page-hero .work-date{margin:var(--space-gap-md) 0 0;color:var(--color-text-subtle);font-size:.95rem;font-weight:var(--weight-medium)}.content-grid{gap:var(--space-gap-lg);padding-bottom:var(--space-section-y-top);grid-template-columns:repeat(auto-fill,minmax(min(100%,16rem),1fr));display:grid}.content-card{background:var(--color-surface);border-radius:var(--radius-md);border:1px solid var(--color-border);color:inherit;box-shadow:var(--shadow-sm);flex-direction:column;text-decoration:none;display:flex;overflow:hidden}.content-card__media{color:inherit;margin:0;text-decoration:none;display:block}.content-card__image{box-sizing:border-box;aspect-ratio:16/9;object-fit:cover;object-position:top center;object-position:top;width:100%;max-width:100%;height:100%;display:block}.content-card__image--logo{object-fit:contain;box-sizing:border-box;width:100%;max-width:100%;height:auto;padding:var(--space-gap-lg) var(--space-gap-2xl);margin:0 auto}.content-card__logo{width:min(10rem,55%);height:auto;margin-bottom:var(--space-gap-md);object-fit:contain;display:block}.content-card__logo--circle{background-color:var(--project-colour-light,var(--color-surface));aspect-ratio:1;padding:var(--space-gap-md);box-sizing:border-box;border-radius:50%}.content-card__body{gap:var(--space-gap-sm);flex-direction:column;padding:.85rem .85rem 1rem;display:flex}.content-card__header{gap:.2rem;display:grid}.project-list{margin:0;padding-left:0;list-style:none}.project-item{margin:.2rem 0}.content-card__tags{gap:var(--space-gap-sm);flex-wrap:wrap;margin-top:.2rem;display:flex}.content-card .content-card__label{color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 14%, var(--color-surface));border-color:color-mix(in srgb, var(--color-primary) 30%, transparent)}.content-card h2,.content-card h3{margin:0;font-size:1.05rem;line-height:1.25}.content-card__body p{font-size:var(--text-sm);line-height:var(--leading-normal);color:color-mix(in srgb, var(--color-foreground) 72%, transparent);margin:0}.content-card__date{font-size:.8rem;line-height:var(--leading-normal);color:color-mix(in srgb, var(--color-foreground) 55%, transparent);font-weight:var(--weight-medium);margin:0}.content-card__meta{font-size:var(--text-sm);grid-template-columns:max-content 1fr;gap:.35rem .75rem;margin:.35rem 0 0;display:grid}.content-card__meta dt{color:var(--color-primary);font-weight:var(--weight-bold)}.content-card__meta dd{color:color-mix(in srgb, var(--color-foreground) 76%, transparent);margin:0}.content-card__actions{gap:var(--space-gap-md);flex-wrap:wrap;margin-top:auto;display:flex}.content-card--compact{background:var(--color-surface);color:var(--color-foreground)}.content-card--detail{width:min(100%,68rem)}.content-card--themed{--card-bg:var(--project-colour-light);--card-fg:var(--project-colour-dark);background:var(--card-bg);color:var(--card-fg);border-color:color-mix(in srgb, var(--card-fg) 18%, transparent)}html.dark .content-card--themed{--card-bg:var(--project-colour-dark);--card-fg:var(--project-colour-light)}@media (prefers-color-scheme:dark){:root:not(.light) .content-card--themed{--card-bg:var(--project-colour-dark);--card-fg:var(--project-colour-light)}}.content-card--themed .content-card__body p{color:color-mix(in srgb, var(--card-fg) 72%, transparent)}.content-card--themed .content-card__date{color:color-mix(in srgb, var(--card-fg) 55%, transparent)}.content-card--themed .content-card__meta dt{color:var(--card-fg)}.content-card--themed .content-card__meta dd{color:color-mix(in srgb, var(--card-fg) 76%, transparent)}.content-card--themed .content-card__tag{color:var(--card-fg);background:color-mix(in srgb, var(--card-fg) 14%, var(--card-bg));border-color:color-mix(in srgb, var(--card-fg) 30%, transparent)}.content-card--themed .button--primary{background:var(--card-fg);border-color:var(--card-fg);color:var(--card-bg)}.content-card--themed .button--primary:hover{background:color-mix(in srgb, var(--card-fg) 88%, #000);border-color:color-mix(in srgb, var(--card-fg) 88%, #000)}.content-card--themed .button--secondary{color:var(--card-fg);border-color:color-mix(in srgb, var(--card-fg) 30%, transparent);background:color-mix(in srgb, var(--card-bg) 65%, transparent)}.content-card--themed .button--secondary:hover{border-color:var(--card-fg);color:var(--card-fg)}.content-card--detail .content-card__body{justify-content:center;gap:var(--space-gap-md);padding:clamp(1.25rem,4vw,3rem)}.content-card--detail .content-card__image{width:100%;height:100%;max-height:800px;aspect-ratio:unset;object-fit:cover;object-position:top}.content-card--detail h3{font-size:clamp(1.5rem,4vw,2.5rem)}@media (width>=768px){.content-card--detail{grid-template-columns:minmax(0,1fr) minmax(18rem,.9fr);display:grid}.content-card--detail .content-card__media{min-height:0;overflow:hidden}.content-card--media-right .content-card__media{order:2}}.project-divider{--divider-from-bg:var(--divider-from-light);--divider-to-bg:var(--divider-to-light);--divider-stroke-from:var(--divider-stroke-from-light);--divider-stroke-to:var(--divider-stroke-to-light);width:100%;line-height:0}html.dark .project-divider{--divider-from-bg:var(--divider-from-dark);--divider-to-bg:var(--divider-to-dark);--divider-stroke-from:var(--divider-stroke-from-dark);--divider-stroke-to:var(--divider-stroke-to-dark)}@media (prefers-color-scheme:dark){:root:not(.light) .project-divider{--divider-from-bg:var(--divider-from-dark);--divider-to-bg:var(--divider-to-dark);--divider-stroke-from:var(--divider-stroke-from-dark);--divider-stroke-to:var(--divider-stroke-to-dark)}}.project-divider__svg{width:100%;height:clamp(3.5rem,9vw,6.5rem);display:block}.project-divider__fill--from{fill:var(--divider-from-bg)}.project-divider__fill--to{fill:var(--divider-to-bg)}.project-divider__stop--from{stop-color:var(--divider-stroke-from)}.project-divider__stop--to{stop-color:var(--divider-stroke-to)}.project-divider__curve{stroke-width:2.5px;stroke-linecap:round}.project-showcase{width:100vw;margin-left:calc(50% - 50vw);display:grid}.project-showcase .content-card--detail{width:100%;box-shadow:none;box-sizing:border-box;border:0;border-radius:0;padding-inline:max(1rem,50vw - 520px)}.project-showcase .content-card__media{box-sizing:border-box;padding:clamp(.75rem,2vw,1.5rem);overflow:hidden}.project-showcase .content-card__image{border-radius:var(--radius-md);width:100%;height:100%;aspect-ratio:unset;object-fit:cover;object-position:top;transition:box-shadow var(--transition-base), transform var(--transition-base)}.project-showcase .content-card__media:hover .content-card__image,.project-showcase .content-card__media:focus-visible .content-card__image{box-shadow:var(--shadow-hover);transform:scale(1.015)}.content-card__media--iframe{position:relative;overflow:hidden}.content-card__iframe{background:var(--color-surface);border:0;width:100%;height:100%;min-height:420px;display:block}.project-showcase .content-card__iframe{border-radius:var(--radius-md)}.content-card--detail:not(:has(.content-card__media)){grid-template-columns:1fr}.lab-directory{gap:var(--space-gap-2xl);padding-bottom:var(--space-section-y-top);display:grid}.lab-section-card .carousel,.lab-section-card .content-card__actions{margin-top:var(--space-gap-md)}.lab-collection,.lab-section-showcase{gap:var(--space-gap-lg);padding-bottom:var(--space-section-y-top);grid-template-columns:repeat(auto-fill,minmax(min(100%,18rem),1fr));display:grid}.lab-section-showcase .content-card--compact{width:100%}@media (prefers-reduced-motion:reduce){.project-showcase .content-card__image{transition:none}.project-showcase .content-card__media:hover .content-card__image,.project-showcase .content-card__media:focus-visible .content-card__image{transform:none}}.case-study__header{gap:var(--space-gap-md);max-width:var(--prose-max);padding-bottom:var(--space-gap-2xl);border-bottom:1px solid var(--color-border);margin-bottom:var(--space-gap-2xl);display:grid}.case-study .content-card__meta{margin-top:0}.case-study .content-card__meta dt{color:var(--color-primary)}.case-study .content-card__label{color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 14%, var(--color-surface));border-color:color-mix(in srgb, var(--color-primary) 30%, transparent)}.case-study .button--secondary{border-color:color-mix(in srgb, var(--color-foreground) 22%, transparent);color:var(--color-primary)}.content-section{border-top:1px solid var(--color-border);padding-top:var(--space-gap-xl);margin-bottom:2.5rem}.page .content-section:last-of-type{padding-bottom:var(--space-section-y-top)}.content-section h2{margin:0 0 var(--space-gap-lg);font-size:1.35rem}.header{z-index:9999;box-sizing:border-box;height:var(--header-height);background-color:var(--color-surface);border-bottom:1px solid var(--color-foreground);padding:0 var(--space-gap-lg);justify-content:space-between;align-items:center;gap:var(--space-gap-lg);display:flex;position:sticky;top:0}.banner__wordmark{font-weight:var(--weight-extrabold);margin:0;font-size:1.05rem}.banner__wordmark a{color:var(--color-foreground);text-decoration:none}.nav-wrapper{align-items:center;gap:var(--space-gap-lg);display:flex}.banner__nav{gap:var(--space-gap-md);align-items:center;display:flex}.banner__nav .nav-link{font-weight:var(--weight-bold);padding:.4rem .5rem}.cta-contact{border-radius:.6rem;padding:.45rem .8rem;font-size:.92rem}.section-note{max-width:var(--prose-max);margin:-.35rem 0 var(--space-gap-lg);font-size:.95rem;line-height:var(--leading-relaxed);color:color-mix(in srgb, var(--color-foreground) 72%, transparent)}.section-empty{max-width:var(--prose-max);padding:.85rem var(--space-gap-lg);border:1px dashed color-mix(in srgb, var(--color-foreground) 24%, transparent);border-radius:var(--radius-md);color:color-mix(in srgb, var(--color-foreground) 66%, transparent);background:color-mix(in srgb, var(--color-surface) 54%, transparent);margin:0}.prose{max-width:var(--prose-max);line-height:var(--leading-prose)}.prose h2{margin-top:var(--space-gap-2xl)}.prose p:first-child{margin-top:0}.prose pre{background:var(--colour-dark);color:var(--colour-light);border-radius:var(--radius-md);padding:var(--space-gap-lg);overflow-x:auto}.prose img{max-width:100%;height:auto;margin:var(--space-gap-xl) 0;border-radius:var(--radius-md);border:1px solid var(--color-primary);box-shadow:0 4px 12px color-mix(in srgb, var(--color-primary) 8%, transparent);display:block}.prose p>img{margin:0}.prose a{color:var(--color-secondary);text-decoration:underline dotted}.prose a:hover{text-decoration-style:solid}.prose table{border-collapse:collapse;width:100%;margin:var(--space-gap-xl) 0}.prose table th{background:color-mix(in srgb, var(--color-primary) 14%, var(--color-surface));color:var(--color-foreground);font-weight:var(--weight-bold);padding:var(--space-gap-md);text-align:left;border:1px solid var(--color-border)}.prose table td{padding:var(--space-gap-md);border:1px solid var(--color-border)}.prose table tr:nth-child(2n){background:color-mix(in srgb, var(--color-surface) 50%, transparent)}.prose table tr:hover{background:color-mix(in srgb, var(--color-primary) 8%, var(--color-surface))}.prose blockquote{margin:var(--space-gap-xl) 0;padding-left:var(--space-gap-lg);border-left:.25rem solid var(--color-primary)}.back-link{margin-bottom:var(--space-gap-xl);font-size:.9rem;font-weight:var(--weight-semibold);color:var(--color-primary);text-decoration:none;display:inline-block}.back-link:hover{text-decoration:underline}.connect-list{gap:var(--space-gap-md);max-width:36rem;margin:0;padding:0;list-style:none;display:grid}.connect-link{padding:.9rem var(--space-gap-lg);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);color:inherit;transition:border-color var(--transition-base), box-shadow var(--transition-base), transform var(--transition-base);align-items:center;gap:.85rem;text-decoration:none;display:flex}.connect-link:hover{border-color:var(--color-primary);box-shadow:0 .5rem 1.2rem color-mix(in srgb, var(--color-foreground) 10%, transparent);transform:translateY(-1px)}@media (prefers-reduced-motion:reduce){.connect-link{transition:border-color var(--transition-base)}.connect-link:hover{transform:none}}.connect-link__icon{border-radius:var(--radius-sm);background:color-mix(in srgb, var(--color-primary) 14%, var(--color-surface));width:2.25rem;height:2.25rem;color:var(--color-primary);transition:background-color var(--transition-base), color var(--transition-base), transform var(--transition-base);flex-shrink:0;justify-content:center;align-items:center;display:flex}.connect-link:hover .connect-link__icon{background:var(--color-primary);color:var(--color-on-primary);transform:scale(1.04)}.connect-link__label{font-weight:var(--weight-bold);font-size:.95rem;line-height:var(--leading-tight);display:block}.connect-link__value{font-size:var(--text-sm);color:color-mix(in srgb, var(--color-foreground) 68%, transparent);margin-top:.15rem;display:block}.form-note{max-width:var(--prose-max);color:color-mix(in srgb, var(--color-foreground) 72%, transparent);margin:0 0 1.25rem;font-size:.9rem;line-height:1.55}.contact-form{flex-direction:column;gap:1.1rem;max-width:36rem;display:flex}.form-field{flex-direction:column;gap:.4rem;display:flex}.form-field label{font-weight:var(--weight-semibold);font-size:.9rem}.form-field .required{font-weight:var(--weight-regular);color:color-mix(in srgb, var(--color-foreground) 55%, transparent);font-size:.8rem}.contact-form input,.contact-form textarea{font-family:var(--font-lexend);font-size:var(--text-body);color:var(--color-foreground);background:var(--color-surface);border:1px solid var(--color-border);padding:.65rem var(--space-gap-md);transition:border-color var(--transition-base), box-shadow var(--transition-base);border-radius:.4rem;line-height:1.4}.contact-form input:focus,.contact-form textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px color-mix(in srgb, var(--color-primary) 22%, transparent);outline:none}.contact-form textarea{resize:vertical;min-height:8rem}.form-submit{border:0;align-self:flex-start}.carousel{--carousel-control-size:clamp(2.65rem, 7vw, 3.25rem);margin-top:1.25rem;position:relative}.carousel:before,.carousel:after{top:0;bottom:var(--space-gap-md);z-index:1;content:"";pointer-events:none;opacity:.88;width:clamp(1.25rem,4vw,3rem);transition:opacity var(--transition-base);position:absolute}.carousel__track{overscroll-behavior-x:contain;scroll-snap-type:x mandatory;padding:.15rem 0 var(--space-gap-md);-webkit-overflow-scrolling:touch;scrollbar-width:none;touch-action:pan-x pan-y pinch-zoom;transition:scroll-padding var(--transition-base);gap:clamp(.85rem,2vw,1.15rem);scroll-padding-inline:0;display:flex;overflow-x:auto}.carousel__track::-webkit-scrollbar{display:none}.carousel__control{top:calc(50% - (var(--space-gap-md) / 2));z-index:2;width:var(--carousel-control-size);border:1px solid color-mix(in srgb, var(--color-foreground) 16%, transparent);min-width:44px;height:clamp(4.25rem,24vw,7rem);min-height:44px;color:var(--color-foreground);background:color-mix(in srgb, var(--color-background) 78%, transparent);box-shadow:0 .45rem 1rem color-mix(in srgb, var(--color-foreground) 10%, transparent);opacity:.74;cursor:pointer;backdrop-filter:blur(8px);place-items:center;padding:0;display:inline-grid;position:absolute;transform:translateY(-50%)}.carousel__control--previous{border-radius:0 var(--radius-md) var(--radius-md) 0;left:0}.carousel__control--next{border-radius:var(--radius-md) 0 0 var(--radius-md);right:0}.carousel__control:hover,.carousel__control:focus-visible{color:var(--color-primary);border-color:color-mix(in srgb, var(--color-primary) 42%, transparent);opacity:.96}.carousel__control:focus-visible{outline:2px solid var(--color-primary);outline-offset:3px}.carousel__control:active{transform:translateY(-50%)scale(.98)}.carousel__control:disabled{opacity:.28;cursor:default;box-shadow:none}.carousel__control:disabled:hover{color:var(--color-foreground);border-color:color-mix(in srgb, var(--color-foreground) 16%, transparent)}.carousel__control svg{pointer-events:none;width:1.35rem;height:1.35rem}.carousel:focus-within:before,.carousel:focus-within:after,.carousel:hover:before,.carousel:hover:after{opacity:1}.carousel__track:focus-visible{outline:2px solid var(--color-primary);outline-offset:4px;border-radius:var(--radius-sm)}.carousel__slide{scroll-snap-align:start;scroll-snap-stop:always;-webkit-user-drag:none;flex:0 0 87.5%;min-width:87.5%;padding:0;overflow:hidden}@media (prefers-reduced-motion:reduce){.carousel__track{scroll-behavior:auto}.carousel__control{transition:none}}.cv-card,.cv-card__header{margin-bottom:0}.cv-card__title{color:var(--color-foreground);margin:0;font-size:1.25rem}.cv-card__position{font-weight:var(--weight-medium);color:var(--color-primary);margin:0}.cv-card__description{margin-bottom:0}.cv-card__casestudies{padding-top:var(--space-gap-md);border-top:1px solid var(--color-border);margin-top:0}.cv-card__casestudies-title{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:color-mix(in srgb, var(--color-foreground) 70%, transparent);margin:0}.footer__logo{font-size:2rem;font-weight:var(--weight-extrabold);color:var(--color-primary);line-height:1}.footer h4{line-height:var(--leading-tight);margin:0}.footer{background:var(--color-background);color:var(--color-foreground);flex-direction:column;justify-content:center;align-items:center;padding:4rem 0;display:flex}.footer__container{justify-content:space-between;gap:var(--space-gap-2xl);width:90%;max-width:1200px;padding:var(--space-gap-2xl);box-sizing:border-box;flex-wrap:wrap;display:flex}.footer__brand{text-align:left;font-size:1.5rem;font-weight:var(--weight-semibold);color:var(--color-primary);gap:var(--space-gap-md);flex-direction:column;flex:0 220px;min-width:180px;display:flex}.footer__social{gap:var(--space-gap-md);align-items:center;display:flex}.footer hr{border:none;border-top:.25rem solid var(--color-primary);width:70%;margin:0}.footer__social-link{color:var(--color-primary);opacity:1;transition:opacity var(--transition-base), transform var(--transition-base), background var(--transition-base);border:1.5px solid var(--color-primary);border-radius:6px;justify-content:center;align-items:center;padding:.4rem;display:flex}.footer__social-link:hover{opacity:1;background:var(--color-primary);color:var(--color-surface);transform:translateY(-2px)}.footer__columns{flex-direction:row;flex:420px;justify-content:space-between;gap:3rem;min-width:160px;display:flex}.footer__column{gap:var(--space-gap-md);flex-direction:column;flex:140px;min-width:120px;display:flex}.footer__info-title{color:var(--color-primary);margin:0;font-size:1.125rem}.footer__list{margin:0;padding:0;list-style:none}.footer__info-link{color:var(--color-foreground);transition:color var(--transition-base), transform var(--transition-base);padding:.25rem 0;text-decoration:none;display:block}.footer__info-link:hover{color:var(--color-primary);transform:translate(4px)}@media (width<=840px){.footer__container{padding:var(--space-gap-xl);align-items:stretch;gap:var(--space-gap-xl);flex-direction:column}.footer__brand{flex:0 auto;min-width:auto}.footer__columns{flex:auto}}@media (width<=540px){.footer__container{padding:var(--space-gap-lg);align-items:stretch;gap:var(--space-gap-lg);flex-direction:column}.footer__brand{text-align:center;order:0;align-items:center;width:100%}.footer__columns{gap:var(--space-gap-lg);flex-direction:column;order:1;width:100%}.footer__column{width:100%;min-width:auto}.footer__column:nth-child(n+2){display:none}}.info-cards{gap:var(--space-gap-2xl);margin-top:var(--space-gap-2xl);padding:var(--space-gap-lg) 0;scroll-behavior:smooth;scrollbar-color:var(--color-foreground) var(--color-background);scrollbar-width:thin;-webkit-overflow-scrolling:touch;display:flex;overflow-x:auto}.info-card{padding:var(--space-gap-2xl);background:var(--color-surface);border:1px solid var(--color-border);gap:var(--space-gap-lg);border-radius:12px;flex-direction:column;flex:0 0 350px;min-height:280px;transition:all .3s;display:flex}.info-card:hover{border-color:var(--color-primary);box-shadow:0 8px 32px color-mix(in srgb, var(--color-foreground) 18%, transparent);transform:translateY(-4px)}.info-card__icon{width:2.25rem;height:2.25rem;color:var(--color-primary);flex-shrink:0;justify-content:center;align-items:center;display:flex}.info-card__icon img{object-fit:contain;width:100%;height:100%}.info-card__title{font-size:1.5rem;font-weight:var(--weight-semibold);color:var(--color-primary);margin:0}.info-card__description{color:var(--color-foreground);opacity:.8;line-height:var(--leading-relaxed);flex-grow:1;margin:0}.info-card__link{padding:var(--space-gap-md) var(--space-gap-xl);background:var(--color-primary);color:var(--color-on-primary);font-weight:var(--weight-medium);transition:all var(--transition-base);text-align:center;border-radius:8px;text-decoration:none;display:inline-block}.info-card__link:hover{opacity:.9;transform:translate(4px)}@media (width<=640px){.info-card{flex:0 0 300px;min-height:260px}}.info-cards--grid{grid-template-columns:repeat(auto-fill,minmax(10.5rem,1fr));gap:.85rem;padding:0;display:grid;overflow:visible}.info-cards--grid .info-card{flex:unset;min-height:unset}.info-cards--grid-2{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}@media (width>=640px){.info-cards--grid-2{grid-template-columns:repeat(2,1fr)}}.info-cards--compact .info-card{padding:var(--space-gap-lg) 1.1rem;border-radius:8px;gap:.45rem}.info-cards--compact .info-card__icon{width:1.75rem;height:1.75rem}.info-cards--compact .info-card__title{font-size:.95rem;font-weight:var(--weight-semibold)}.info-cards--compact .info-card__description{font-size:.8125rem;line-height:var(--leading-normal)}.info-cards--compact .info-card__link{padding:.45rem var(--space-gap-md);border-radius:6px;font-size:.8125rem}.info-cards--compact .info-card:hover{box-shadow:0 4px 16px color-mix(in srgb, var(--color-foreground) 14%, transparent);transform:translateY(-2px)}.skill-icon{width:100%;height:100%;color:var(--color-primary);justify-content:center;align-items:center;display:flex}.skill-icon :global(svg){width:100%;height:100%}.social-links{gap:var(--space-gap-lg);align-items:center;display:flex}.social-links a img{filter:brightness(0)saturate()invert(36%)sepia(5%)saturate(1249%)hue-rotate(168deg)brightness(94%)contrast(86%);width:24px;height:24px;transition:transform var(--transition-base)}.social-links a:hover img{transform:translateY(-2px)}.theme-toggle{border:1.5px solid color-mix(in srgb, var(--color-primary) 40%, transparent);background:color-mix(in srgb, var(--color-primary) 8%, transparent);width:2.75rem;height:2.75rem;color:var(--color-primary);cursor:pointer;border-radius:.6rem;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex;position:relative}.theme-toggle:hover{background:color-mix(in srgb, var(--color-primary) 16%, transparent);border-color:var(--color-primary);transform:translateY(-1px)}.theme-toggle:focus-visible{outline:2px solid var(--color-primary);outline-offset:3px}.theme-toggle__icons{width:1.25rem;height:1.25rem;display:block;position:relative}.theme-toggle__icon{width:100%;height:100%;transition:opacity var(--transition-slow), transform var(--transition-slow);position:absolute;inset:0}.theme-toggle__icon--moon{opacity:1;transform:rotate(0)scale(1)}.theme-toggle__icon--sun{opacity:0;transform:rotate(30deg)scale(.85)}html.dark .theme-toggle__icon--moon{opacity:0;transform:rotate(-30deg)scale(.85)}html.dark .theme-toggle__icon--sun{opacity:1;transform:rotate(0)scale(1)}@media (prefers-reduced-motion:reduce){.theme-toggle:hover{transform:none}.theme-toggle__icon{transition:opacity var(--transition-base)}.theme-toggle__icon--moon,.theme-toggle__icon--sun,html.dark .theme-toggle__icon--moon,html.dark .theme-toggle__icon--sun{transform:none}}:global(.page .info-cards){margin-top:3rem}.cv-header{align-items:flex-start;gap:var(--space-gap-md);flex-direction:column;margin-bottom:clamp(2rem,5vw,3.5rem);display:flex}.cv-header h1{font-size:var(--text-hero);letter-spacing:-.02em;margin:0;line-height:1.05}.cv-section{margin-bottom:clamp(3rem,6vw,4.5rem)}.cv-section hr{border:0;border-top:1px solid var(--color-border);margin:0 0 var(--space-gap-xl)}.cv-section h2{font-size:var(--text-h2);letter-spacing:-.02em;margin:0 0 var(--space-gap-xl)}.cv-grid{gap:var(--space-gap-lg);flex-direction:column;display:flex}.cv-card__body{gap:var(--space-gap-md)}.cv-card__header,.cv-card__casestudies{gap:var(--space-gap-sm);flex-direction:column;display:flex}.cv-card__casestudies-list{gap:var(--space-gap-sm);flex-wrap:wrap;display:flex}.cv-extras{padding-bottom:var(--space-section-y-top)}.cv-extras-section{padding-top:var(--space-section-y-top);border-top:1px solid var(--color-border)}.cv-page .page-hero .button{margin-top:var(--space-gap-xl)}.icon-download{flex-shrink:0}.hero{min-height:calc(100svh - var(--header-height));flex-direction:column;justify-content:center;padding:clamp(2.5rem,6vw,4rem) 0 clamp(4rem,10vw,6rem);display:flex}.hero__inner{flex-direction:column;flex:1;justify-content:center;display:flex}.hero__wordmark{margin:0 0 var(--space-gap-lg);font-size:clamp(.85rem,1.4vw,.95rem);font-weight:var(--weight-bold);letter-spacing:.08em;text-transform:uppercase;color:var(--color-primary)}@media (prefers-reduced-motion:no-preference){.hero__wordmark,.hero h1,.hero__lead,.hero__actions{animation:.55s both hero-rise}.hero h1{animation-delay:60ms}.hero__lead{animation-delay:.12s}.hero__actions{animation-delay:.18s}}.hero h1{max-width:14ch;font-size:var(--text-hero);letter-spacing:-.02em;margin:0;line-height:1.05}.hero__lead{max-width:var(--prose-max);font-size:var(--text-lead);line-height:var(--leading-relaxed);color:var(--color-text-muted);margin:1.25rem 0 0}.hero__actions{gap:var(--space-gap-sm) var(--space-gap-md);margin-top:var(--text-h2);flex-wrap:wrap;display:flex}.hero__scroll{align-items:center;gap:var(--space-gap-sm);padding:var(--space-gap-sm) .5rem;font-size:.75rem;font-weight:var(--weight-semibold);letter-spacing:.06em;text-transform:uppercase;color:color-mix(in srgb, var(--color-foreground) 55%, transparent);flex-direction:column;text-decoration:none;display:inline-flex;position:absolute;bottom:clamp(1.25rem,4vw,2rem);left:50%;transform:translate(-50%)}.hero__scroll:hover{color:var(--color-primary)}.hero__scroll:focus-visible{outline:2px solid var(--color-primary);outline-offset:4px;border-radius:var(--radius-sm)}.hero__scroll-icon{border-bottom:2px solid;border-right:2px solid;width:1.25rem;height:1.25rem;display:block;transform:rotate(45deg)translateY(-2px)}@media (prefers-reduced-motion:no-preference){.hero__scroll-icon{animation:2s ease-in-out infinite hero-scroll-hint}}@keyframes hero-scroll-hint{0%,to{transform:rotate(45deg)translateY(-2px)}50%{transform:rotate(45deg)translateY(2px)}}@keyframes hero-rise{0%{opacity:0;transform:translateY(.55rem)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.hero__scroll-icon{animation:none}}.home-block{padding:var(--space-section-y-top) 0;border-top:1px solid var(--color-border)}.about{padding:var(--space-section-y-top) 0;background:0 0;border-top:none}.about h2,.home-block h2{margin:0 0 var(--space-gap-lg);font-size:var(--text-h2);letter-spacing:-.02em}.about__subheading{font-size:var(--text-h3);font-weight:var(--weight-semibold);letter-spacing:-.01em;color:var(--color-primary);margin:clamp(2rem,5vw,2.75rem) 0 0}.about p,.about ul,.home-block p{max-width:40rem;margin:0 0 var(--space-gap-lg);line-height:var(--leading-prose);color:color-mix(in srgb, var(--color-foreground) 82%, transparent)}.about ul{padding-left:1.25rem}.about li{margin-bottom:var(--space-gap-md)}.about li::marker{color:var(--color-primary)}.home-empty{margin:0 0 1.25rem}.about .home-link,.home-block .home-link{margin-top:1.25rem;display:inline-block}.lead-container{width:100%;max-width:var(--prose-max);flex-direction:row;align-items:center;gap:3rem;margin-top:1.25rem;margin-bottom:2.5rem;display:flex}.lead-container .lead{flex:1;max-width:none;margin:0}.lead-container .button{flex-shrink:0}@media (width<=600px){.lead-container{align-items:flex-start;gap:var(--space-gap-xl);flex-direction:column}}
