@import"https://fonts.googleapis.com/css2?family=Ancizar+Sans:wght@300..600&family=Cormorant+Garamond:ital,wght@1,600&display=swap";:root{color-scheme:light;--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.25rem, 4vw + .5rem, 3.75rem);--text-display: clamp(2.75rem, 5vw + 1rem, 5.25rem);--text-section: clamp(2rem, 2.5vw + 1rem, 3.5rem);--text-title: clamp(1.25rem, .75vw + .875rem, 1.625rem);--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;--color-error: oklch(52% .19 27);--color-success: oklch(50% .12 150);--gutter: 64px;--gap-columns: 32px;--section-gap-s: 120px;--section-gap: 144px;--section-gap-l: 176px;--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;--color-paper: oklch(99.6% .003 265);--color-paper-2: oklch(97.6% .006 265);--color-paper-3: oklch(94.5% .012 265);--color-ink: oklch(14% .032 282);--color-ink-2: oklch(25% .05 280);--color-body: oklch(40% .03 265);--color-muted: oklch(53% .022 265);--color-rule: oklch(92.5% .008 265);--color-rule-2: oklch(85% .012 265);--color-accent: oklch(14% .032 282);--color-accent-ink: oklch(99.6% .003 265);--color-focus: oklch(52% .16 265);--font-display: "Cormorant Garamond", ui-serif, Georgia, serif;--font-body: "Ancizar Sans", ui-sans-serif, system-ui, sans-serif;--radius-card: 12px;--radius-pill: 999px;--rule-hair: 1px;--container: 1040px;--measure: 640px;--tracking-display: -.01em;--display-weight: 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{margin:0;background:var(--color-paper);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-md);line-height:1.55;-webkit-font-smoothing:antialiased;caret-color:var(--color-accent)}::selection{background:color-mix(in oklab,var(--color-accent) 22%,transparent);color:var(--color-ink)}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}a{color:inherit;text-decoration-thickness:1px;text-underline-offset:.16em}h1,h2,h3{margin:0;font-family:var(--font-display);font-weight:var(--display-weight, 700);font-synthesis:none;letter-spacing:var(--tracking-display);line-height:1.05;overflow-wrap:break-word;min-width:0;text-wrap:balance}h1{max-width:20ch;font-size:var(--text-display)}h2{max-width:30ch;font-size:var(--text-section)}h3{max-width:40ch;font-size:var(--text-title);line-height:1.2}.lead{font-size:var(--text-lead);line-height:1.45;max-width:52ch}p{margin:0;text-wrap:pretty}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);margin-inline:auto;padding-inline:var(--gutter);box-sizing:border-box}.num,.figure,td.num{font-variant-numeric:tabular-nums}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap}[data-slot]{position:relative;overflow:hidden;background:linear-gradient(160deg,var(--color-paper-2, var(--color-paper)),var(--color-paper-3, var(--color-paper)))}[data-slot]>img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;z-index:1}[data-slot]:has(>img)>:not(img):not([data-keep]){display:none!important}@media (max-width: 60rem){:root{--gutter: 24px;--section-gap-s: 80px;--section-gap: 96px;--section-gap-l: 120px}}@media (max-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{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}[data-slot]:has(>img){isolation:isolate;background:var(--color-paper);outline:1px solid color-mix(in oklab,var(--color-ink) 8%,transparent);outline-offset:-1px}[data-slot]>img{z-index:0;filter:grayscale(1) contrast(1.08);mix-blend-mode:multiply}[data-slot]:has(>img):before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;background:var(--color-ink);mix-blend-mode:lighten;pointer-events:none}body{color:var(--color-body);font-size:1.0625rem;font-weight:300}strong,dd,h3{font-weight:500}h1,h2,h3{color:var(--color-ink)}.muted{color:var(--color-muted)}.measure{max-width:var(--measure);margin-inline:auto;width:100%}.label{font-family:var(--font-body);font-size:var(--text-md);font-style:normal;font-weight:500;letter-spacing:0}.prose{line-height:1.7;max-width:62ch}.link{color:var(--color-ink);-webkit-text-decoration-line:underline;text-decoration-line:underline;-webkit-text-decoration-color:var(--color-rule-2);text-decoration-color:var(--color-rule-2);text-underline-offset:.2em;transition:-webkit-text-decoration-color var(--dur-micro) var(--ease-out);transition:text-decoration-color var(--dur-micro) var(--ease-out);transition:text-decoration-color var(--dur-micro) var(--ease-out),-webkit-text-decoration-color var(--dur-micro) var(--ease-out)}.link:hover{-webkit-text-decoration-color:var(--color-ink);text-decoration-color:var(--color-ink)}body{background:var(--color-ink)}.banner{position:-webkit-sticky;position:sticky;top:0;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--space-sm) var(--space-lg);padding:var(--space-sm) max(var(--space-md),(100% - var(--measure)) / 2)}.banner p{color:var(--color-ink);display:flex;align-items:center;gap:var(--space-sm)}.banner-short{display:none}.banner p:before{content:"";flex:none;width:8px;height:8px;border-radius:50%;background:#53be70;box-shadow:0 0 0 4px #53be7033}@media (max-width: 40rem){.banner{flex-wrap:nowrap;gap:var(--space-sm);font-size:var(--text-xs)}.banner p{min-width:0;gap:var(--space-xs);text-wrap:nowrap}.banner .btn{flex:none;text-wrap:nowrap}.banner-long{display:none}.banner-short{display:inline;min-width:0;overflow:hidden;text-overflow:ellipsis}}.sheet{position:relative;z-index:var(--z-base);background:var(--color-paper);border-radius:var(--space-lg) var(--space-lg) 0 0}@supports (animation-timeline: scroll()){.sheet{animation:flatten linear both;animation-timeline:scroll(root);animation-range:0 40px}}@keyframes flatten{to{border-radius:0}}.nav{position:-webkit-sticky;position:sticky;top:0;z-index:var(--z-sticky-nav);padding-block:var(--space-md);background:var(--color-paper);font-size:var(--text-sm)}.nav-row{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:var(--space-sm)}.wordmark{display:block;line-height:0}.nav-row>.nav-chip{display:flex;align-items:center;gap:var(--space-xs);min-height:32px;padding:0 var(--space-sm);border:var(--rule-hair) solid var(--color-rule);border-radius:10px;color:var(--color-ink);font-size:var(--text-xs);white-space:nowrap;text-decoration:none;opacity:0;visibility:hidden;transform:scale(.96);animation:none;transition:opacity var(--dur-short) var(--ease-out),transform var(--dur-short) var(--ease-out),visibility 0s var(--dur-short),border-color var(--dur-micro) var(--ease-out)}.sheet[data-gone] .nav-row>.nav-chip{opacity:1;visibility:visible;transform:none;transition-delay:.12s}.nav-row>.nav-chip:hover{border-color:var(--color-rule-2)}.nav-row>.nav-chip:active{transform:scale(.97)}.nav-chip>a{display:flex;align-items:center;gap:var(--space-xs);align-self:stretch;text-decoration:none}.nav-chip>a:hover{text-decoration:underline}.nav-chip-status{color:var(--color-muted)}.nav-chip-cta{padding-left:var(--space-xs);border-left:var(--rule-hair) solid var(--color-rule);font-weight:500}.pulse{position:relative;flex:none;width:7px;height:7px;border-radius:50%;background:var(--color-success)}.pulse:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background:inherit;animation:ping 2.4s var(--ease-out) infinite}@keyframes ping{0%{opacity:.5}60%,to{opacity:0;transform:scale(2.6)}}@media (prefers-reduced-motion: reduce){.pulse:after{display:none}}.lang{position:relative;justify-self:end;display:flex;padding:var(--space-3xs);border:var(--rule-hair) solid var(--color-rule);border-radius:12px;overflow:clip}.lang-pill{position:absolute;top:var(--space-3xs);bottom:var(--space-3xs);border-radius:9px;background:var(--color-ink)}.lang button{position:relative;min-width:40px;min-height:32px;border:0;background:transparent;color:var(--color-muted);cursor:pointer;font-size:var(--text-xs);transition:color var(--dur-micro) var(--ease-out)}.lang button:hover{color:var(--color-ink)}.lang button[aria-pressed=true]{color:var(--color-paper);transition-delay:80ms}.lang button:active{transform:scale(.96)}@supports (corner-shape: squircle){.nav-row>.nav-chip{border-radius:14px;corner-shape:squircle}.lang{border-radius:16px;corner-shape:squircle}.lang-pill{border-radius:13px;corner-shape:squircle}}.actions{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.contact{display:grid;justify-items:start;gap:var(--space-md)}.email-copy{display:inline-flex;gap:var(--space-xs);padding:0;border:0;background:none;color:var(--color-ink);font:inherit;font-size:var(--text-sm);cursor:pointer}.email-copy .roll{transition:color var(--dur-micro) var(--ease-out)}.email-copy:hover .roll{color:var(--color-ink)}.btn{display:inline-flex;align-items:center;min-height:44px;padding:0 var(--space-lg);border:var(--rule-hair) solid transparent;border-radius:12px;font-size:var(--text-sm);text-decoration:none;cursor:pointer;transition:background-color var(--dur-micro) var(--ease-out),border-color var(--dur-micro) var(--ease-out),color var(--dur-micro) var(--ease-out),transform .16s var(--ease-out)}.btn--primary{background:var(--color-ink);color:var(--color-paper)}.btn--primary:hover{background:var(--color-ink-2)}.btn--secondary{background:var(--color-paper);border-color:var(--color-rule);color:var(--color-body)}.btn--secondary:hover{border-color:var(--color-rule-2);color:var(--color-ink)}.btn:active{transform:scale(.98)}.btn--xs{min-height:32px;padding-inline:var(--space-sm);border-radius:8px;font-size:var(--text-xs)}@supports (corner-shape: squircle){.btn{border-radius:20px;corner-shape:squircle}.btn--xs{border-radius:14px}}.hero{display:grid;gap:var(--space-lg);justify-items:start;padding-block:var(--space-4xl) var(--space-3xl)}.banner>*,.nav-row>*,.hero>*{animation:rise var(--dur-long) var(--ease-out) var(--delay, 0ms) both}.nav-row>*{--delay: 60ms}.hero>:nth-child(1){--delay: .12s}.hero>:nth-child(2){--delay: .18s}.hero>:nth-child(3){--delay: .24s}@media (prefers-reduced-motion: no-preference){@supports (animation-timeline: view()){main>.section,.footer-cta,footer .footer{animation:rise linear both;animation-timeline:view();animation-range:entry 0% entry 40%}}}@keyframes rise{0%{opacity:0;transform:translateY(8px)}}.roll{display:inline-grid;overflow:clip}.roll>*{grid-area:1 / 1;text-align:center;transition:opacity var(--dur-short) var(--ease-out),transform var(--dur-short) var(--ease-out)}.roll>[aria-hidden]{opacity:0}.roll>:first-child[aria-hidden]{transform:translateY(-100%)}.roll>:last-child[aria-hidden]{transform:translateY(100%)}.hero h1{position:relative;z-index:var(--z-modal);max-width:none;line-height:0}.logo-box{display:block;width:143px}.logo-box svg{display:block;width:100%;height:auto;overflow:visible;fill:var(--color-ink)}.hero-logo{width:clamp(280px,62vw,620px)}.nav-row>.nav-logo{opacity:0;animation:none}@media (prefers-reduced-motion: no-preference){@supports (animation-timeline: scroll()){.hero-logo{transform-origin:left top;animation:logo-fly linear both;animation-timeline:scroll(root);animation-range:0px var(--range, 1px)}.nav-row>.nav-logo{animation:logo-handoff linear both;animation-timeline:scroll(root);animation-range:0px var(--range, 1px)}}}.nav-row>.nav-logo{transition:opacity var(--dur-short) var(--ease-out)}.sheet[data-gone] .nav-row>.nav-logo{opacity:1}@keyframes logo-fly{99.9%{opacity:1}to{opacity:0;transform:translate(var(--dx, 0)) scale(var(--s, 1))}}@keyframes logo-handoff{0%,99.9%{opacity:0}to{opacity:1}}.hero .cv-title{margin-top:calc(var(--space-sm) - var(--space-lg));margin-bottom:var(--space-sm)}.section{display:grid;gap:var(--space-lg);padding-block:var(--space-2xl)}.experience-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--space-sm)}.experience-head .muted{font-size:var(--text-xs)}.experience-total{color:var(--color-ink)}.experience,.experience-roles,.experience-tasks{list-style:none;margin:0;padding:0}.experience>li{display:grid;grid-template-columns:1.75rem minmax(0,1fr);gap:var(--space-lg);padding-bottom:var(--space-xl)}.experience-spine{display:flex;flex-direction:column;align-items:center;gap:var(--space-sm)}.experience-years{writing-mode:vertical-rl;rotate:180deg;font-family:var(--font-display);font-style:italic;font-weight:var(--display-weight);font-size:var(--text-xl);line-height:1;white-space:nowrap;color:var(--color-ink)}[data-asso] .experience-years{color:var(--color-muted)}.experience-line{flex:1;min-height:var(--space-lg);border-left:var(--rule-hair) solid var(--color-rule-2)}.experience-main{display:grid;gap:var(--space-2xs)}.experience-main>.muted{font-size:var(--text-xs)}.experience-org{font-style:italic;font-weight:var(--display-weight);font-size:var(--text-xl);line-height:1.1;max-width:none}.experience-roles{margin-top:var(--space-xs)}.experience-role summary,li.experience-role{display:grid;grid-template-columns:minmax(0,1fr) auto 12px;align-items:baseline;gap:var(--space-md);padding-block:var(--space-xs)}.experience-role summary{cursor:pointer;list-style:none}.experience-role summary::-webkit-details-marker{display:none}.experience-role .num{white-space:nowrap;font-size:var(--text-xs)}.experience-role .project-icon{align-self:center}.experience-role-name{color:var(--color-ink);transition:transform var(--dur-short) var(--ease-out)}.experience-role summary:hover .experience-role-name{transform:translate(4px)}.experience-body{display:grid;gap:var(--space-sm);padding-bottom:var(--space-md);font-size:var(--text-sm);line-height:1.6}.experience-body>.muted{font-size:var(--text-xs)}.experience-tasks{display:grid;gap:var(--space-xs);line-height:1.55}.experience-tasks li{position:relative;padding-left:var(--space-md)}.experience-tasks li:before{content:"";position:absolute;left:2px;top:.7em;width:5px;border-top:1.5px solid var(--color-rule-2)}.projects{list-style:none;margin:0;padding:0;border-top:var(--rule-hair) solid var(--color-rule)}.projects>li{border-bottom:var(--rule-hair) solid var(--color-rule)}.project summary{display:grid;grid-template-columns:2.5rem minmax(0,1fr) auto 1rem;align-items:baseline;gap:var(--space-md);padding-block:var(--space-lg);cursor:pointer;list-style:none}.project summary::-webkit-details-marker{display:none}.project-num{color:var(--color-muted);font-size:var(--text-sm)}.project-name{font-style:italic;font-weight:var(--display-weight);font-size:var(--text-2xl);line-height:1.1;max-width:none;transition:transform var(--dur-short) var(--ease-out)}.project summary:hover .project-name{transform:translate(4px)}.project-meta{font-size:var(--text-sm);text-align:right}.project-icon{position:relative;align-self:center;width:12px;height:12px}.project-icon:before,.project-icon:after{content:"";position:absolute;inset:50% 0 auto;border-top:1.5px solid var(--color-ink);transition:transform var(--dur-short) var(--ease-out)}.project-icon:after{transform:rotate(90deg)}.project[open] .project-icon:after,.experience-role[open] .project-icon:after{transform:rotate(0)}.project,.experience-role{interpolate-size:allow-keywords}.project::details-content,.experience-role::details-content{block-size:0;opacity:0;overflow:clip;transition:block-size var(--dur-short) var(--ease-out),opacity var(--dur-short) var(--ease-out),content-visibility var(--dur-short) allow-discrete}.project[open]::details-content,.experience-role[open]::details-content{block-size:auto;opacity:1}.project-body{display:grid;justify-items:start;gap:var(--space-lg);padding:0 0 var(--space-xl) calc(2.5rem + var(--space-md))}.project-body .prose{font-size:var(--text-sm);line-height:1.6}.star{margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-md) var(--space-lg)}.star dt{color:var(--color-muted);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.06em}.star dd{margin:var(--space-2xs) 0 0;font-size:var(--text-sm);line-height:1.5}.marquee{--logo-h: 22px;overflow:hidden;padding-block:44px var(--space-xs);margin-block:-44px calc(-1 * var(--space-xs));-webkit-mask-image:linear-gradient(90deg,transparent,#000 18%,#000 82%,transparent);mask-image:linear-gradient(90deg,transparent,#000 18%,#000 82%,transparent)}.marquee-track{display:flex;width:-webkit-max-content;width:max-content}.marquee-list{display:flex;align-items:center;gap:var(--space-xl);margin:0;padding:0 var(--space-xl) 0 0;list-style:none}.marquee-logo{position:relative;display:grid;place-items:center;outline-offset:6px}.marquee-logo img{display:block;height:calc(var(--logo-h) * var(--scale) * sqrt(5 / var(--ratio)));width:auto;opacity:.75;transition:opacity var(--dur-short) var(--ease-out)}.marquee:hover img{opacity:.2}.marquee .marquee-logo:hover img,.marquee .marquee-logo:focus-visible img{opacity:1}.marquee-logo:hover .tooltip,.marquee-logo:focus-visible .tooltip{opacity:1;transform:translate(-50%)}@media (prefers-reduced-motion: reduce){.marquee{-webkit-mask-image:none;mask-image:none}.marquee-track{width:100%}.marquee-list{flex:1;flex-wrap:wrap;justify-content:center;row-gap:var(--space-lg);padding:0}.marquee-list[aria-hidden]{display:none}}.section-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-sm)}.switch{display:inline-flex;align-items:center;gap:var(--space-xs);min-height:44px;color:var(--color-muted);font-size:var(--text-sm);cursor:pointer}.switch input{-webkit-appearance:none;-moz-appearance:none;appearance:none;position:relative;width:36px;height:20px;margin:0;border-radius:var(--radius-pill);background:var(--color-rule-2);cursor:pointer;transition:background-color var(--dur-short) var(--ease-out)}.switch input:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--color-paper);transition:transform var(--dur-short) var(--ease-out)}.switch input:checked{background:var(--color-ink)}.switch input:checked:after{transform:translate(16px)}.switch:has(:checked){color:var(--color-ink)}::view-transition-group(*){animation-duration:.3s;animation-timing-function:var(--ease-out)}@media (prefers-reduced-motion: reduce){::view-transition-group(*){animation:none}}.tool-level{display:grid;gap:var(--space-sm)}.tool-level h3{font-family:var(--font-body);font-size:var(--text-sm);font-weight:500;letter-spacing:0;color:var(--color-muted)}.tools{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:var(--space-sm)}.tool{position:relative;display:grid;place-items:center;aspect-ratio:1;border:var(--rule-hair) solid var(--color-rule);border-radius:var(--radius-card);color:var(--color-muted);transition:color var(--dur-micro) var(--ease-out),border-color var(--dur-micro) var(--ease-out)}.tool svg{width:24px;height:24px;fill:currentColor}.tool-name{padding:var(--space-3xs);font-size:.6875rem;line-height:1.1;text-align:center;overflow-wrap:anywhere}.tool:hover,.tool:focus-visible{color:var(--color-ink);border-color:var(--color-rule-2)}.tooltip{position:absolute;bottom:calc(100% + var(--space-xs));left:50%;z-index:var(--z-tooltip);padding:var(--space-2xs) var(--space-xs);border-radius:var(--space-2xs);background:var(--color-ink);color:var(--color-paper);font-size:var(--text-xs);white-space:nowrap;pointer-events:none;opacity:0;transform:translate(-50%,var(--space-2xs));transition:opacity var(--dur-micro) var(--ease-out),transform var(--dur-micro) var(--ease-out)}.tool:hover .tooltip,.tool:focus-visible .tooltip{opacity:1;transform:translate(-50%)}.skills{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-lg) var(--space-xl)}.skills li{display:grid;gap:var(--space-2xs)}.skills h3{font-family:var(--font-body);font-size:var(--text-md);font-weight:500;letter-spacing:0}.skills p{font-size:var(--text-sm)}.on-ink{--color-paper: oklch(14% .032 282);--color-ink: oklch(99.6% .003 265);--color-ink-2: oklch(90% .01 265);--color-body: oklch(86% .012 265);--color-muted: oklch(70% .024 270);--color-rule: oklch(30% .04 280);--color-rule-2: oklch(46% .04 280);--color-focus: oklch(78% .1 265);background:var(--color-paper);color:var(--color-body)}.footer-cta-wrap{padding:var(--section-gap-s) var(--space-md) 0}.footer-cta{display:grid;justify-items:center;gap:var(--space-xl);max-width:calc(var(--container) + 2 * var(--space-2xl));margin-inline:auto;padding:var(--space-3xl) var(--gutter);border-radius:var(--space-lg);text-align:center}.footer-cta h2{font-style:italic;font-synthesis:none;font-size:var(--text-3xl);line-height:1.25;max-width:var(--measure);text-wrap:balance}.footer-cta .contact{justify-items:center;width:min(100%,26rem)}.footer-cta .actions{display:grid;grid-template-columns:1fr 1fr;width:100%}.footer-cta .btn{justify-content:center}.btn-arrow{margin-left:var(--space-xs);transition:transform var(--dur-short) var(--ease-out)}.btn:hover .btn-arrow{transform:translate(3px)}@supports (corner-shape: squircle){.footer-cta{border-radius:40px;corner-shape:squircle}}.footer{display:grid;gap:var(--space-lg);justify-items:start;padding-block:var(--space-xl)}.footer-cols{margin:0;width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-lg);font-size:var(--text-sm)}.footer-cols dt{color:var(--color-muted);margin-bottom:var(--space-2xs)}.footer-cols dd{margin:0;overflow-wrap:anywhere}.socials{display:flex;gap:var(--space-md)}.footer-legal{font-size:var(--text-xs)}@media (max-width: 48rem){.skills,.footer-cols{grid-template-columns:minmax(0,1fr)}.hero{padding-block:var(--space-3xl) var(--space-2xl)}}@media (max-width: 40rem){.nav-row{column-gap:var(--space-xs)}.nav-row>.nav-chip{padding-inline:var(--space-xs)}.nav-chip-cta{position:absolute;width:1px;height:1px;overflow:hidden;-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap}.tools{grid-template-columns:repeat(5,minmax(0,1fr))}.project summary{grid-template-columns:2rem minmax(0,1fr) 1rem}.project-meta{grid-column:2;grid-row:2;text-align:left}.project-body{padding-left:0}.star{grid-template-columns:minmax(0,1fr)}}.cv{min-height:100vh;background:var(--color-paper);padding-bottom:var(--space-3xl)}.cv-bar{position:-webkit-sticky;position:sticky;top:0;z-index:var(--z-sticky);display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding-block:var(--space-md);font-size:var(--text-sm);background:color-mix(in oklch,var(--color-paper) 88%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.cv-bar-actions{display:flex;align-items:center;gap:var(--space-xs)}.cv-bar .btn{white-space:nowrap}.cv-hero{display:grid;gap:var(--space-sm);padding-block:var(--space-3xl) var(--space-xl)}.cv-logo{width:clamp(240px,50vw,480px)}.cv-title{color:var(--color-ink);font-size:var(--text-lead)}.cv-small{font-size:var(--text-xs)}.cv-contact{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-sm) var(--space-lg);margin-top:var(--space-xs);padding-top:var(--space-md);border-top:var(--rule-hair) solid var(--color-rule);font-size:var(--text-xs);line-height:1.5}.cv-contact>div{display:grid;gap:var(--space-3xs);min-width:0}.cv-contact dt{color:var(--color-muted);font-size:11px;letter-spacing:.04em;text-transform:uppercase}.cv-contact dd{overflow:hidden;margin:0;color:var(--color-ink);font-weight:300;text-overflow:ellipsis;white-space:nowrap}.cv-strong{color:var(--color-ink);font-weight:500}.cv-section{display:grid;gap:var(--space-lg);padding-block:var(--space-xl)}.cv-prose{display:grid;gap:var(--space-sm)}.cv-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:var(--space-sm)}.cv-xp,.cv-tasks,.cv-list{list-style:none;margin:0;padding:0}.cv-xp{display:grid;gap:var(--space-lg)}.cv-xp-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-md)}.cv-xp-head>.num{font-size:var(--text-sm);white-space:nowrap}.cv-org-line{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:var(--space-xs)}.cv-org{font-family:var(--font-display);font-style:italic;font-weight:var(--display-weight);font-size:var(--text-xl);line-height:1.1;color:var(--color-ink)}.cv-role{display:grid;gap:var(--space-2xs);margin-top:var(--space-sm)}.cv-role-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;column-gap:var(--space-md);font-size:var(--text-sm)}.cv-tasks{display:grid;gap:var(--space-2xs);font-size:var(--text-xs);line-height:1.55}.cv-tasks li{position:relative;padding-left:var(--space-md)}.cv-tasks li:before{content:"";position:absolute;left:2px;top:.7em;width:5px;border-top:1.5px solid var(--color-rule-2)}.cv-skills{display:grid;gap:var(--space-xs);margin:0;font-size:var(--text-xs);line-height:1.5}.cv-skills div{display:grid;grid-template-columns:8.5rem minmax(0,1fr);gap:var(--space-md)}.cv-skills dt{color:var(--color-ink);font-weight:500}.cv-skills dd{margin:0}.cv-split{grid-template-columns:repeat(2,minmax(0,1fr))}.cv-split>div{display:grid;align-content:start;gap:var(--space-md)}.cv-list{display:grid;gap:var(--space-xs)}.cv-list li{display:grid;font-size:var(--text-sm)}@media (max-width: 40rem){.cv-back{text-decoration:none}.cv-back-label{position:absolute;width:1px;height:1px;overflow:hidden;-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap}.cv-bar .btn{padding-inline:var(--space-md)}.cv-split,.cv-skills div{grid-template-columns:minmax(0,1fr)}.cv-skills div{gap:0}}@page{size:A4;margin:12mm 14mm}@media print{:root{--space-xs: 5px;--space-sm: 7px;--space-md: 10px;--space-lg: 14px;--space-xl: 20px;--space-3xl: 0px}html{font-size:12px}body,.cv{background:#fff}.cv-bar{display:none}.container{padding-inline:0}.measure,.prose,.cv-prose p:not([class]){max-width:none}a.link{text-decoration:none}.cv-hero{padding-block:0 var(--space-md)}.cv-logo{width:180px}.cv-section{gap:var(--space-sm);padding-block:var(--space-sm)}.cv-tasks,.cv-skills,.cv-small,.cv-prose,.cv-contact,.cv-list li,.cv-role-head{font-size:8.5pt;line-height:1.4}.cv-contact{grid-template-columns:repeat(4,auto);justify-content:start;gap:0 var(--space-lg);margin-top:0;padding-top:var(--space-xs)}.cv-contact dt{font-size:6.5pt}.cv-contact dd{overflow:visible}.cv-tasks{gap:1px}.cv-org{font-size:12.5pt}.cv-xp{gap:var(--space-sm)}.cv-role{gap:2px;margin-top:var(--space-xs)}.cv-list{gap:var(--space-2xs)}.cv-list li{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:6px}.cv-xp>li,.cv-role,.cv-split{break-inside:avoid}}*,:before,:after{--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: rgb(59 130 246 / .5);--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: }::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: rgb(59 130 246 / .5);--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: }.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1440px){.container{max-width:1440px}}@media (min-width: 1536px){.container{max-width:1536px}}@media (min-width: 1920px){.container{max-width:1920px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.fixed{position:fixed}.sticky{position:-webkit-sticky;position:sticky}.block{display:block}.hidden{display:none}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.outline{outline-style:solid}.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)}.transition{transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}body{overscroll-behavior:none}
