html.lenis,html.lenis body{height:auto}.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}.lenis [data-lenis-prevent],.lenis [data-lenis-prevent-wheel],.lenis [data-lenis-prevent-touch],.lenis [data-lenis-prevent-vertical],.lenis [data-lenis-prevent-horizontal]{overscroll-behavior:contain}.lenis.lenis-smooth iframe{pointer-events:none}.lenis.lenis-autoToggle{transition-behavior:allow-discrete;transition-property:overflow;transition-duration:1ms}:root{--space-3xs:2px;--space-2xs:4px;--space-xs:8px;--space-sm:12px;--space-md:16px;--space-lg:24px;--space-xl:40px;--space-2xl:64px;--space-3xl:96px;--space-4xl:144px;--text-xs:.8125rem;--text-sm:.875rem;--text-md:1rem;--text-lg:1.25rem;--text-xl:1.5625rem;--text-2xl:1.953rem;--text-3xl:2.441rem;--text-display-s:clamp(2.6rem, 4.6vw, 4.75rem);--text-display:clamp(3.65rem, 7.2vw, 7rem);--text-section:clamp(2.7rem, 4.5vw, 5.5rem);--text-title:clamp(1.35rem, 1vw + 1rem, 2rem);--text-lead:clamp(1.125rem, .35vw + 1rem, 1.375rem);--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in:cubic-bezier(.7, 0, .84, 0);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--dur-micro:.12s;--dur-short:.22s;--dur-long:.42s;--dur-reveal:.7s;--color-paper:#0a0a0a;--color-paper-2:#141414;--color-paper-3:#1c1c1c;--color-paper-4:#262626;--color-ink:#fff;--color-ink-2:#fffc;--color-muted:#fff9;--color-rule:#ffffff26;--color-accent:#fff;--color-accent-strong:#ffffffd9;--color-accent-ink:#0a0a0a;--color-focus:#fff;--color-selection:#fff3;--color-error:oklch(65% .17 27);--color-success:oklch(70% .11 150);--color-certificate:oklch(97% .008 225);--color-video-scrim:oklch(8% .016 240/.62);--color-video-scrim-strong:oklch(7% .014 240/.8);--font-display:"Recepts NF W01 Regular", "Inter", ui-sans-serif, system-ui, sans-serif;--font-body:"Inter", ui-sans-serif, system-ui, sans-serif;--font-outlier:var(--font-body);--container:1440px;--gutter:64px;--gap-columns:32px;--section-gap-s:120px;--section-gap:144px;--section-gap-l:176px;--banner-height:72px;--radius-card:18px;--radius-inner:10px;--radius-pill:999px;--rule-hair:1px;--shadow-card:none;--shadow-modal:0 28px 90px oklch(5% .015 240/.55);--shadow-text:0 2px 18px oklch(5% .02 240/.68);--tracking-display:-.025em;--z-base:1;--z-raised:10;--z-dropdown:100;--z-sticky:200;--z-sticky-nav:300;--z-modal:400;--z-toast:500;--z-tooltip:600}*,:before,:after{box-sizing:border-box}html,body{overflow-x:clip}html{scrollbar-color:var(--color-muted) var(--color-paper);scroll-padding-top:var(--space-3xl)}body{background:var(--color-paper);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-md);-webkit-font-smoothing:antialiased;caret-color:var(--color-accent);margin:0;line-height:1.55}::selection{background:var(--color-selection);color:var(--color-ink)}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}a{color:inherit;text-underline-offset:.16em;text-decoration-thickness:1px}h1,h2,h3{font-family:var(--font-display);font-synthesis:none;overflow-wrap:break-word;text-wrap:balance;min-width:0;margin:0}p{text-wrap:pretty;margin:0}p:not([class]){max-width:65ch}img,video{max-width:100%;height:auto;display:block}svg{display:block}[hidden]{display:none!important}button,input,select,textarea{font:inherit}.container{width:100%;max-width:var(--container);padding-inline:var(--gutter);box-sizing:border-box;margin-inline:auto}.num,.figure,td.num{font-variant-numeric:tabular-nums}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}[data-slot]{background:linear-gradient(160deg, var(--color-paper-2,var(--color-paper)), var(--color-paper-3,var(--color-paper)));position:relative;overflow:hidden}[data-slot]>img{-o-object-fit:cover;object-fit:cover;z-index:1;width:100%;height:100%;position:absolute;inset:0}[data-slot]:has(>img)>:not(img):not([data-keep]){display:none!important}@media (width<=60rem){:root{--gutter:24px;--section-gap-s:80px;--section-gap:96px;--section-gap-l:120px}}@media (width<=40rem){:root{--gutter:16px;--section-gap-s:56px;--section-gap:72px;--section-gap-l:96px;--gap-columns:16px}}@media (prefers-reduced-motion:reduce){:not(.keep-motion),:not(.keep-motion):before,:not(.keep-motion):after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--font-body);font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (width>=640px){.container{max-width:640px}}@media (width>=768px){.container{max-width:768px}}@media (width>=1024px){.container{max-width:1024px}}@media (width>=1280px){.container{max-width:1280px}}@media (width>=1536px){.container{max-width:1536px}}.visible{visibility:visible}.static{position:static}.hidden{display:none}.transform{transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.blur{--tw-blur:blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}html{scroll-behavior:auto}body{background:var(--color-paper);min-width:320px;color:var(--color-ink)}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit}button:disabled,button[aria-disabled=true]{cursor:not-allowed;opacity:.55}.font-recepts{font-family:var(--font-display)}.skip-link{z-index:var(--z-toast);padding:var(--space-xs) var(--space-md);background:var(--color-ink);color:var(--color-paper);text-decoration:none;position:fixed;inset-block-start:calc(-1 * var(--space-3xl));inset-inline-start:var(--space-md)}.skip-link:focus-visible{inset-block-start:var(--space-md)}.hero-video-backdrop{z-index:0;pointer-events:none;background:var(--color-paper);color:var(--color-ink);position:fixed;inset:0;overflow:clip}.hero-video-poster,.hero-video,.hero-video-canvas,.hero-video-scrim{width:100%;height:100%;position:absolute;inset:0}.hero-video-poster,.hero-video{-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center;max-width:none}.hero-video-poster{z-index:0;opacity:1;transition:opacity .5s var(--ease-out)}.hero-video{z-index:1;opacity:0;transition:opacity .5s var(--ease-out)}.hero-video-canvas{z-index:2;opacity:0;transition:opacity .5s var(--ease-out)}.hero-video-backdrop.is-video-ready .hero-video-poster,.hero-video-backdrop.is-cache-ready .hero-video-poster{opacity:0}.hero-video-backdrop.is-video-ready .hero-video{opacity:1}.hero-video-backdrop.is-cache-ready .hero-video{opacity:0}.hero-video-backdrop.is-cache-ready .hero-video-canvas{opacity:1}.hero-video-scrim{z-index:3;background:linear-gradient(180deg, var(--color-video-scrim), var(--color-video-scrim-strong))}.site-nav,.page-content,.site-footer{z-index:var(--z-raised);position:relative}.site-nav{z-index:var(--z-sticky-nav);height:var(--banner-height);border-block-end:var(--rule-hair) solid var(--color-rule);background:color-mix(in oklch, var(--color-paper) 78%, transparent);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);transition:background-color var(--dur-long) var(--ease-out), box-shadow var(--dur-long) var(--ease-out);position:fixed;inset-block-start:0;inset-inline:0;box-shadow:0 0 #0000}.site-nav.is-scrolled{background:color-mix(in oklch, var(--color-paper) 90%, transparent);box-shadow:0 14px 42px #0000002e}.nav-progress{background:linear-gradient(90deg, transparent, var(--color-ink) 10%, var(--color-ink) 90%, transparent);opacity:.72;transform-origin:0;will-change:transform;height:1px;position:absolute;inset-block-end:-1px;inset-inline:0;transform:scaleX(0)}.nav-inner{-moz-column-gap:var(--gap-columns);align-items:center;column-gap:var(--gap-columns);grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);height:100%;display:grid}.brand{justify-self:start;align-items:center;gap:var(--space-xs);color:var(--color-ink);font-size:var(--text-lg);white-space:nowrap;text-decoration:none;display:inline-flex}.brand span{letter-spacing:var(--tracking-display)}.brand:hover{color:var(--color-accent)}.brand:active{transform:translateY(1px)}.nav-links{align-items:center;gap:var(--space-xl);display:flex}.nav-links a{color:var(--color-ink-2);font-size:var(--text-sm);white-space:nowrap;transition:color var(--dur-short) var(--ease-out);font-weight:500;text-decoration:none;position:relative}.nav-links a:after{background:var(--color-ink);content:"";opacity:0;transform-origin:0;height:1px;transition:opacity var(--dur-short) var(--ease-out), transform var(--dur-long) var(--ease-out);position:absolute;inset-block-end:-.55rem;inset-inline:0;transform:scaleX(0)}.nav-links a:hover,.nav-links a.is-active{color:var(--color-ink)}.nav-links a.is-active:after{opacity:1;transform:scaleX(1)}.nav-links a:active{color:var(--color-accent)}.nav-links sup{color:var(--color-muted);margin-inline-start:var(--space-2xs);font-size:.65em}.nav-download{justify-self:end;align-items:center;gap:var(--space-xs);min-height:44px;padding-inline:var(--space-md);border:var(--rule-hair) solid color-mix(in oklch, var(--color-ink) 20%, transparent);border-radius:var(--radius-inner);background:color-mix(in oklch, var(--color-ink) 12%, transparent);color:var(--color-ink);font-size:var(--text-sm);white-space:nowrap;transition:background-color var(--dur-short) var(--ease-out), border-color var(--dur-short) var(--ease-out), transform var(--dur-micro) var(--ease-out);text-decoration:none;display:inline-flex}.nav-download:hover{border-color:color-mix(in oklch, var(--color-ink) 32%, transparent);background:color-mix(in oklch, var(--color-ink) 20%, transparent)}.nav-download:active{transform:translateY(1px)}.hero{justify-content:space-between;gap:var(--space-2xl);min-height:100svh;flex-direction:column;padding-block-start:calc(var(--banner-height) + var(--space-xl));padding-block-end:var(--space-2xl);display:flex}.hero-top,.hero-bottom{justify-content:space-between;gap:var(--space-2xl);display:flex}.hero-top{align-items:flex-start}.hero-bottom{align-items:flex-end}.service-list{gap:var(--space-xs);color:var(--color-ink);font-size:var(--text-xs);letter-spacing:.12em;text-transform:uppercase;text-shadow:var(--shadow-text);font-weight:600;display:grid}.hero-intro{max-width:25rem;color:var(--color-ink);font-size:var(--text-lead);text-align:end;text-shadow:var(--shadow-text);line-height:1.6}.hero-copy{flex:auto;min-width:0;container-type:inline-size}.hero h1{max-width:100%;color:var(--color-ink);letter-spacing:var(--tracking-display);text-shadow:var(--shadow-text);font-size:clamp(2.7rem,6.4cqw,4rem);font-weight:400;line-height:1.02}.hero-title-line{white-space:nowrap;display:block}.hero-title-line .split-word,.hero-title-line .split-char{display:inline-block}.split-parent{perspective:800px}.hero-badge,.section-badge{width:fit-content;margin:0 0 var(--space-lg);padding:var(--space-xs) var(--space-sm);border-inline-start:2px solid var(--color-ink);background:color-mix(in oklch, var(--color-ink) 14%, transparent);color:var(--color-ink);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;text-shadow:var(--shadow-text);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);font-weight:600;display:inline-flex}.hero-contact-card{align-items:center;gap:var(--space-md);width:100%;padding:var(--space-sm);flex:none;display:flex}.hero-card-motion{transform-origin:100% 100%;will-change:transform;flex:none;width:min(100%,24rem)}.hero-portrait{border-radius:var(--radius-inner);-o-object-fit:cover;object-fit:cover;flex:none;width:5rem;height:6rem}.hero-contact-card h2{color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-sm);letter-spacing:0;font-weight:600;line-height:1.3}.hero-contact-card p{color:var(--color-muted);font-size:var(--text-xs);margin-block-start:var(--space-2xs)}.hero-contact-card button{align-items:center;gap:var(--space-2xs);min-height:40px;padding-inline:var(--space-md);border-radius:var(--radius-pill);background:var(--color-ink);color:var(--color-paper);font-size:var(--text-xs);cursor:pointer;transition:background-color var(--dur-short) var(--ease-out), transform var(--dur-micro) var(--ease-out);border:0;margin-block-start:var(--space-sm);font-weight:600;text-decoration:none;display:inline-flex}.hero-contact-card button:hover{background:var(--color-ink-2)}.hero-contact-card button:hover svg{transform:translateX(var(--space-2xs))}.hero-contact-card button:active{transform:translateY(1px)}.hero-contact-card svg{transition:transform var(--dur-short) var(--ease-out)}.button{justify-content:center;align-items:center;gap:var(--space-xs);min-height:48px;padding-inline:var(--space-lg);border:var(--rule-hair) solid transparent;border-radius:var(--radius-pill);font-size:var(--text-sm);white-space:nowrap;cursor:pointer;transition:background-color var(--dur-short) var(--ease-out), border-color var(--dur-short) var(--ease-out), color var(--dur-short) var(--ease-out), transform var(--dur-micro) var(--ease-out);font-weight:600;line-height:1;text-decoration:none;display:inline-flex}.button-primary{background:var(--color-ink);color:var(--color-paper)}.button-primary:hover{background:var(--color-ink-2)}.button-secondary{border-color:color-mix(in oklch, var(--color-ink) 24%, transparent);background:color-mix(in oklch, var(--color-ink) 10%, transparent);color:var(--color-ink);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.button-secondary:hover{border-color:color-mix(in oklch, var(--color-ink) 34%, transparent);background:color-mix(in oklch, var(--color-ink) 18%, transparent)}.button:active{transform:translateY(1px)}.button:disabled,.button[aria-disabled=true]{transform:none}.magnet-wrap{display:inline-block;position:relative}.magnet-inner{will-change:transform;display:flex}.glass-panel{border:var(--rule-hair) solid color-mix(in oklch, var(--color-ink) 16%, transparent);border-radius:var(--radius-card);background:color-mix(in oklch, var(--color-ink) 10%, transparent);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.scrub-spacer{min-height:80svh}.section{scroll-margin-block-start:0;position:relative}.technical-section{min-height:100svh}.technical-shell{justify-content:space-between;gap:var(--space-3xl);min-height:100svh;flex-direction:column;padding-block-start:calc(var(--banner-height) + var(--space-xl));padding-block-end:var(--space-2xl);display:flex}.technical-top{justify-content:space-between;align-items:flex-start;gap:var(--space-2xl);display:flex}.technical-top .section-badge{margin:0}.technical-intro{max-width:28rem;color:var(--color-ink);font-size:var(--text-lead);text-align:end;text-shadow:var(--shadow-text);line-height:1.6}.section-intro{-moz-column-gap:var(--gap-columns);align-items:end;column-gap:var(--gap-columns);row-gap:var(--space-xl);grid-template-columns:minmax(0,7fr) minmax(18rem,5fr);display:grid}.section-intro h2,.contact-heading h2{max-width:16ch;color:var(--color-ink);font-size:var(--text-section);letter-spacing:var(--tracking-display);text-shadow:var(--shadow-text);font-weight:400;line-height:1.02}.section-intro>p,.contact-heading>p{max-width:42ch;color:var(--color-ink-2);font-size:var(--text-lead);text-shadow:var(--shadow-text);justify-self:end;line-height:1.6}.technical-bottom{-moz-column-gap:var(--space-2xl);align-items:end;column-gap:var(--space-2xl);row-gap:var(--space-2xl);grid-template-columns:minmax(0,7fr) minmax(20rem,5fr);display:grid}.technical-statement{align-self:end}.technical-statement h2{max-width:12ch;color:var(--color-ink);font-size:var(--text-section);letter-spacing:var(--tracking-display);text-shadow:var(--shadow-text);font-weight:400;line-height:1.02}.technical-statement p{max-width:42ch;color:var(--color-ink-2);font-size:var(--text-md);text-shadow:var(--shadow-text);margin-block-start:var(--space-lg);line-height:1.65}.technical-actions{gap:var(--space-sm);flex-wrap:wrap;margin-block-start:var(--space-xl);display:flex}.text-link,.text-button{border:0;border-block-end:var(--rule-hair) solid var(--color-muted);color:var(--color-ink);font-size:var(--text-sm);cursor:pointer;min-height:44px;transition:border-color var(--dur-short) var(--ease-out), color var(--dur-short) var(--ease-out), transform var(--dur-micro) var(--ease-out);background:0 0;align-items:center;margin-block-start:var(--space-lg);font-weight:600;text-decoration:none;display:inline-flex}.text-link:hover,.text-button:hover{border-color:var(--color-accent);color:var(--color-accent)}.text-link:active,.text-button:active{transform:translateY(1px)}.capability-list{width:100%;max-width:32rem;padding:0 var(--space-lg);justify-self:end;margin:0;list-style:none}.capability-list>li{border-block-start:var(--rule-hair) solid color-mix(in oklch, var(--color-ink) 15%, transparent);transition:background-color var(--dur-long) var(--ease-out)}.capability-list>li:first-child{border-block-start:0}.capability-list>li:hover{background:color-mix(in oklch, var(--color-ink) 5%, transparent)}.capability-list [data-reveal]{-moz-column-gap:var(--gap-columns);column-gap:var(--gap-columns);padding-block:var(--space-lg);grid-template-columns:3rem minmax(0,1fr);display:grid}.capability-number{color:var(--color-muted);font-size:var(--text-sm)}.capability-heading{justify-content:space-between;align-items:center;gap:var(--space-md);display:flex}.capability-heading svg{color:var(--color-muted);transition:color var(--dur-short) var(--ease-out), transform var(--dur-short) var(--ease-out);flex:none}.capability-list li:hover .capability-heading svg{color:var(--color-ink);transform:translateX(var(--space-2xs))}.capability-list h3,.project-copy h3,.experience-layout h3,.credential-copy h3,.contact-layout h3{color:var(--color-ink);font-size:var(--text-title);letter-spacing:var(--tracking-display);font-weight:400;line-height:1.15}.capability-list p{max-width:54ch;color:var(--color-muted);font-size:var(--text-sm);margin-block-start:var(--space-xs);line-height:1.65}.capability-list h3{font-family:var(--font-body);font-size:var(--text-lg);letter-spacing:0;font-weight:500}.projects-section{padding-block:var(--section-gap-l);background:color-mix(in oklch, var(--color-paper) 42%, transparent)}.project-index{border-block-end:var(--rule-hair) solid var(--color-rule);margin-block-start:var(--space-3xl)}.project-row{-moz-column-gap:var(--gap-columns);align-items:center;column-gap:var(--gap-columns);row-gap:var(--space-lg);min-height:100svh;padding-block:var(--space-2xl);border-block-start:var(--rule-hair) solid var(--color-rule);isolation:isolate;grid-template-columns:9rem minmax(0,1.1fr) minmax(0,.9fr);display:grid;position:relative}.project-row:before,.credential-row:before{inset:var(--space-sm) calc(-1 * var(--space-lg));z-index:-1;border-radius:var(--radius-inner);background:linear-gradient(90deg, color-mix(in oklch, var(--color-ink) 6%, transparent), color-mix(in oklch, var(--color-ink) 2%, transparent));content:"";opacity:0;transition:opacity var(--dur-long) var(--ease-out), transform var(--dur-long) var(--ease-out);position:absolute;transform:scaleX(.985)}.project-row:hover:before,.credential-row:hover:before{opacity:1;transform:scaleX(1)}.project-marker{gap:var(--space-xs);color:var(--color-muted);font-size:var(--text-sm);flex-direction:column;display:flex}.project-marker .num{color:var(--color-accent);font-size:var(--text-xl);font-variant-numeric:tabular-nums}.project-copy p,.technology-list{color:var(--color-ink-2);margin-block-start:var(--space-md);line-height:1.65}.project-core{gap:var(--space-sm) var(--space-lg);margin:var(--space-lg) 0 0;color:var(--color-accent);font-size:var(--text-sm);flex-wrap:wrap;padding:0;list-style:none;display:flex}.project-core li+li{border-inline-start:var(--rule-hair) solid var(--color-rule);padding-inline-start:var(--space-lg)}.project-scope{align-self:center}.project-scope summary{color:var(--color-ink);font-size:var(--text-sm);cursor:pointer;transition:color var(--dur-short) var(--ease-out);font-weight:600}.project-scope summary:hover{color:var(--color-accent)}.project-scope summary:active{color:var(--color-accent-strong)}.technology-list{color:var(--color-muted);font-size:var(--text-sm);margin-block-start:0}.project-scope[open] .technology-list{margin-block-start:var(--space-md)}.project-scope:not([open]) .technology-list{display:none}.experience-section{padding-block:var(--section-gap)}.experience-layout{-moz-column-gap:var(--gap-columns);column-gap:var(--gap-columns);row-gap:var(--space-2xl);grid-template-columns:minmax(0,7fr) minmax(0,5fr);margin-block-start:var(--space-3xl);display:grid}.experience-record{padding:var(--space-xl)}.record-date{color:var(--color-accent);font-size:var(--text-sm)}.experience-record h3{margin-block-start:var(--space-lg)}.record-organisation,.education-date{color:var(--color-muted);margin-block-start:var(--space-xs)}.experience-record ul{gap:var(--space-md);margin:var(--space-xl) 0 0;color:var(--color-ink-2);padding-inline-start:var(--space-lg);line-height:1.65;display:grid}.education-record{align-self:end;min-width:0}.education-list{gap:var(--space-xl);margin-block-start:var(--space-xl);display:grid}.education-entry{min-width:0}.education-entry-heading{justify-content:space-between;align-items:flex-start;gap:var(--space-lg);display:flex}.education-entry h4{color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-md);margin:0;font-weight:600;line-height:1.45}.education-date{font-size:var(--text-sm);white-space:nowrap;flex:none;margin:0}.education-entry .ruled-list{margin-block-start:var(--space-md)}.ruled-list{margin:var(--space-xl) 0 0;border-block-end:var(--rule-hair) solid var(--color-rule);padding:0;list-style:none}.ruled-list li{padding-block:var(--space-md);border-block-start:var(--rule-hair) solid var(--color-rule);color:var(--color-ink-2)}.credentials-section{padding-block:var(--section-gap-l);background:color-mix(in oklch, var(--color-paper) 46%, transparent)}.credential-index{border-block-end:var(--rule-hair) solid var(--color-rule);margin-block-start:var(--space-3xl)}.credential-row{-moz-column-gap:var(--gap-columns);align-items:center;column-gap:var(--gap-columns);row-gap:var(--space-md);min-height:12rem;padding-block:var(--space-md);border-block-start:var(--rule-hair) solid var(--color-rule);isolation:isolate;grid-template-columns:11rem minmax(0,1.2fr) minmax(0,.8fr) 10rem;display:grid;position:relative}.credential-row-text{grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr) 10rem;min-height:8rem}.credential-preview{aspect-ratio:16/10;border-radius:var(--radius-inner);background:var(--color-certificate);justify-content:center;align-items:center;width:100%;margin:0;display:flex;overflow:hidden}.credential-preview img{-o-object-fit:contain;object-fit:contain;width:100%;height:100%}.credential-typographic{padding:var(--space-md);background:var(--color-paper-2);color:var(--color-ink-2);font-size:var(--text-sm);text-align:center}.credential-copy p,.credential-meta p,.credential-actions,.credential-actions a{color:var(--color-muted);font-size:var(--text-sm);line-height:1.55}.credential-copy p{margin-block-start:var(--space-xs)}.credential-meta{gap:var(--space-2xs);display:grid}.credential-actions{align-items:flex-start;gap:var(--space-xs);flex-direction:column;display:flex}.credential-actions .text-button{margin-block-start:0;padding:0}.credential-actions a{color:var(--color-ink-2);text-underline-offset:.2em}.credential-actions a:hover{color:var(--color-accent)}.credential-actions a:active{color:var(--color-accent-strong)}.skills-section{padding-block:var(--section-gap)}.skills-index{margin:var(--space-3xl) 0 0;padding-inline:var(--space-xl)}.skills-index>[data-reveal]{-moz-column-gap:var(--gap-columns);column-gap:var(--gap-columns);row-gap:var(--space-sm);min-height:15rem;padding-block:var(--space-lg);border-block-start:var(--rule-hair) solid var(--color-rule);grid-template-columns:minmax(12rem,3fr) minmax(0,9fr);align-items:center;display:grid}.skills-index>[data-reveal]:first-child{border-block-start:0}.skills-index dt{color:var(--color-ink);font-weight:600}.skills-index dd{color:var(--color-ink-2);margin:0;line-height:1.7}.contact-section{padding-block:var(--section-gap-l);background:color-mix(in oklch, var(--color-paper) 52%, transparent);color:var(--color-ink)}.contact-heading{-moz-column-gap:var(--gap-columns);align-items:end;column-gap:var(--gap-columns);row-gap:var(--space-xl);grid-template-columns:minmax(0,8fr) minmax(18rem,4fr);display:grid}.contact-layout{-moz-column-gap:var(--gap-columns);column-gap:var(--gap-columns);row-gap:var(--space-2xl);grid-template-columns:minmax(0,7fr) minmax(0,5fr);margin-block-start:var(--space-3xl);display:grid}.contact-primary{padding:var(--space-xl)}.contact-primary>p{color:var(--color-muted);margin-block-start:var(--space-xs)}.contact-primary address{gap:var(--space-md);margin-block-start:var(--space-xl);font-style:normal;display:grid}.contact-primary address a,.contact-primary address span{align-items:flex-start;gap:var(--space-sm);color:var(--color-ink-2);text-decoration:none;display:flex}.contact-primary address a:hover{color:var(--color-accent)}.contact-primary address a:active{color:var(--color-accent-strong)}.contact-primary address svg{flex:none;margin-block-start:var(--space-3xs)}.contact-form-trigger{margin-block-start:var(--space-xl)}.social-links{gap:var(--space-sm);border-block-start:var(--rule-hair) solid var(--color-rule);flex-wrap:wrap;margin-block-start:var(--space-xl);padding-block-start:var(--space-lg);display:flex}.social-links a{--social-accent:var(--color-ink);align-items:center;gap:var(--space-xs);min-height:40px;padding:var(--space-xs) var(--space-sm);border:var(--rule-hair) solid transparent;border-radius:var(--radius-pill);color:var(--color-ink);isolation:isolate;transition:color var(--dur-short) var(--ease-out), border-color var(--dur-short) var(--ease-out), background-color var(--dur-short) var(--ease-out), box-shadow var(--dur-long) var(--ease-out), transform var(--dur-short) var(--ease-out);text-decoration:none;display:inline-flex;position:relative;overflow:hidden;transform:translateZ(0)}.social-links a:before{z-index:-1;border-radius:inherit;background:radial-gradient(circle at 22% 50%, color-mix(in oklch, var(--social-accent) 22%, transparent), transparent 72%);content:"";opacity:0;transition:opacity var(--dur-short) var(--ease-out), transform var(--dur-long) var(--ease-out);position:absolute;inset:0;transform:scale(.72)}.social-links a:after{inset-inline:var(--space-sm);border-radius:var(--radius-pill);background:var(--social-accent);height:1px;box-shadow:0 0 10px var(--social-accent);content:"";opacity:0;transform-origin:50%;transition:opacity var(--dur-short) var(--ease-out), transform var(--dur-long) var(--ease-out);position:absolute;inset-block-end:var(--space-2xs);transform:scaleX(0)}.social-links a svg{color:var(--social-accent);transition:filter var(--dur-short) var(--ease-out), transform var(--dur-long) var(--ease-out);flex:none}.social-links a:is(:hover,:focus-visible){border-color:color-mix(in oklch, var(--social-accent) 46%, transparent);background:color-mix(in oklch, var(--social-accent) 9%, transparent);color:var(--color-ink);box-shadow:0 10px 28px color-mix(in oklch, var(--social-accent) 15%, transparent);transform:translateY(-3px)}.social-links a:is(:hover,:focus-visible):before{opacity:1;transform:scale(1)}.social-links a:is(:hover,:focus-visible):after{opacity:.9;transform:scaleX(1)}.social-links a:is(:hover,:focus-visible) svg{filter:drop-shadow(0 0 7px var(--social-accent));transform:scale(1.12)rotate(-5deg)}.social-links a:active{background:color-mix(in oklch, var(--social-accent) 16%, transparent);box-shadow:0 3px 10px color-mix(in oklch, var(--social-accent) 12%, transparent);transition-duration:var(--dur-micro);transform:translateY(0)scale(.95)}.social-links a:active:before{opacity:1;transform:scale(1.14)}.social-links a[data-social=linkedin]{--social-accent:#4ea1f2}.social-links a[data-social=github]{--social-accent:#d9d9d9}.social-links a[data-social=instagram]{--social-accent:#f06292}.social-links a[data-social=youtube]{--social-accent:#ff3d4f}.social-links a[data-social=credly]{--social-accent:#f5a623}.references{align-self:end}.reference-list{border-block-end:var(--rule-hair) solid var(--color-rule);margin-block-start:var(--space-xl)}.reference-list article{gap:var(--space-xs);padding-block:var(--space-lg);border-block-start:var(--rule-hair) solid var(--color-rule);display:grid}.reference-list h4{color:var(--color-ink);font-size:var(--text-md);margin:0;font-weight:600}.reference-list p,.reference-list a{color:var(--color-muted);font-size:var(--text-sm);overflow-wrap:break-word}.reference-list a:hover{color:var(--color-accent)}.reference-list a:active{color:var(--color-accent-strong)}.site-footer{border-block-start:var(--rule-hair) solid var(--color-rule);background:color-mix(in oklch, var(--color-paper) 76%, transparent);color:var(--color-ink);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.footer-inner{justify-content:space-between;align-items:center;gap:var(--space-xl);min-height:8rem;display:flex}.footer-inner p{color:var(--color-muted);font-size:var(--text-sm)}.contact-form-dialog{width:min(92%,40rem);max-width:none;max-height:calc(100svh - var(--space-xl));border:var(--rule-hair) solid color-mix(in oklch, var(--color-ink) 16%, transparent);border-radius:var(--radius-card);background:color-mix(in oklch, var(--color-paper-2) 96%, transparent);color:var(--color-ink);box-shadow:var(--shadow-modal);margin:auto;padding:0;overflow:auto}.contact-form-dialog::backdrop{background:color-mix(in oklch, var(--color-paper) 82%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.contact-form-dialog[open],.certificate-dialog[open]{animation:dialog-enter .48s var(--ease-out) both}.contact-form-dialog[open]::backdrop,.certificate-dialog[open]::backdrop{animation:.36s ease-out both backdrop-enter}.contact-form-shell{padding:var(--space-xl)}.contact-form-header{justify-content:space-between;align-items:flex-start;gap:var(--space-xl);border-block-end:var(--rule-hair) solid var(--color-rule);padding-block-end:var(--space-lg);display:flex}.contact-form-header h2{color:var(--color-ink);font-size:var(--text-2xl);letter-spacing:var(--tracking-display);font-weight:400;line-height:1.1}.contact-form-header p{max-width:42ch;color:var(--color-muted);margin-block-start:var(--space-sm);line-height:1.6}.contact-form{gap:var(--space-lg);padding-block-start:var(--space-xl);display:grid}.form-field{gap:var(--space-xs);color:var(--color-ink-2);font-size:var(--text-sm);font-weight:500;display:grid}.form-field input,.form-field textarea{width:100%;min-height:48px;padding:var(--space-sm) var(--space-md);border:var(--rule-hair) solid color-mix(in oklch, var(--color-ink) 20%, transparent);border-radius:var(--radius-inner);background:color-mix(in oklch, var(--color-ink) 8%, transparent);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-md);transition:background-color var(--dur-short) var(--ease-out), border-color var(--dur-short) var(--ease-out);font-weight:400}.form-field input:hover,.form-field textarea:hover{border-color:color-mix(in oklch, var(--color-ink) 34%, transparent);background:color-mix(in oklch, var(--color-ink) 11%, transparent)}.form-field textarea{resize:vertical;min-height:10rem}.honeypot{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.contact-form-note,.form-status{padding:var(--space-md);border-inline-start:2px solid var(--color-ink);background:color-mix(in oklch, var(--color-ink) 8%, transparent);color:var(--color-ink-2);font-size:var(--text-sm);line-height:1.6}.form-status-error{border-color:var(--color-error)}.form-status a{color:var(--color-ink)}.contact-form-actions{align-items:center;gap:var(--space-lg);flex-wrap:wrap;display:flex}.direct-email-link{align-items:center;gap:var(--space-xs);min-height:44px;color:var(--color-ink-2);font-size:var(--text-sm);display:inline-flex}.direct-email-link:hover{color:var(--color-ink)}.contact-form-success{justify-items:start;gap:var(--space-md);padding-block-start:var(--space-xl);display:grid}.contact-form-success h3{color:var(--color-ink);font-size:var(--text-xl);font-weight:400}.contact-form-success p{color:var(--color-ink-2)}.certificate-dialog{width:min(92%,74rem);max-width:none;max-height:calc(100svh - var(--space-2xl));border-radius:var(--radius-card);background:var(--color-paper-2);color:var(--color-ink);box-shadow:var(--shadow-modal);border:0;margin:auto;padding:0;overflow:auto}.certificate-dialog::backdrop{background:color-mix(in oklch, var(--color-paper) 82%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.dialog-shell{padding:var(--space-xl)}.dialog-header{justify-content:space-between;align-items:flex-start;gap:var(--space-xl);border-block-end:var(--rule-hair) solid var(--color-rule);padding-block-end:var(--space-lg);display:flex}.dialog-kind{color:var(--color-muted);font-size:var(--text-sm)}.dialog-header h2{max-width:22ch;color:var(--color-ink);font-size:var(--text-2xl);letter-spacing:var(--tracking-display);margin-block-start:var(--space-xs);font-weight:400;line-height:1.1}.icon-button{border:var(--rule-hair) solid var(--color-rule);border-radius:var(--radius-pill);width:44px;height:44px;color:var(--color-ink);cursor:pointer;transition:background-color var(--dur-short) var(--ease-out), transform var(--dur-micro) var(--ease-out);background:0 0;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.icon-button:hover{background:var(--color-paper-3)}.icon-button:active{transform:translateY(1px)}.dialog-body{-moz-column-gap:var(--gap-columns);column-gap:var(--gap-columns);row-gap:var(--space-xl);padding-block:var(--space-xl);grid-template-columns:minmax(0,2fr) minmax(18rem,.75fr);display:grid}.certificate-full-preview{min-width:0;padding:var(--space-sm);border-radius:var(--radius-inner);background:var(--color-certificate);justify-content:center;align-items:center;margin:0;display:flex}.certificate-full-preview img{-o-object-fit:contain;object-fit:contain;width:100%;max-height:68svh}.certificate-facts{min-width:0;color:var(--color-ink-2)}.certificate-issuer{color:var(--color-ink);font-weight:600}.certificate-facts>p+p{margin-block-start:var(--space-xs)}.certificate-facts dl{gap:var(--space-md);margin:var(--space-xl) 0 0;display:grid}.certificate-facts dl>div{border-block-start:var(--rule-hair) solid var(--color-rule);padding-block-start:var(--space-md)}.certificate-facts dt{color:var(--color-muted);font-size:var(--text-sm)}.certificate-facts dd{margin:var(--space-2xs) 0 0;overflow-wrap:break-word;color:var(--color-ink-2);font-size:var(--text-sm)}.certificate-facts ul{gap:var(--space-sm);margin:var(--space-xl) 0 0;color:var(--color-ink-2);padding-inline-start:var(--space-lg);display:grid}.dialog-actions{gap:var(--space-sm);border-block-start:var(--rule-hair) solid var(--color-rule);flex-wrap:wrap;padding-block-start:var(--space-lg);display:flex}[data-reveal]{opacity:1;transform:none}.js [data-reveal]{opacity:0;transform:translateY(var(--gap-columns));filter:blur(5px);will-change:opacity, transform}.js [data-reveal].is-in{opacity:1;filter:none;transform:none}@keyframes dialog-enter{0%{opacity:0;transform:translateY(22px)scale(.985)}to{opacity:1;transform:none}}@keyframes backdrop-enter{0%{opacity:0}to{opacity:1}}@media (width<=72rem){.nav-links{gap:var(--space-lg)}.project-row{grid-template-columns:7rem minmax(0,1fr)}.project-scope{grid-column:2}.credential-row{grid-template-columns:9rem minmax(0,1fr) minmax(0,.7fr)}.credential-row-text{grid-template-columns:minmax(0,1fr) minmax(0,.7fr)}.credential-actions{flex-direction:row;grid-column:2/-1;align-items:center;padding-block-end:var(--space-sm)}.credential-row-text .credential-actions{grid-column:1/-1}}@media (width<=64rem){.nav-inner{grid-template-columns:minmax(0,1fr) auto}.nav-links{display:none}.hero-bottom{gap:var(--space-xl)}.hero h1{font-size:clamp(2.35rem,6.2cqw,3.6rem)}.hero-card-motion{width:min(100%,21rem)}.section-intro,.contact-heading,.technical-bottom,.experience-layout,.contact-layout{grid-template-columns:minmax(0,1fr)}.section-intro>p,.contact-heading>p{justify-self:start}.technical-bottom,.experience-layout,.contact-layout{row-gap:var(--space-2xl)}.capability-list{justify-self:stretch;max-width:none}.education-record,.references{align-self:start}.dialog-body{grid-template-columns:minmax(0,1fr)}.certificate-full-preview img{max-height:54svh}}@media (width<=80rem){.hero-bottom{flex-direction:column;align-items:stretch}.hero-card-motion{align-self:flex-end;width:min(100%,22rem)}}@media (width<=56rem){.hero h1{font-size:clamp(2.5rem,7.2cqw,4rem)}.hero-contact-card{width:100%}.hero-card-motion{width:min(100%,22rem)}}@media (width<=48rem){.hero{gap:var(--space-xl);padding-block-start:calc(var(--banner-height) + var(--space-xl));padding-block-end:var(--space-xl)}.hero-top,.hero-bottom,.technical-top{align-items:stretch;gap:var(--space-xl);flex-direction:column}.hero-intro,.technical-intro{text-align:start;max-width:34rem}.hero h1{max-width:100%;font-size:clamp(1.8rem,8.8cqw,3rem)}.hero-title-line{white-space:normal}.hero-card-motion,.hero-contact-card{width:100%}.technical-shell{gap:var(--space-2xl);min-height:auto;padding-block:var(--section-gap-s)}.technical-bottom{grid-template-columns:minmax(0,1fr)}.technical-statement h2{max-width:13ch}.project-row{row-gap:var(--space-lg);grid-template-columns:minmax(0,1fr);min-height:auto}.project-scope{grid-column:auto}.project-marker{flex-direction:row;justify-content:space-between;align-items:baseline}.credential-row{row-gap:var(--space-lg);grid-template-columns:8rem minmax(0,1fr)}.credential-row-text{grid-template-columns:minmax(0,1fr)}.credential-meta{grid-column:2}.credential-actions{grid-column:2;padding-block-end:var(--space-sm)}.credential-row-text .credential-meta,.credential-row-text .credential-actions{grid-column:auto}.skills-index{padding-inline:var(--space-lg)}.skills-index>[data-reveal]{row-gap:var(--space-sm);grid-template-columns:minmax(0,1fr);min-height:auto}.footer-inner{justify-content:center;align-items:flex-start;gap:var(--space-sm);flex-direction:column}.dialog-shell,.contact-form-shell{padding:var(--space-lg)}}@media (width<=36rem){.nav-download{min-height:40px;padding-inline:var(--space-sm);font-size:var(--text-xs)}.nav-download svg{display:none}.education-entry-heading{gap:var(--space-xs);flex-direction:column}.technical-actions,.technical-actions .button,.technical-actions .magnet-wrap,.technical-actions .magnet-inner{width:100%}.hero-contact-card{align-items:flex-start}.credential-row{grid-template-columns:minmax(0,1fr)}.credential-preview{max-width:16rem}.credential-meta,.credential-actions{grid-column:auto}.credential-actions{flex-direction:column;align-items:flex-start}.contact-primary,.experience-record,.dialog-shell,.contact-form-shell{padding:var(--space-lg)}.social-links{flex-direction:column;align-items:flex-start}.dialog-actions,.dialog-actions .button,.contact-form-actions,.contact-form-actions .button{width:100%}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.js [data-reveal]{opacity:1;filter:none;transition:none;transform:none}.contact-form-dialog[open],.certificate-dialog[open],.contact-form-dialog[open]::backdrop,.certificate-dialog[open]::backdrop{animation:none}.hero-video,.hero-video-poster,.hero-video-canvas{transition:none}.button,.nav-download,.icon-button,.text-link,.text-button{transition:background-color var(--dur-micro) linear, border-color var(--dur-micro) linear, color var(--dur-micro) linear}}
