@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){font-size:.9em;background:var(--color-surface);padding:.1rem .35rem;border-radius:var(--radius-sm)}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{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-gap-md);min-height:1rem;padding:.8rem 1rem;border:2px solid transparent;border-radius:var(--radius-lg);font-family:var(--font-lexend);font-size:.88rem;font-weight:var(--weight-bold);line-height:var(--leading-tight);text-decoration:none;cursor:pointer;box-shadow:var(--shadow-md)}.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);text-decoration:none;color:var(--color-primary)}.text-link:hover{text-decoration:underline}.content-card__tag{display:inline-block;width:fit-content;max-width:100%;padding:.28rem .55rem;font-size:var(--text-xs);font-weight:var(--weight-semibold);line-height:1.35;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}.case-study-card{display:inline-block;padding:.35rem .75rem;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)}.case-study-card:hover{transform:translateY(-2px);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)}.case-study__media{display:flex;gap:var(--space-gap-md);max-width:var(--prose-tight)}main{overflow-x:hidden;animation:page-in .45s ease both}@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);font-size:.8rem;letter-spacing:.06em;text-transform:uppercase}.page-hero h1{margin:0;font-size:var(--text-hero);line-height:1.05;letter-spacing:-.02em;max-width:14ch}.page-hero .lead{max-width:var(--prose-max);margin:1.25rem 0 0;font-size:var(--text-lead);line-height:var(--leading-relaxed);color:var(--color-text-muted)}.page-hero .work-date{margin:var(--space-gap-md) 0 0;font-size:.95rem;color:var(--color-text-subtle);font-weight:var(--weight-medium)}.content-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,16rem),1fr));gap:var(--space-gap-lg);padding-bottom:var(--space-section-y-top)}.content-card{display:flex;flex-direction:column;background:var(--color-surface);border-radius:var(--radius-md);border:1px solid var(--color-border);text-decoration:none;color:inherit;overflow:hidden;box-shadow:var(--shadow-sm)}.content-card__media{display:block;margin:0;color:inherit;text-decoration:none}.content-card__image{display:block;width:100%;max-width:100%;height:auto;box-sizing:border-box;aspect-ratio:16 / 9;object-fit:cover;object-position:top center}.content-card__image--logo{object-fit:contain;width:100%;max-width:100%;height:auto;box-sizing:border-box;margin:0 auto;padding:var(--space-gap-lg) var(--space-gap-2xl)}.content-card__logo{display:block;width:min(10rem,55%);height:auto;margin-bottom:var(--space-gap-md);object-fit:contain}.content-card__body{display:flex;flex-direction:column;gap:var(--space-gap-sm);padding:.85rem .85rem 1rem}.content-card__header{display:grid;gap:.2rem}.project-list{list-style:none;padding-left:0;margin:0}.project-item{margin:.2rem 0}.content-card__tags{display:flex;flex-wrap:wrap;gap:var(--space-gap-sm);margin-top:.2rem}.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{margin:0;font-size:var(--text-sm);line-height:var(--leading-normal);color:color-mix(in srgb,var(--color-foreground) 72%,transparent)}.content-card__date{margin:0;font-size:.8rem;line-height:var(--leading-normal);color:color-mix(in srgb,var(--color-foreground) 55%,transparent);font-weight:var(--weight-medium)}.content-card__meta{display:grid;gap:.35rem .75rem;grid-template-columns:max-content 1fr;margin:.35rem 0 0;font-size:var(--text-sm)}.content-card__meta dt{color:var(--color-primary);font-weight:var(--weight-bold)}.content-card__meta dd{margin:0;color:color-mix(in srgb,var(--color-foreground) 76%,transparent)}.content-card__actions{display:flex;flex-wrap:wrap;gap:var(--space-gap-md);margin-top:auto}.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{height:100%;min-height:16rem}.content-card--detail h3{font-size:clamp(1.5rem,4vw,2.5rem)}@media(min-width:768px){.content-card--detail{display:grid;grid-template-columns:minmax(0,1fr) minmax(18rem,.9fr);min-height:calc(100vh - var(--header-height))}.content-card--detail .content-card__media{min-height:100%}.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{display:block;width:100%;height:clamp(3.5rem,9vw,6.5rem)}.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.5;stroke-linecap:round}.project-showcase{display:grid;width:100vw;margin-left:calc(50% - 50vw)}.project-showcase .content-card--detail{width:100%;min-height:calc(100vh - var(--header-height));border:0;border-radius:0;box-shadow:none;padding-inline:max(1rem,calc((100vw - 1040px)/2));box-sizing:border-box}.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);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)}.lab-directory{display:grid;gap:var(--space-gap-2xl);padding-bottom:var(--space-section-y-top)}.lab-section-card .carousel,.lab-section-card .content-card__actions{margin-top:var(--space-gap-md)}.lab-collection,.lab-section-showcase{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,18rem),1fr));gap:var(--space-gap-lg);padding-bottom:var(--space-section-y-top)}.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{display:grid;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)}.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{position:sticky;top:0;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);display:flex;justify-content:space-between;align-items:center;gap:var(--space-gap-lg)}.banner__wordmark{margin:0;font-weight:var(--weight-extrabold);font-size:1.05rem}.banner__wordmark a{color:var(--color-foreground);text-decoration:none}.nav-wrapper{display:flex;align-items:center;gap:var(--space-gap-lg)}.banner__nav{display:flex;gap:var(--space-gap-md);align-items:center}.banner__nav .nav-link{padding:.4rem .5rem;font-weight:var(--weight-bold)}.cta-contact{padding:.45rem .8rem;border-radius:.6rem;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);margin:0;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)}.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{overflow-x:auto;background:var(--colour-dark);color:var(--colour-light);border-radius:var(--radius-md);padding:var(--space-gap-lg)}.prose img{max-width:100%;height:auto;display:block;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)}.prose p>img{margin:0}.prose table{width:100%;border-collapse:collapse;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{display:inline-block;margin-bottom:var(--space-gap-xl);font-size:.9rem;font-weight:var(--weight-semibold);text-decoration:none;color:var(--color-primary)}.back-link:hover{text-decoration:underline}.connect-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-gap-md);max-width:36rem}.connect-link{display:flex;align-items:center;gap:.85rem;padding:.9rem var(--space-gap-lg);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);text-decoration:none;color:inherit;transition:border-color var(--transition-base),box-shadow var(--transition-base),transform var(--transition-base)}.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{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:2.25rem;height:2.25rem;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--color-primary) 14%,var(--color-surface));color:var(--color-primary);transition:background-color var(--transition-base),color var(--transition-base),transform var(--transition-base)}.connect-link:hover .connect-link__icon{background:var(--color-primary);color:var(--color-on-primary);transform:scale(1.04)}.connect-link__label{display:block;font-weight:var(--weight-bold);font-size:.95rem;line-height:var(--leading-tight)}.connect-link__value{display:block;margin-top:.15rem;font-size:var(--text-sm);color:color-mix(in srgb,var(--color-foreground) 68%,transparent)}.form-note{max-width:var(--prose-max);margin:0 0 1.25rem;font-size:.9rem;line-height:1.55;color:color-mix(in srgb,var(--color-foreground) 72%,transparent)}.contact-form{max-width:36rem;display:flex;flex-direction:column;gap:1.1rem}.form-field{display:flex;flex-direction:column;gap:.4rem}.form-field label{font-weight:var(--weight-semibold);font-size:.9rem}.form-field .required{font-weight:var(--weight-regular);font-size:.8rem;color:color-mix(in srgb,var(--color-foreground) 55%,transparent)}.contact-form input,.contact-form textarea{font-family:var(--font-lexend);font-size:var(--text-body);line-height:1.4;color:var(--color-foreground);background:var(--color-surface);border:1px solid var(--color-border);border-radius:.4rem;padding:.65rem var(--space-gap-md);transition:border-color var(--transition-base),box-shadow var(--transition-base)}.contact-form input:focus,.contact-form textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--color-primary) 22%,transparent)}.contact-form textarea{resize:vertical;min-height:8rem}.form-submit{align-self:flex-start;border:0}.carousel{position:relative;margin-top:1.25rem;--carousel-control-size: clamp(2.65rem, 7vw, 3.25rem)}.carousel:before,.carousel:after{position:absolute;top:0;bottom:var(--space-gap-md);z-index:1;width:clamp(1.25rem,4vw,3rem);content:"";pointer-events:none;opacity:.88;transition:opacity var(--transition-base)}.carousel__track{display:flex;gap:clamp(.85rem,2vw,1.15rem);overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding-inline:0;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)}.carousel__track::-webkit-scrollbar{display:none}.carousel__control{position:absolute;top:calc(50% - (var(--space-gap-md) / 2));z-index:2;display:inline-grid;place-items:center;width:var(--carousel-control-size);min-width:44px;height:clamp(4.25rem,24vw,7rem);min-height:44px;padding:0;border:1px solid color-mix(in srgb,var(--color-foreground) 16%,transparent);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;transform:translateY(-50%);backdrop-filter:blur(8px)}.carousel__control--previous{left:0;border-radius:0 var(--radius-md) var(--radius-md) 0}.carousel__control--next{right:0;border-radius:var(--radius-md) 0 0 var(--radius-md)}.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{width:1.35rem;height:1.35rem;pointer-events:none}.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{flex:0 0 87.5%;min-width:87.5%;scroll-snap-align:start;scroll-snap-stop:always;padding:0;overflow:hidden;-webkit-user-drag:none}@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{margin:0;font-size:1.25rem;color:var(--color-foreground)}.cv-card__position{margin:0;font-weight:var(--weight-medium);color:var(--color-primary)}.cv-card__description{margin-bottom:0}.cv-card__casestudies{margin-top:0;padding-top:var(--space-gap-md);border-top:1px solid var(--color-border)}.cv-card__casestudies-title{font-size:var(--text-sm);font-weight:var(--weight-semibold);margin:0;color:color-mix(in srgb,var(--color-foreground) 70%,transparent)}.footer h4{line-height:var(--leading-tight);margin:0}.footer{padding:4rem 0;background:var(--color-background);color:var(--color-foreground);display:flex;justify-content:center;align-items:center;flex-direction:column}.footer__container{width:90%;max-width:1200px;display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-gap-2xl);padding:var(--space-gap-2xl);box-sizing:border-box}.footer__brand{text-align:left;font-size:1.5rem;font-weight:var(--weight-semibold);color:var(--color-primary);display:flex;flex-direction:column;gap:var(--space-gap-md);flex:0 1 220px;min-width:180px}.footer__social{display:flex;gap:var(--space-gap-md);align-items:center}.footer hr{border:none;border-top:.25rem solid var(--color-primary);margin:0;width:70%}.footer__social-link{color:var(--color-primary);opacity:1;transition:opacity var(--transition-base),transform var(--transition-base),background var(--transition-base);display:flex;align-items:center;justify-content:center;padding:.4rem;border:1.5px solid var(--color-primary);border-radius:6px}.footer__social-link:hover{opacity:1;background:var(--color-primary);color:var(--color-surface);transform:translateY(-2px)}.footer__columns{display:flex;flex-direction:row;gap:3rem;justify-content:space-between;flex:1 1 420px;min-width:160px}.footer__column{display:flex;flex-direction:column;gap:var(--space-gap-md);min-width:120px;flex:1 1 140px}.footer__info-title{margin:0;font-size:1.125rem;color:var(--color-primary)}.footer__list{list-style:none;padding:0;margin:0}.footer__info-link{display:block;padding:.25rem 0;color:var(--color-foreground);text-decoration:none;transition:color var(--transition-base),transform var(--transition-base)}.footer__info-link:hover{color:var(--color-primary);transform:translate(4px)}@media(max-width:840px){.footer__container{flex-direction:column;align-items:stretch;padding:var(--space-gap-xl);gap:var(--space-gap-xl)}.footer__brand{flex:0 1 auto;min-width:auto}.footer__columns{flex:1 1 auto}}@media(max-width:540px){.footer__container{flex-direction:column;align-items:stretch;padding:var(--space-gap-lg);gap:var(--space-gap-lg)}.footer__brand{align-items:center;text-align:center;width:100%;order:0}.footer__columns{flex-direction:column;gap:var(--space-gap-lg);width:100%;order:1}.footer__column{width:100%;min-width:auto}.footer__column:nth-child(n+2){display:none}}.info-cards{display:flex;gap:var(--space-gap-2xl);margin-top:var(--space-gap-2xl);overflow-x:auto;padding:var(--space-gap-lg) 0;scroll-behavior:smooth;scrollbar-color:var(--color-foreground) var(--color-background);scrollbar-width:thin;-webkit-overflow-scrolling:touch}.info-card{padding:var(--space-gap-2xl);background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;transition:all .3s ease;display:flex;flex-direction:column;gap:var(--space-gap-lg);flex:0 0 350px;min-height:280px}.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{display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;flex-shrink:0;color:var(--color-primary)}.info-card__icon img{width:100%;height:100%;object-fit:contain}.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;margin:0;flex-grow:1;line-height:var(--leading-relaxed)}.info-card__link{display:inline-block;padding:var(--space-gap-md) var(--space-gap-xl);background:var(--color-primary);color:var(--color-on-primary);text-decoration:none;border-radius:8px;font-weight:var(--weight-medium);transition:all var(--transition-base);text-align:center}.info-card__link:hover{opacity:.9;transform:translate(4px)}@media(max-width:640px){.info-card{flex:0 0 300px;min-height:260px}}.info-cards--grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(10.5rem,1fr));gap:.85rem;overflow:visible;padding:0}.info-cards--grid .info-card{flex:unset;min-height:unset}.info-cards--compact .info-card{padding:var(--space-gap-lg) 1.1rem;gap:.45rem;border-radius:8px}.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);font-size:.8125rem;border-radius:6px}.info-cards--compact .info-card:hover{transform:translateY(-2px);box-shadow:0 4px 16px color-mix(in srgb,var(--color-foreground) 14%,transparent)}.skill-icon{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:var(--color-primary)}.skill-icon :global(svg){width:100%;height:100%}.social-links{display:flex;gap:var(--space-gap-lg);align-items:center}.social-links a img{width:24px;height:24px;filter:brightness(0) saturate(100%) invert(36%) sepia(5%) saturate(1249%) hue-rotate(168deg) brightness(94%) contrast(86%);transition:transform var(--transition-base)}.social-links a:hover img{transform:translateY(-2px)}.theme-toggle{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:2.75rem;height:2.75rem;padding:0;border:1.5px solid color-mix(in srgb,var(--color-primary) 40%,transparent);border-radius:.6rem;background:color-mix(in srgb,var(--color-primary) 8%,transparent);color:var(--color-primary);cursor:pointer}.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{position:relative;display:block;width:1.25rem;height:1.25rem}.theme-toggle__icon{position:absolute;inset:0;width:100%;height:100%;transition:opacity var(--transition-slow),transform var(--transition-slow)}.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{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-gap-md);margin-bottom:clamp(2rem,5vw,3.5rem)}.cv-header h1{margin:0;font-size:var(--text-hero);line-height:1.05;letter-spacing:-.02em}.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{display:flex;flex-direction:column;gap:var(--space-gap-lg)}.cv-card__body{gap:var(--space-gap-md)}.cv-card__header,.cv-card__casestudies{display:flex;flex-direction:column;gap:var(--space-gap-sm)}.cv-card__casestudies-list{display:flex;flex-wrap:wrap;gap:var(--space-gap-sm)}.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}.home-intro{position:relative;background:radial-gradient(100% 85% at 0% calc(100svh - var(--header-height)),color-mix(in srgb,var(--color-primary) 18%,transparent),transparent 52%),var(--color-background)}.hero{display:flex;flex-direction:column;justify-content:center;min-height:calc(100svh - var(--header-height));padding:clamp(2.5rem,6vw,4rem) 0 clamp(4rem,10vw,6rem);background:radial-gradient(120% 80% at 100% 0%,color-mix(in srgb,var(--color-secondary) 28%,transparent),transparent 55%),transparent}.hero__inner{flex:1;display:flex;flex-direction:column;justify-content:center}.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:hero-rise .55s ease both}.hero h1{animation-delay:.06s}.hero__lead{animation-delay:.12s}.hero__actions{animation-delay:.18s}}.hero h1{margin:0;max-width:14ch;font-size:var(--text-hero);line-height:1.05;letter-spacing:-.02em}.hero__lead{max-width:var(--prose-max);margin:1.25rem 0 0;font-size:var(--text-lead);line-height:var(--leading-relaxed);color:var(--color-text-muted)}.hero__actions{display:flex;flex-wrap:wrap;gap:var(--space-gap-sm) var(--space-gap-md);margin-top:var(--text-h2)}.hero__scroll{position:absolute;left:50%;bottom:clamp(1.25rem,4vw,2rem);transform:translate(-50%);display:inline-flex;flex-direction:column;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;text-decoration:none;color:color-mix(in srgb,var(--color-foreground) 55%,transparent)}.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{display:block;width:1.25rem;height:1.25rem;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px)}@media(prefers-reduced-motion:no-preference){.hero__scroll-icon{animation:hero-scroll-hint 2s ease-in-out infinite}}@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;border-top:none;background:transparent}.about h2,.home-block h2{margin:0 0 var(--space-gap-lg);font-size:var(--text-h2);letter-spacing:-.02em}.about__subheading{margin:clamp(2rem,5vw,2.75rem) 0 0;font-size:var(--text-h3);font-weight:var(--weight-semibold);letter-spacing:-.01em;color:var(--color-primary)}.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{display:inline-block;margin-top:1.25rem}.lead-container{display:flex;flex-direction:row;align-items:center;gap:3rem;margin-top:1.25rem;margin-bottom:2.5rem;width:100%;max-width:var(--prose-max)}.lead-container .lead{margin:0;flex:1;max-width:none}.lead-container .button{flex-shrink:0}@media(max-width:600px){.lead-container{flex-direction:column;align-items:flex-start;gap:var(--space-gap-xl)}}.nav-link[data-astro-cid-kggsjsm4]{color:var(--color-primary);text-decoration:none;transition:color var(--transition-fast),transform var(--transition-fast);will-change:transform}.nav-link[data-astro-cid-kggsjsm4]:hover,.nav-link[data-astro-cid-kggsjsm4]:focus-visible{color:color-mix(in srgb,var(--color-primary) 88%,#000);text-decoration:none;transform:translateY(-.2rem)}.menu[data-astro-cid-kggsjsm4]{display:none;background:none;border:none;cursor:pointer}@media(max-width:700px){.menu[data-astro-cid-kggsjsm4]{display:flex;flex-direction:column;gap:4px;width:28px;height:28px;justify-content:center}.menu[data-astro-cid-kggsjsm4] span[data-astro-cid-kggsjsm4]{display:block;width:100%;height:2px;background:var(--color-primary);transition:transform var(--transition-base),opacity var(--transition-base)}.menu[data-astro-cid-kggsjsm4][aria-expanded=true] span[data-astro-cid-kggsjsm4]:nth-child(1){transform:rotate(45deg) translate(.5px,8px)}.menu[data-astro-cid-kggsjsm4][aria-expanded=true] span[data-astro-cid-kggsjsm4]:nth-child(2){opacity:0}.menu[data-astro-cid-kggsjsm4][aria-expanded=true] span[data-astro-cid-kggsjsm4]:nth-child(3){transform:rotate(-45deg) translate(.5px,-8px)}.nav-wrapper[data-astro-cid-kggsjsm4] .banner__nav[data-astro-cid-kggsjsm4],.nav-wrapper[data-astro-cid-kggsjsm4] .banner__nav[data-astro-cid-kggsjsm4] a[data-astro-cid-kggsjsm4],.nav-wrapper[data-astro-cid-kggsjsm4] .cta-contact[data-astro-cid-kggsjsm4]{display:none!important}.nav-wrapper[data-astro-cid-kggsjsm4]{gap:.5rem}.drawer-nav[data-astro-cid-kggsjsm4]{position:fixed;top:var(--header-height);right:0;left:auto;height:calc(100vh - var(--header-height));width:85%;max-width:320px;background:var(--color-surface);border-left:1px solid var(--color-border);box-shadow:-8px 0 24px color-mix(in srgb,var(--color-primary) 12%,transparent);transform:translate(100%);transition:transform .22s ease,opacity .22s ease;opacity:0;z-index:9998;display:flex;flex-direction:column;padding:var(--space-gap-lg);gap:var(--space-gap-md);overflow-y:auto;pointer-events:auto}.drawer-nav[data-astro-cid-kggsjsm4].open{transform:translate(0);opacity:1}.drawer-nav[data-astro-cid-kggsjsm4] .nav-link[data-astro-cid-kggsjsm4],.drawer-nav[data-astro-cid-kggsjsm4] .button[data-astro-cid-kggsjsm4]{display:block}}
