/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}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;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);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}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.container\!{width:100%!important}@media (width>=40rem){.container\!{max-width:40rem!important}}@media (width>=48rem){.container\!{max-width:48rem!important}}@media (width>=64rem){.container\!{max-width:64rem!important}}@media (width>=80rem){.container\!{max-width:80rem!important}}@media (width>=96rem){.container\!{max-width:96rem!important}}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.table{display:table}.shrink{flex-shrink:1}.flex-grow,.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.border{border-style:var(--tw-border-style);border-width:1px}.text-wrap{text-wrap:wrap}.uppercase{text-transform:uppercase}.underline{text-decoration-line:underline}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.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,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a)) drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a) drop-shadow(0 1px 1px #0000000f);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,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}}:root{text-rendering:geometricprecision;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Google Sans Flex,Inter,ui-sans-serif,system-ui,sans-serif}*{box-sizing:border-box}html{scrollbar-width:none;min-height:100%;overflow:hidden}html::-webkit-scrollbar{display:none}body{background:#fff;min-height:100%;margin:0}#root{min-height:100%}.portfolio-v2{--page-background:#fff;--primary-text:#000;--secondary-text:gray;--card-background:#fff;--card-overlay:#f2f2f2;--card-radius:14px;--card-stroke:#000;--card-stroke-width:1px;--media-stroke:#0000000d;--media-stroke-width:1px;background:var(--page-background);min-height:100dvh;color:var(--primary-text);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.portfolio-v2[data-theme=dark]{--page-background:#000;--primary-text:#fff;--secondary-text:gray;--card-background:#000;--card-overlay:#1a1a1a;--card-stroke:#fff;--media-stroke:#ffffff0d;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.portfolio-v2__viewport{width:100%;height:100dvh;position:relative;overflow:hidden}.portfolio-v2__intro{z-index:200;max-width:min(300px,100vw - 48px);position:absolute;top:24px;left:24px}.portfolio-v2__intro h1,.portfolio-v2__role,.portfolio-v2__role p{letter-spacing:0;margin:0;font-size:16px;font-weight:400;line-height:normal}.portfolio-v2__intro h1{font-weight:400}.portfolio-v2__role{max-width:min(300px,100vw - 48px);color:var(--secondary-text);text-wrap:balance;margin-top:8px;font-size:14px;font-weight:400}.portfolio-v2__role p{font-size:14px}.portfolio-v2__role p+p{margin-top:4px}.portfolio-v2__role a{color:var(--primary-text);text-underline-offset:.12em;text-decoration:underline;text-decoration-thickness:1px}.portfolio-v2__intro h1,.portfolio-v2__role,.portfolio-resume h2,.portfolio-resume__contact,.portfolio-resume__item-copy,.project-modal__content h2,.project-modal__section-heading,.project-modal__meta{text-wrap:balance}.project-modal__content p,.project-modal__section-text,.project-modal__media-section figcaption{text-wrap:pretty}.portfolio-resume__contact{gap:8px;width:fit-content;margin-top:64px;font-size:16px;font-weight:400;line-height:normal;display:grid}.portfolio-resume__contact a{color:var(--primary-text);text-underline-offset:.12em;text-decoration:underline;text-decoration-thickness:1px}.portfolio-resume{z-index:120;width:min(555px,100vw - 48px);color:var(--primary-text);filter:blur(calc((1 - var(--resume-progress,0)) * 18px));opacity:var(--resume-progress,0);pointer-events:auto;transform:translate(-50%, calc(-50% + ((1 - var(--resume-progress,0)) * 72px)));will-change:filter, opacity, transform;transition:filter .36s cubic-bezier(.16,1,.3,1),opacity .18s,transform .44s cubic-bezier(.16,1,.3,1);position:absolute;top:50%;left:50%}.portfolio-resume__section+.portfolio-resume__section{margin-top:32px}.portfolio-resume h2,.portfolio-resume p{letter-spacing:0;margin:0;font-size:16px;line-height:normal}.portfolio-resume h2{font-weight:400}.portfolio-resume__items{gap:16px;margin-top:24px;display:grid}.portfolio-resume__item{grid-template-columns:minmax(0,1fr) max-content;align-items:start;gap:32px;display:grid}.portfolio-resume__item-copy{color:var(--secondary-text);font-weight:400}.portfolio-resume__date{color:var(--secondary-text);text-align:right;white-space:nowrap;font-weight:400;font-size:12px!important}.card-deck{z-index:180;aspect-ratio:4/3;perspective:1000px;width:555px;transform:translate(-50%, calc(-50% - var(--deck-resume-lift,0px)));transform-style:preserve-3d;touch-action:none;will-change:transform;position:absolute;top:50%;left:50%}.card-deck[data-opening-handoff=true]{z-index:1002;pointer-events:none}.card-deck[data-opening-handoff=true]>.flip-card:not([data-opening-handoff=true]){opacity:0;pointer-events:none}.flip-card{--card-opacity:1;--card-rotate-x:0deg;--card-scale:1;--card-stroke-opacity:.15;--card-tint-opacity:0;--card-translate-y:0px;border-radius:var(--card-radius);corner-shape:squircle;background:var(--card-background);opacity:var(--card-opacity);backface-visibility:hidden;transform:translateY(var(--card-translate-y)) rotateX(var(--card-rotate-x)) scale(var(--card-scale));transform-origin:50%;transform-style:preserve-3d;isolation:isolate;will-change:transform, opacity;cursor:pointer;border:0;margin:0;position:absolute;inset:0;overflow:hidden}.flip-card:before{content:"";z-index:3;border-radius:inherit;corner-shape:inherit;box-shadow:inset 0 0 0 var(--card-stroke-width) var(--card-stroke);opacity:var(--card-stroke-opacity);pointer-events:none;position:absolute;inset:0}.flip-card__overlay{z-index:2;border-radius:inherit;corner-shape:inherit;background-color:var(--card-overlay);opacity:1;pointer-events:none;transition:background-color .22s;position:absolute;inset:0}.flip-card[data-media-ready=true]>.flip-card__overlay{opacity:var(--card-tint-opacity);transition:background-color .22s,opacity .64s ease-in-out}.flip-card img,.flip-card video,.flip-card__mux-player,.flip-card__placeholder{z-index:1;border-radius:inherit;corner-shape:inherit;width:100%;height:100%;display:block;position:relative;overflow:hidden}.flip-card img,.flip-card video,.flip-card__mux-player{object-fit:cover;transition:filter .52s cubic-bezier(.22,1,.36,1),opacity .52s,transform .52s cubic-bezier(.22,1,.36,1)}.portfolio-v2[data-effects=reduced] .flip-card img,.portfolio-v2[data-effects=reduced] .flip-card video,.portfolio-v2[data-effects=reduced] .flip-card__mux-player,.portfolio-v2[data-effects=reduced] .project-modal__media{transition:opacity .18s}.flip-card__placeholder{background:var(--card-background)}.flip-card[data-source-hidden=true]{visibility:hidden;pointer-events:none}.portfolio-v2[data-browser=safari] .flip-card[data-source-hidden=true]{visibility:visible;opacity:0}.project-modal-shell{z-index:900;opacity:0;pointer-events:none;-webkit-backdrop-filter:blur(12px);background:#0006;transition:opacity .5s cubic-bezier(.22,1,.36,1);position:fixed;inset:0}.project-modal-shell[data-open=true]{opacity:1;pointer-events:auto}.portfolio-v2[data-effects=reduced] .project-modal-shell{-webkit-backdrop-filter:none;transition:opacity .18s}.portfolio-v2[data-browser=safari] .project-modal-shell{-webkit-backdrop-filter:none}.portfolio-v2[data-effects=reduced] .flip-card,.portfolio-v2[data-browser=safari] .flip-card{filter:none!important}.flip-card[data-promoted=true]{--modal-surface:#fff;inset:auto;top:var(--card-closed-top);left:var(--card-closed-left);width:var(--card-closed-width);height:var(--card-closed-height);opacity:1;scrollbar-width:none;cursor:default;transform:perspective(1000px) translateY(var(--card-closed-translate-y)) rotateX(var(--card-closed-rotate-x)) scale(var(--card-closed-scale));transform-origin:50%;background:0 0;transition:top .5s cubic-bezier(.22,1,.36,1),left .5s cubic-bezier(.22,1,.36,1),width .5s cubic-bezier(.22,1,.36,1),height .5s cubic-bezier(.22,1,.36,1),transform .5s cubic-bezier(.22,1,.36,1),opacity .12s,border-radius .5s cubic-bezier(.22,1,.36,1);position:fixed;overflow:hidden;z-index:1000!important;filter:none!important}.portfolio-v2[data-theme=dark] .flip-card[data-promoted=true]{--modal-surface:#1a1a1a}.flip-card[data-promoted=true]:before{z-index:8;transition:opacity .5s cubic-bezier(.22,1,.36,1)}.portfolio-v2:not([data-theme=dark]) .flip-card[data-promoted=true][data-open=true]:before{opacity:0}.flip-card[data-promoted=true]::-webkit-scrollbar{display:none}.flip-card[data-promoted=true][data-closing=true]{top:var(--card-live-top,var(--card-closed-top));left:var(--card-live-left,var(--card-closed-left));width:var(--card-live-width,var(--card-closed-width));height:var(--card-live-height,var(--card-closed-height));pointer-events:none;transform:translate(var(--card-close-dx,0px), var(--card-close-dy,0px)) scale(var(--card-close-scale-x,1), var(--card-close-scale-y,1)) perspective(1000px) translateY(var(--card-close-translate-y,0px)) rotateX(var(--card-close-rotate-x,0deg)) scale(var(--card-close-scale,1));transform-origin:50%;transition:opacity .12s,border-radius .5s cubic-bezier(.22,1,.36,1)}.flip-card[data-promoted=true]>img,.flip-card[data-promoted=true]>video,.flip-card[data-promoted=true]>.flip-card__mux-player,.flip-card[data-promoted=true]>.flip-card__placeholder{z-index:1;transition:filter .52s cubic-bezier(.22,1,.36,1),transform .52s cubic-bezier(.22,1,.36,1);position:absolute;inset:0}.flip-card[data-promoted=true] .flip-card__overlay{background:var(--modal-surface);opacity:0;transition:opacity .46s cubic-bezier(.22,1,.36,1)}.flip-card[data-promoted=true][data-open=true]{top:var(--card-target-top);left:var(--card-target-left);width:var(--card-target-width);height:var(--card-target-height);border-radius:var(--card-radius);overflow:hidden;transform:perspective(1000px)translateY(0)rotateX(0)scale(1)}.flip-card[data-promoted=true][data-open=true][data-resizing=true]{transition:opacity .12s,border-radius}.portfolio-v2[data-effects=reduced] .flip-card[data-promoted=true]{transition:top .18s,left .18s,width .18s,height .18s,transform .18s,opacity .18s,border-radius .18s}.flip-card[data-promoted=true][data-open=true]:not([data-closing=true]) .flip-card__overlay{opacity:1;transition:opacity .5s cubic-bezier(.22,1,.36,1)}.flip-card[data-promoted=true][data-closing=true] .flip-card__overlay{opacity:0;transition:opacity .36s cubic-bezier(.22,1,.36,1) .12s}.flip-card[data-promoted=true][data-open=true]>img,.flip-card[data-promoted=true][data-open=true]>video,.flip-card[data-promoted=true][data-open=true]>.flip-card__mux-player,.flip-card[data-promoted=true][data-open=true]>.flip-card__placeholder{filter:blur(18px);transform:scale(1.04)}.flip-card[data-opening-handoff=true]{--modal-surface:#fff;pointer-events:none;cursor:default;transition:transform .5s cubic-bezier(.22,1,.36,1),opacity .12s,border-radius .5s cubic-bezier(.22,1,.36,1);filter:none!important}.portfolio-v2[data-theme=dark] .flip-card[data-opening-handoff=true]{--modal-surface:#1a1a1a}.flip-card[data-opening-handoff=true]:before{z-index:8;transition:opacity .5s cubic-bezier(.22,1,.36,1)}.portfolio-v2:not([data-theme=dark]) .flip-card[data-opening-handoff=true][data-opening-open=true]:before{opacity:0}.flip-card[data-opening-handoff=true] .flip-card__overlay{background:var(--modal-surface);opacity:0;transition:opacity .5s cubic-bezier(.22,1,.36,1)}.flip-card[data-opening-handoff=true][data-opening-open=true]{transform:translate(var(--card-open-dx,0px), var(--card-open-dy,0px)) scale(var(--card-open-scale-x,1), var(--card-open-scale-y,1))}.flip-card[data-opening-handoff=true][data-opening-open=true] .flip-card__overlay{opacity:1}.flip-card[data-opening-handoff=true][data-opening-open=true]>img,.flip-card[data-opening-handoff=true][data-opening-open=true]>video,.flip-card[data-opening-handoff=true][data-opening-open=true]>.flip-card__mux-player,.flip-card[data-opening-handoff=true][data-opening-open=true]>.flip-card__placeholder{filter:blur(18px);transform:scale(1.04)}.portfolio-v2[data-effects=reduced] .flip-card[data-promoted=true][data-open=true]>img,.portfolio-v2[data-effects=reduced] .flip-card[data-promoted=true][data-open=true]>video,.portfolio-v2[data-effects=reduced] .flip-card[data-promoted=true][data-open=true]>.flip-card__mux-player,.portfolio-v2[data-effects=reduced] .flip-card[data-promoted=true][data-open=true]>.flip-card__placeholder{transition:opacity .18s;transform:none}.portfolio-v2[data-effects=reduced] .flip-card[data-promoted=true][data-open=true]>img,.portfolio-v2[data-effects=reduced] .flip-card[data-promoted=true][data-open=true]>video,.portfolio-v2[data-effects=reduced] .flip-card[data-promoted=true][data-open=true]>.flip-card__mux-player,.portfolio-v2[data-effects=reduced] .flip-card[data-promoted=true][data-open=true]>.flip-card__placeholder,.portfolio-v2[data-browser=safari] .flip-card[data-promoted=true][data-open=true]>img,.portfolio-v2[data-browser=safari] .flip-card[data-promoted=true][data-open=true]>video,.portfolio-v2[data-browser=safari] .flip-card[data-promoted=true][data-open=true]>.flip-card__mux-player,.portfolio-v2[data-browser=safari] .flip-card[data-promoted=true][data-open=true]>.flip-card__placeholder{filter:none}.project-modal__close{z-index:9;color:#000;min-width:64px;height:32px;font:inherit;cursor:pointer;opacity:0;background:#fff;border:1px solid #0000000d;border-radius:6px;justify-content:center;align-items:center;margin:0;padding:6px;font-size:16px;font-weight:400;line-height:normal;transition:background-color .16s,opacity .32s;display:flex;position:absolute;top:12px;right:12px}.project-modal__close:hover{background:#f2f2f2}.project-modal__close:active{background:#e6e6e6}.portfolio-v2[data-theme=dark] .project-modal__close{color:#fff;background:#1a1a1a;border-color:#ffffff0d}.portfolio-v2[data-theme=dark] .project-modal__close:hover{background:#262626}.portfolio-v2[data-theme=dark] .project-modal__close:active{background:#333}.flip-card[data-content-visible=true] .project-modal__close,.mobile-project-modal[data-content-visible=true] .project-modal__close{opacity:1}.flip-card[data-promoted=true][data-closing=true] .project-modal__close{pointer-events:none;transform:scale(var(--card-close-content-scale-x,1), var(--card-close-content-scale-y,1));transform-origin:100% 0}.project-modal__content{z-index:4;box-sizing:border-box;scrollbar-width:none;touch-action:pan-y;transform-origin:0 0;-webkit-overflow-scrolling:touch;width:100%;height:100%;padding:112px 64px 64px;transition:opacity .44s;position:absolute;inset:0;overflow-y:auto}.project-modal__content::-webkit-scrollbar{display:none}.flip-card[data-promoted=true][data-closing=true] .project-modal__content{width:var(--card-close-content-width,100%);height:var(--card-close-content-height,100%);opacity:0;pointer-events:none;transform:scale(var(--card-close-content-scale-x,1), var(--card-close-content-scale-y,1))}.project-modal__reveal{filter:blur(18px);opacity:0;transition:filter .44s cubic-bezier(.22,1,.36,1),opacity .44s,transform .44s cubic-bezier(.22,1,.36,1);transform:translateY(18px)}.portfolio-v2[data-effects=reduced] .project-modal__reveal{filter:none;transition:opacity .18s;transform:none}.portfolio-v2[data-browser=safari] .project-modal__reveal{filter:none}.flip-card[data-content-visible=true] .project-modal__reveal{filter:blur();opacity:1;transform:translateY(0)}.mobile-project-modal[data-content-visible=true] .project-modal__reveal{opacity:1;transform:none}.portfolio-v2[data-effects=reduced] .flip-card[data-content-visible=true] .project-modal__reveal,.portfolio-v2[data-effects=reduced] .mobile-project-modal[data-content-visible=true] .project-modal__reveal{filter:none;transition:opacity .18s;transform:none}.portfolio-v2[data-browser=safari] .flip-card[data-content-visible=true] .project-modal__reveal,.portfolio-v2[data-browser=safari] .mobile-project-modal[data-content-visible=true] .project-modal__reveal{filter:none}.portfolio-v2[data-browser=safari] .flip-card[data-promoted=true][data-closing=true] .project-modal__reveal{filter:blur(18px)}.mobile-project-modal .project-modal__reveal{filter:blur(18px);opacity:0;transition:filter .44s cubic-bezier(.22,1,.36,1),opacity .44s,transform .44s cubic-bezier(.22,1,.36,1);transform:translateY(18px)}@keyframes mobile-project-reveal{0%{filter:blur(18px);opacity:0;transform:translateY(18px)}to{filter:blur();opacity:1;transform:translateY(0)}}.mobile-project-modal[data-content-visible=true] .project-modal__reveal{filter:blur(18px);opacity:0;transition:none;animation:.44s cubic-bezier(.22,1,.36,1) forwards mobile-project-reveal;transform:translateY(18px)}.mobile-project-modal[data-content-visible=true] .project-modal__reveal:first-child{animation-delay:0s}.mobile-project-modal[data-content-visible=true] .project-modal__reveal:nth-child(2){animation-delay:50ms}.mobile-project-modal[data-content-visible=true] .project-modal__reveal:nth-child(3){animation-delay:.1s}.mobile-project-modal[data-content-visible=true] .project-modal__reveal:nth-child(4){animation-delay:.15s}.flip-card[data-content-visible=true] .project-modal__reveal:first-child{transition-delay:0s}.flip-card[data-content-visible=true] .project-modal__reveal:nth-child(2){transition-delay:50ms}.flip-card[data-content-visible=true] .project-modal__reveal:nth-child(3){transition-delay:.1s}.flip-card[data-content-visible=true] .project-modal__reveal:nth-child(4){transition-delay:.15s}.flip-card[data-content-visible=true] .project-modal__sections .project-modal__reveal{transition-delay:var(--project-reveal-delay,.1s)}.mobile-project-modal[data-content-visible=true] .project-modal__sections .project-modal__reveal{animation-delay:var(--project-reveal-delay,.1s)}.project-modal__meta,.project-modal__content h2,.project-modal__content p{letter-spacing:0;max-width:640px;margin:0;font-size:16px;font-weight:400;line-height:normal}.project-modal__content p,.project-modal__meta{color:var(--secondary-text)}.project-modal__content h2{color:var(--primary-text);font-size:20px;font-weight:400}.project-modal__content h2+p{margin-top:8px}.project-modal__sections,.project-modal__section+.project-modal__section{margin-top:48px}.project-modal__section-heading{max-width:640px;color:var(--primary-text);letter-spacing:0;margin:0;font-size:16px;font-weight:400;line-height:normal}.project-modal__section-text{max-width:640px;color:var(--secondary-text);letter-spacing:0;font-size:14px;font-weight:400;line-height:normal}.project-modal__section-text p{font-size:14px}.project-modal__section-list{color:var(--secondary-text);margin:0;padding-left:1.2em;font-size:14px;line-height:normal;list-style-position:outside}.project-modal__section-list:is(ul){list-style-type:disc}.project-modal__section-list:is(ul)[data-level="2"]{list-style-type:circle}.project-modal__section-list:is(ul)[data-level="3"],.project-modal__section-list:is(ul)[data-level="4"]{list-style-type:square}.project-modal__section-list:is(ol){list-style-type:decimal}.project-modal__section-list[data-level="2"]{padding-left:2.4em}.project-modal__section-list[data-level="3"]{padding-left:3.6em}.project-modal__section-list[data-level="4"]{padding-left:4.8em}.project-modal__section-list::marker{color:var(--secondary-text)}.project-modal__section-list li::marker{color:var(--secondary-text)}.project-modal__section-list li+li{margin-top:4px}.project-modal__section-text a{color:var(--primary-text);text-underline-offset:.12em;text-decoration:underline;text-decoration-thickness:1px}.project-modal__section-heading+.project-modal__section-text{margin-top:8px}.project-modal__section-text p+p,.project-modal__section-text p+.project-modal__section-list,.project-modal__section-list+p{margin-top:16px}.project-modal__section-list+.project-modal__section-list{margin-top:4px}.project-modal__media-section,.project-modal__media-grid{max-width:100%;margin:0}.project-modal__media-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;display:grid}.project-modal__media-frame{aspect-ratio:16/9;border-radius:var(--card-radius);background:var(--card-overlay);corner-shape:squircle;contain:paint;isolation:isolate;width:100%;max-height:min(720px,72vh);transition:background-color .22s;position:relative;overflow:hidden;-webkit-mask-image:-webkit-radial-gradient(#fff,#000)}.project-modal__media-section--large .project-modal__media-frame{--media-stroke:#00000026;max-height:none;aspect-ratio:var(--media-aspect-ratio,1.77778)}.portfolio-v2[data-theme=dark] .project-modal__media-section--large .project-modal__media-frame{--media-stroke:#ffffff26}.project-modal__media-section--large .project-modal__media-frame[data-fit=contain]{width:min(100%, var(--media-contain-width,100%));margin-inline:auto}.project-modal__media-frame:after{content:"";z-index:2;border-radius:inherit;corner-shape:inherit;box-shadow:inset 0 0 0 var(--media-stroke-width) var(--media-stroke);pointer-events:none;position:absolute;inset:0}.project-modal__media-frame[data-stroke=false]:after{opacity:0}.project-modal__media{border-radius:inherit;corner-shape:inherit;object-fit:cover;opacity:1;width:100%;height:100%;transition:opacity .18s;display:block;overflow:hidden;transform:translateZ(0)}.project-modal__media-section--large .project-modal__media{object-fit:cover;height:100%}.project-modal__media-section--large .project-modal__media-frame[data-fit=contain] .project-modal__media{object-fit:contain}.project-modal__media-section figcaption{max-width:640px;color:var(--secondary-text);margin-top:8px;font-size:12px;line-height:normal}.project-modal__meta{margin-top:20px}.mobile-project-modal{--modal-surface:var(--card-background);z-index:1000;overscroll-behavior:contain;background:var(--card-background);color:var(--primary-text);opacity:0;pointer-events:none;transition:opacity .22s;position:fixed;inset:0;overflow:hidden}.mobile-project-modal[data-open=true]{opacity:1;pointer-events:auto}.mobile-project-modal:after{content:"";z-index:8;pointer-events:none;background:linear-gradient(#fff0 0%,#ffffff14 10%,#ffffff3d 26%,#ffffff8a 48%,#ffffffb8 70%,#fffc 100%);height:136px;position:absolute;bottom:0;left:0;right:0}.portfolio-v2[data-theme=dark] .mobile-project-modal:after{background:linear-gradient(#0000 0%,#00000014 10%,#0000003d 26%,#0000008a 48%,#000000b8 70%,#000c 100%)}.mobile-project-modal .project-modal__content{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;overflow-y:auto}.physics-controls{z-index:300;background:#fffffff0;border:1px solid #000;width:210px;padding:16px;position:absolute;top:50%;right:32px;transform:translateY(-50%)}.physics-control{display:block}.physics-control+.physics-control{margin-top:18px}.physics-control span{justify-content:space-between;align-items:baseline;margin-bottom:8px;font-size:12px;line-height:1;display:flex}.physics-control output{color:gray;font-variant-numeric:tabular-nums}.physics-control input{accent-color:#000;width:100%;margin:0;display:block}@media (width<=700px){html{overflow:auto}body,#root{min-height:100%;overflow:visible}.portfolio-v2{min-height:100dvh}.portfolio-v2__viewport{height:auto;min-height:100dvh;padding:0 0 24px;overflow:visible}.portfolio-v2__intro{width:auto;max-width:min(300px,100vw - 48px);margin:92px 24px;position:relative;top:auto;left:auto}.card-deck{aspect-ratio:auto;perspective:none;transform-style:flat;touch-action:pan-y;flex-direction:column;gap:24px;width:auto;margin:0 12px;display:flex;position:relative;top:auto;left:auto;transform:none}.card-deck>.flip-card{aspect-ratio:1;transform-style:flat;touch-action:pan-y;will-change:auto;content-visibility:auto;contain-intrinsic-size:360px;width:100%;height:auto;position:relative;inset:auto;--card-tint-opacity:0!important;--card-translate-y:0px!important;--card-rotate-x:0deg!important;--card-scale:1!important;z-index:auto!important;transform:none!important}.portfolio-resume{filter:none;opacity:1;pointer-events:auto;width:auto;margin:80px 24px 32px;transition:none;position:relative;top:auto;left:auto;transform:none}.portfolio-resume__item{gap:24px}.portfolio-resume__contact{max-width:min(300px,100vw - 48px);margin-top:96px;margin-bottom:64px}.physics-controls{width:180px;top:auto;bottom:16px;right:16px;transform:none}.project-modal__close{border-color:#00000026;width:182px;min-width:182px;height:64px;inset:auto auto 36px 50%;transform:translate(-50%)}.portfolio-v2[data-theme=dark] .project-modal__close{border-color:#ffffff26}.project-modal__content{padding:96px 32px 136px}.project-modal__meta,.project-modal__content h2,.project-modal__content p,.project-modal__section-heading,.project-modal__section-text,.project-modal__section-list,.project-modal__media-section figcaption{max-width:calc(100% - 24px)}.project-modal__media-section--large{width:calc(100% + 40px);max-width:none;margin-inline:-20px}.project-modal__media-grid{grid-template-columns:1fr}.project-modal__media-frame{max-height:none}.mobile-project-modal .project-modal__section{content-visibility:auto;contain-intrinsic-size:420px}}@media (prefers-reduced-motion:reduce){.flip-card{transition:none}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
