@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-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--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-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;--color-red-700:#bf000f;--color-orange-50:#fff7ed;--color-orange-700:#c53c00;--color-amber-50:#fffbeb;--color-lime-400:#9de500;--color-green-700:#008138;--color-teal-600:#009588;--color-cyan-500:#00b7d7;--color-blue-200:#bedbff;--color-blue-900:#1c398e;--color-gray-50:#f9fafb;--color-gray-100:#f3f4f6;--color-gray-200:#e5e7eb;--color-gray-300:#d1d5dc;--color-gray-400:#99a1af;--color-gray-500:#6a7282;--color-gray-600:#4a5565;--color-gray-700:#364153;--color-gray-800:#1e2939;--color-gray-900:#101828;--color-white:#fff;--spacing:.25rem;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 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);--color-dm-accent:tan;--color-lm-accent:tan}@supports (color:lab(0% 0 0)){:root,:host{--color-red-700:lab(40.4273% 67.2623 53.7441);--color-orange-50:lab(97.7008% 1.53735 5.90649);--color-orange-700:lab(46.4615% 57.7275 70.8507);--color-amber-50:lab(98.6252% -.635922 8.42309);--color-lime-400:lab(83.7876% -45.0447 88.4738);--color-green-700:lab(47.0329% -47.0239 31.4788);--color-teal-600:lab(55.0223% -41.0774 -3.90277);--color-cyan-500:lab(67.805% -35.3952 -30.2018);--color-blue-200:lab(86.15% -4.04379 -21.0797);--color-blue-900:lab(26.1542% 15.7545 -51.5504);--color-gray-50:lab(98.2596% -.247031 -.706708);--color-gray-100:lab(96.1596% -.0823438 -1.13575);--color-gray-200:lab(91.6229% -.159115 -2.26791);--color-gray-300:lab(85.1236% -.612259 -3.7138);--color-gray-400:lab(65.9269% -.832707 -8.17473);--color-gray-500:lab(47.7841% -.393182 -10.0268);--color-gray-600:lab(35.6337% -1.58697 -10.8425);--color-gray-700:lab(27.1134% -.956401 -12.3224);--color-gray-800:lab(16.1051% -1.18239 -11.7533);--color-gray-900:lab(8.11897% .811279 -12.254)}}}@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{.\@container{container-type:inline-size}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.right-0{right:calc(var(--spacing) * 0)}.bottom-0{bottom:calc(var(--spacing) * 0)}.left-0{left:calc(var(--spacing) * 0)}.isolate{isolation:isolate}.z-1{z-index:1}.z-2{z-index:2}.z-3{z-index:3}.z-4{z-index:4}.z-10{z-index:10}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-1{margin:calc(var(--spacing) * 1)}.m-2{margin:calc(var(--spacing) * 2)}.m-3{margin:calc(var(--spacing) * 3)}.m-4{margin:calc(var(--spacing) * 4)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.list-item{display:list-item}.table{display:table}.h-1{height:calc(var(--spacing) * 1)}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-full{height:100%}.w-1{width:calc(var(--spacing) * 1)}.w-2{width:calc(var(--spacing) * 2)}.w-3{width:calc(var(--spacing) * 3)}.w-4{width:calc(var(--spacing) * 4)}.w-full{width:100%}.max-w-none{max-width:none}.flex-1{flex:1}.flex-shrink,.shrink{flex-shrink:1}.grow{flex-grow:1}.basis-full{flex-basis:100%}.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}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-\[2vw_2vh\]{gap:2vw 2vh}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.border{border-style:var(--tw-border-style);border-width:1px}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-\[var\(--space\)\]{padding:var(--space)}.text-center{text-align:center}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.invert{--tw-invert:invert(100%);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,)}.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-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.\[xml\:lang\]{xml:lang}}@font-face{font-family:Roboto Flex;src:url(/fonts/Roboto-body-subset.woff2)format("woff2");font-weight:100 1000;font-stretch:25% 200%;font-display:swap}@font-face{font-family:Roboto Flex Full;src:url(/fonts/Roboto-full-subset.woff2)format("woff2");font-weight:100 1000;font-stretch:25% 200%;font-display:swap}:root{--dm-primary:black;--dm-secondary:oldlace;--dm-accent:tan;--lm-primary:oldlace;--lm-secondary:black;--lm-accent:tan;--fs-xs:clamp(.5rem, .3947rem + .5263vw, .75rem);--fs-s:clamp(.6rem, .0716rem + 2.4865vw, 1.75rem);--fs-m:clamp(.8rem, .2486rem + 2.5946vw, 2rem);--fs-l:clamp(1rem, .0811rem + 4.3243vw, 3rem);--fs-xl:clamp(1.5rem, .0297rem + 6.9189vw, 4.7rem);--fweight-superlight:100;--fweight-light:200;--fweight-roman:400;--fweight-medium:600;--fweight-bold:800;--fweight-superbold:1000;--fwidth-supercondensed:25;--fwidth-condensed:50;--fwidth-normal:100;--fwidth-extended:150;--fwidth-superextended:200;--space:clamp(.4rem, -.473rem + 4.1081vw, 2.3rem);--standard-duration:1s}*,:before,:after{cursor:none!important}::selection{background-color:var(--dm-accent);text-shadow:0 0 8px #000}html{background-color:var(--dm-primary)}body{background-color:var(--dm-primary);color:var(--dm-secondary);scrollbar-width:none;font-variation-settings:"GRAD" -200, "XOPQ" 150, "YOPQ" 120, "XTRA" 450, "YTAS" 750, "YTDE" -240, "YTFI" 720, "YTLC" 500, "YTUC" 800;font-family:Roboto Flex,sans-serif;overflow-y:auto}body.inverted{--dm-primary:oldlace;--dm-secondary:black;background-color:var(--dm-primary);color:var(--dm-secondary)}body:has(.theme-inverted){--dm-primary:oldlace;--dm-secondary:black;background-color:var(--dm-primary);color:var(--dm-secondary)}::-webkit-scrollbar{display:none}h1{font-variation-settings:"wght" var(--fweight-bold), "wdth" var(--fwidth-normal), "GRAD" var(--fweight-light), "slnt" 0;font-size:var(--fs-xl);transition:font-variation-settings var(--standard-duration) ease}h2{font-variation-settings:"wght" var(--fweight-bold), "wdth" var(--fwidth-superextended), "GRAD" var(--fweight-light), "slnt" 0;font-size:var(--fs-xl);transition:font-variation-settings var(--standard-duration) ease}h3,h4{font-variation-settings:"wght" var(--fweight-bold), "wdth" var(--fwidth-extended);font-size:var(--fs-l)}h5,h6,.subheading-sm{font-variation-settings:"wght" var(--fweight-medium), "wdth" var(--fwidth-extended);font-size:var(--fs-m)}.section-title-xl{font-variation-settings:"wght" var(--fweight-bold), "wdth" var(--fwidth-normal), "GRAD" var(--fweight-light), "slnt" 0;font-size:var(--fs-xl)}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}h1:hover,h2:hover{font-variation-settings:"wght" var(--fweight-superbold), "wdth" var(--fwidth-superextended), "GRAD" 1000, "slnt" -15}p{font-variation-settings:"wght" var(--fweight-roman), "wdth" var(--fwidth-normal);width:clamp(45ch,50%,80ch);max-width:100%;font-size:var(--fs-s);overflow-wrap:break-word}li{font-variation-settings:"wght" var(--fweight-roman), "wdth" var(--fwidth-normal);font-size:var(--fs-s)}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--dm-accent);outline-offset:2px}img{border-radius:1em}section{gap:2vw 2vh;padding:2vh clamp(.5rem,10.5946vw - 1.7514rem,5.4rem);display:grid}#custom-cursor{width:var(--fs-xl);height:var(--fs-xl);z-index:50;pointer-events:none;mix-blend-mode:difference;background-color:#fdf5e6;border-radius:100%;transition:transform .4s 50ms;position:fixed;top:-100px;left:-100px;transform:translate(-50%,-50%)scale(1)}.vita-card{background-color:var(--dm-secondary);color:var(--dm-primary);box-shadow:inset 0 0 0rem 0px var(--dm-accent);text-align:center;border-radius:10px;padding:2vw;line-height:1;transition:box-shadow 1s;overflow:hidden}.vita-card:hover{box-shadow:inset 0 0 4rem 0px var(--dm-accent)}.vita-card h3{font-variation-settings:"wght" var(--fweight-medium), "wdth" var(--fwidth-normal), "GRAD" var(--fweight-light), "slnt" 0}.vita-card li{margin-bottom:1vh}.cv-section{padding:var(--space);max-width:960px;margin:0 auto}.cv-heading{font-variation-settings:"wght" var(--fweight-medium), "wdth" var(--fwidth-normal), "GRAD" var(--fweight-light), "slnt" 0;font-size:var(--fs-m);border-bottom:1px solid var(--dm-accent);margin-top:2.5rem;margin-bottom:1rem;padding-bottom:.4rem}.cv-timeline{flex-direction:column;gap:.6rem;display:flex}.cv-timeline-row{font-size:var(--fs-s);align-items:baseline;gap:1.5rem;display:flex}.cv-year{opacity:.5;font-variation-settings:"wght" var(--fweight-light), "wdth" var(--fwidth-normal);flex-shrink:0;width:10ch}.cv-content{font-variation-settings:"wght" var(--fweight-roman), "wdth" var(--fwidth-normal)}.vita-list{flex-direction:column;display:flex}.vita-entry{flex-direction:column;gap:.35rem;padding:1.5rem 0;display:flex}.vita-entry+.vita-entry{border-top:1px solid #fdf5e626}.vita-entry-date{letter-spacing:.08em;text-transform:uppercase;opacity:.45;align-items:center;gap:.55rem;font-size:clamp(.8rem,.66rem + .45vw,1rem);display:flex}.vita-entry-date:before{content:"";opacity:.8;border:1px solid;border-radius:50%;flex:none;width:7px;height:7px}.vita-entry-title{font-size:var(--fs-s)}.vita-entry-title strong{font-variation-settings:"wght" var(--fweight-medium), "wdth" var(--fwidth-normal)}.vita-entry-sep{opacity:.3;margin:0 .5rem}.vita-entry-role{opacity:.7}.vita-entry-sub{font-size:var(--fs-s);opacity:.6}.vita-entry-desc{opacity:.6;width:100%;max-width:100%;margin:.4rem 0 0;font-size:clamp(1rem,.72rem + .9vw,1.3rem);line-height:1.6}.cv-skills-groups{flex-direction:column;gap:2rem;display:flex}.cv-skills-group-title{font-size:var(--fs-s);font-variation-settings:"wght" var(--fweight-medium), "wdth" var(--fwidth-normal);opacity:.6;margin-bottom:.8rem}.cv-skills-icons{flex-wrap:wrap;gap:1.5rem;display:flex}.cv-skill-item{flex-direction:column;align-items:center;gap:.3rem;min-width:4rem;display:flex}.cv-skill-icon{filter:grayscale()brightness(1.5);border-radius:0;width:2.5rem;height:2.5rem;transition:filter .3s}.cv-skill-icon:hover{filter:grayscale(0)brightness()}.cv-skill-label{font-size:var(--fs-xs);opacity:.6;text-align:center;white-space:nowrap}.cv-skill-text-icon{font-size:var(--fs-xs);font-variation-settings:"wght" var(--fweight-roman), "wdth" var(--fwidth-normal);border:1px solid var(--dm-accent);opacity:.7;white-space:nowrap;border-radius:4px;padding:.3rem .6rem}.cv-misc{flex-direction:column;gap:2rem;display:flex}.cv-misc-block{flex-direction:column;gap:.5rem;display:flex}.cv-misc-title{font-size:var(--fs-s);font-variation-settings:"wght" var(--fweight-medium), "wdth" var(--fwidth-normal);opacity:.6}@media (max-width:600px){.cv-timeline-row{flex-direction:column;gap:.2rem}.cv-year{width:auto}.cv-skills-icons{gap:1rem}.cv-skill-item{min-width:3rem}.cv-skill-icon{width:2rem;height:2rem}}.project-strip{will-change:height;width:100%;height:12.5vh;transition:filter .4s,height .1s linear;display:block;position:relative;overflow:hidden}.project-strip-bg{z-index:0;will-change:transform;position:absolute;inset:-60% 0}.project-strip:hover{filter:brightness(1.1)}.project-strip-overlay{z-index:1;background:#0000008c;flex-direction:column;justify-content:center;align-items:center;gap:.4rem;padding:1rem 2rem;display:flex;position:absolute;inset:0}.project-strip-overlay h3{color:#fdf5e6;font-size:var(--fs-m);text-shadow:0 2px 12px #00000080}.project-strip .tag-pill{color:#fdf5e6;border-color:#fdf5e699}.project-hero{width:100vw;height:80vh;margin-left:calc(50% - 50vw);position:relative;overflow:hidden}.project-hero-img{object-fit:cover;width:100%;height:130%;position:absolute;top:0;left:0;border-radius:0!important}.project-hero-overlay{pointer-events:none;background:linear-gradient(#00000026 0%,#0000 40%,#00000026 60%,#000000b3 100%);position:absolute;inset:0}.project-hero-back{color:#fdf5e6;font-size:var(--fs-l);text-shadow:0 2px 12px #00000080;z-index:1;transition:transform .3s;position:absolute;top:clamp(1rem,3vh,2rem);left:clamp(1rem,3vw,3rem)}.project-hero-back:hover{transform:translate(-.3rem)}.project-hero-text{color:#fdf5e6;position:absolute;bottom:clamp(2rem,5vh,4rem);left:clamp(1rem,5vw,5rem);right:clamp(1rem,5vw,5rem)}.project-hero-text h1{color:#fdf5e6;text-shadow:0 2px 12px #00000080}.project-hero-text h1:hover{font-variation-settings:"wght" var(--fweight-superbold), "wdth" var(--fwidth-extended), "GRAD" 1000, "slnt" -15}.project-hero-text p{color:#fdf5e6;opacity:.85;font-size:var(--fs-s);text-shadow:0 1px 6px #00000080;width:auto}@media (max-width:600px){.project-hero{aspect-ratio:3/2;height:auto}.project-hero-img{height:100%;transform:none!important}}.project-header{padding:clamp(4rem,12vh,8rem) clamp(1rem,5vw,5rem) clamp(2rem,5vh,4rem)}.project-header-back{font-size:var(--fs-l);margin-bottom:var(--space);transition:transform .3s;display:inline-block}.project-header-back:hover{transform:translate(-.3rem)}.project-header p{opacity:.7;font-size:var(--fs-s);margin-top:.5rem}.video-embed-wrapper{width:100%}.video-embed-container{border-radius:1em;width:100%;height:0;position:relative;overflow:hidden}.video-embed-iframe{border:none;width:100%;height:100%;position:absolute;top:0;left:0}.video-embed-caption{margin-top:calc(var(--space) * .5);font-size:var(--fs-xs);opacity:.6;font-variation-settings:"wght" var(--fweight-light), "wdth" var(--fwidth-normal);text-align:center;width:100%}.video-embed-error p{opacity:.5;font-size:var(--fs-xs)}.code-embed-wrapper{width:100%}.code-embed-container{border-radius:1em;width:100%;position:relative;overflow:hidden}.code-embed-iframe{border:none;width:100%;height:100%;position:absolute;top:0;left:0}.code-embed-caption{margin-top:calc(var(--space) * .5);font-size:var(--fs-xs);opacity:.6;font-variation-settings:"wght" var(--fweight-light), "wdth" var(--fwidth-normal);text-align:center;width:100%}.code-embed-error p{opacity:.5;font-size:var(--fs-xs)}.gallery-lightbox{z-index:9999;background:#000000ed;justify-content:center;align-items:center;padding:2vh 4vw;animation:.18s ease-out gallery-lightbox-in;display:flex;position:fixed;inset:0}@keyframes gallery-lightbox-in{0%{opacity:0}to{opacity:1}}.gallery-lightbox-backdrop{z-index:0;cursor:default;background:0 0;border:0;padding:0;position:absolute;inset:0}.gallery-lightbox-stage{z-index:1;flex-direction:column;align-items:center;gap:.75rem;max-width:92vw;max-height:90vh;display:flex;position:relative}.gallery-lightbox-caption{color:#fff;font-size:var(--fs-xs);opacity:.65;text-align:center;max-width:60ch;margin:0}.gallery-lightbox-btn{z-index:1;color:#fff;cursor:pointer;background:#ffffff14;border:1px solid #ffffff40;justify-content:center;align-items:center;line-height:1;transition:background .2s;display:flex;position:absolute}.gallery-lightbox-btn:hover,.gallery-lightbox-btn:focus-visible{background:#ffffff38}.gallery-lightbox-close{width:2.75rem;height:2.75rem;font-size:1rem;top:1.2rem;right:1.2rem}.gallery-lightbox-prev,.gallery-lightbox-next{width:3rem;height:3.75rem;font-size:2rem;top:50%;transform:translateY(-50%)}.gallery-lightbox-prev{left:1rem}.gallery-lightbox-next{right:1rem}@media (max-width:600px){.gallery-lightbox-prev{left:.35rem}.gallery-lightbox-next{right:.35rem}.gallery-lightbox-prev,.gallery-lightbox-next{width:2.5rem;height:3rem;font-size:1.6rem}}.section-text-block{columns:2;column-gap:calc(var(--space) * 2)}.section-text-block p{width:100%}.section-text-block h3,.section-text-block h4{column-span:all}@media screen and (max-width:770px){.section-text-block{columns:1}}.icon-link{color:var(--dm-secondary);fill:var(--dm-secondary);transition:all var(--standard-duration) ease;transform:scale(1)}.icon-link:hover{color:var(--dm-accent);fill:var(--dm-accent);transform:scale(1.1)}.icon-link svg{width:100%;height:100%}.vf-canvas{pointer-events:none;width:100%;position:relative;overflow:hidden}.vf-canvas span{font-family:Roboto Flex Full,sans-serif;position:absolute}header nav a,header nav button,footer nav a{font-variation-settings:"wght" var(--fweight-roman), "wdth" var(--fwidth-normal), "GRAD" var(--fweight-light), "slnt" 0;transition:font-variation-settings var(--standard-duration) ease}header nav a:hover,header nav button:hover,footer nav a:hover{font-variation-settings:"wght" var(--fweight-superbold), "wdth" var(--fwidth-superextended), "GRAD" 1000, "slnt" -15}header li,footer li{font-size:var(--fs-s);font-variation-settings:"wdth" var(--fwidth-normal), "GRAD" -200;transition:all var(--standard-duration) ease}header li:hover,footer li:hover{font-variation-settings:"wght" var(--fweight-superbold), "wdth" var(--fwidth-superextended), "GRAD" 1000, "slnt" -15}.nav-active{font-variation-settings:"wght" var(--fweight-bold), "wdth" var(--fwidth-normal), "GRAD" var(--fweight-light), "slnt" 0;transition:font-variation-settings var(--standard-duration) ease}.work-nav-item h3{font-variation-settings:"wght" var(--fweight-bold), "wdth" var(--fwidth-extended), "GRAD" var(--fweight-light), "slnt" 0;font-size:var(--fs-l);transition:all var(--standard-duration) ease}.work-nav-item:hover h3{font-size:var(--fs-xl);font-variation-settings:"wght" var(--fweight-superbold), "wdth" var(--fwidth-superextended), "GRAD" 1000, "slnt" -15}.work-nav-item .arrow{opacity:0;transition:opacity var(--standard-duration) ease}.work-nav-item:hover .arrow{opacity:1}.logo-svg{stroke:var(--dm-primary);fill:none;stroke-width:6px;transition:stroke-width var(--standard-duration) ease}.logo-svg:hover{stroke-width:8px}.search-input{border:2px solid var(--dm-secondary);color:var(--dm-secondary);font-variation-settings:"wght" var(--fweight-roman), "wdth" var(--fwidth-normal);font-family:Roboto Flex,sans-serif;font-size:var(--fs-s);width:100%;transition:border-color var(--standard-duration) ease;background:0 0;border-radius:6px;outline:none;padding:.5rem 1rem}.search-input:focus{border-color:var(--dm-accent)}.search-input::placeholder{color:var(--dm-secondary);opacity:.5}.filter-btn{border:2px solid var(--dm-secondary);color:var(--dm-secondary);font-variation-settings:"wght" var(--fweight-roman), "wdth" var(--fwidth-normal);font-family:Roboto Flex,sans-serif;font-size:var(--fs-xs);background:0 0;border-radius:6px;min-width:44px;min-height:44px;padding:.4rem 1rem;transition:all .3s}.filter-btn:hover,.filter-btn.active{background-color:var(--dm-secondary);color:var(--dm-primary)}.tag-pill{border:1px solid var(--dm-accent);color:var(--dm-accent);font-family:Roboto Flex,sans-serif;font-size:var(--fs-xs);background:0 0;border-radius:999px;min-height:36px;padding:.4rem .8rem;transition:all .3s}.tag-pill:hover,.tag-pill.active{background-color:var(--dm-accent);color:var(--dm-primary)}.sort-select{border:2px solid var(--dm-secondary);color:var(--dm-secondary);font-family:Roboto Flex,sans-serif;font-size:var(--fs-xs);background:0 0;border-radius:6px;padding:.4rem 1rem}.sort-select option{background:var(--dm-primary);color:var(--dm-secondary)}.scroll-reveal{opacity:0;transition:opacity .6s,transform .6s;transform:translateY(20px)}.scroll-reveal.revealed{opacity:1;transform:translateY(0)}.scroll-reveal-left{opacity:0;transition:opacity .6s,transform .6s;transform:translate(-30px)}.scroll-reveal-left.revealed{opacity:1;transform:translate(0)}.scroll-reveal-right{opacity:0;transition:opacity .6s,transform .6s;transform:translate(30px)}.scroll-reveal-right.revealed{opacity:1;transform:translate(0)}.scroll-reveal-scale{opacity:0;transition:opacity .6s,transform .6s;transform:scale(.95)}.scroll-reveal-scale.revealed{opacity:1;transform:scale(1)}.skip-link{background:var(--dm-secondary);color:var(--dm-primary);z-index:100;font-size:var(--fs-s);padding:1rem;position:absolute;top:-100%;left:0}.skip-link:focus{top:0}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.scroll-reveal,.scroll-reveal-left,.scroll-reveal-right,.scroll-reveal-scale{opacity:1!important;transform:none!important}}@media (pointer:coarse){*{cursor:auto!important}#custom-cursor{display:none}}@media screen and (max-width:770px){header .nav-left{flex-grow:0;flex-basis:0%;width:0}header .nav-center{justify-content:start}footer nav{flex-direction:column}.cv-section{padding:var(--space)}.project-strip{height:12.5vh}.two-column-grid{grid-template-columns:1fr!important}.image-gallery-item{flex-basis:calc((100% - var(--space)) / 3)!important;max-width:calc((100% - var(--space)) / 3)!important}}.case-study-section{border-top:1px solid #fdf5e626;padding-top:4vh;padding-bottom:4vh}.case-study-heading{font-variation-settings:"wght" var(--fweight-medium), "wdth" var(--fwidth-extended), "GRAD" var(--fweight-light), "slnt" 0;font-size:var(--fs-m);text-transform:uppercase;letter-spacing:.08em;opacity:.5;margin-bottom:calc(var(--space) * 1.5);grid-column:1/-1}.case-study-layout{gap:calc(var(--space) * 2);grid-column:1/-1;grid-template-columns:1fr 260px;display:grid}.case-study-main{gap:calc(var(--space) * 1.5);flex-direction:column;display:flex}.case-study-block{gap:calc(var(--space) * .4);flex-direction:column;display:flex}.case-study-block-label{font-size:var(--fs-xs);font-variation-settings:"wght" var(--fweight-medium), "wdth" var(--fwidth-normal);text-transform:uppercase;letter-spacing:.06em;opacity:.55}.case-study-block-text{font-size:var(--fs-s);font-variation-settings:"wght" var(--fweight-roman), "wdth" var(--fwidth-normal);width:100%;max-width:100%;line-height:1.6}.case-study-meta{gap:calc(var(--space) * 1.2);padding-left:calc(var(--space) * 1.5);border-left:1px solid #fdf5e626;flex-direction:column;display:flex}.case-study-meta-item{flex-direction:column;gap:.3rem;display:flex}.case-study-meta-label{font-size:var(--fs-xs);font-variation-settings:"wght" var(--fweight-medium), "wdth" var(--fwidth-normal);text-transform:uppercase;letter-spacing:.06em;opacity:.55}.case-study-meta-value{font-size:var(--fs-s);font-variation-settings:"wght" var(--fweight-roman), "wdth" var(--fwidth-normal)}.case-study-tools{flex-wrap:wrap;gap:.4rem;margin-top:.2rem;display:flex}.case-study-tool-pill{font-size:var(--fs-xs);min-height:unset;padding:.25rem .6rem}@media screen and (max-width:770px){.case-study-layout{grid-template-columns:1fr}.case-study-meta{padding-left:0;padding-top:calc(var(--space) * 1.2);gap:calc(var(--space) * 1);border-top:1px solid #fdf5e626;border-left:none;flex-flow:wrap}.case-study-meta-item{min-width:120px}}.project-nav{border-top:1px solid #fdf5e626;padding:4vh clamp(.5rem,10.5946vw - 1.7514rem,5.4rem)}.project-nav-inner{justify-content:space-between;align-items:stretch;gap:2rem;display:flex}.project-nav-item{opacity:.75;flex:1;align-items:center;gap:1rem;max-width:45%;transition:opacity .3s;display:flex}.project-nav-item:hover{opacity:1}.project-nav-prev{flex-direction:row}.project-nav-next{flex-direction:row-reverse;margin-left:auto}.project-nav-thumb{border-radius:8px;flex-shrink:0;width:80px;height:80px;overflow:hidden}.project-nav-img{object-fit:cover;width:100%;height:100%;transition:transform .4s;border-radius:8px!important}.project-nav-item:hover .project-nav-img{transform:scale(1.05)}.project-nav-meta{flex-direction:column;gap:.25rem;display:flex}.project-nav-next .project-nav-meta{text-align:right}.project-nav-label{font-size:var(--fs-xs);opacity:.55;font-variation-settings:"wght" var(--fweight-roman), "wdth" var(--fwidth-normal);text-transform:uppercase;letter-spacing:.05em}.project-nav-title{font-size:var(--fs-s);font-variation-settings:"wght" var(--fweight-medium), "wdth" var(--fwidth-normal);transition:font-variation-settings var(--standard-duration) ease;-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.project-nav-item:hover .project-nav-title{font-variation-settings:"wght" var(--fweight-bold), "wdth" var(--fwidth-extended)}.project-nav-arrow{font-size:var(--fs-m);opacity:.4;flex-shrink:0;transition:opacity .3s,transform .3s}.project-nav-prev:hover .project-nav-arrow{opacity:1;transform:translate(-.2rem)}.project-nav-next:hover .project-nav-arrow{opacity:1;transform:translate(.2rem)}@media screen and (max-width:770px){.project-nav-item{max-width:48%}.project-nav-thumb{width:56px;height:56px}}@media screen and (max-width:480px){.project-nav-inner{gap:1rem}.project-nav-arrow{display:none}}.page-slide{z-index:40;pointer-events:none;background:#fdf5e6;width:100%;height:100%;position:fixed;top:0;left:0;transform:translate(-100%)}html[data-transition-target=about] .page-slide{background:#000}.page-slide-cover-left{animation:1s cubic-bezier(.9,0,.1,1) forwards slideCoverFromRight}.page-slide-cover-right{animation:1s cubic-bezier(.9,0,.1,1) forwards slideCoverFromLeft}.page-slide-uncover-left{animation:1s cubic-bezier(.9,0,.1,1) forwards slideUncoverToLeft}.page-slide-uncover-right{animation:1s cubic-bezier(.9,0,.1,1) forwards slideUncoverToRight}@keyframes slideCoverFromRight{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes slideCoverFromLeft{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes slideUncoverToLeft{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes slideUncoverToRight{0%{transform:translate(0)}to{transform:translate(100%)}}.contact-form{gap:1.2rem;width:clamp(20rem,50%,40rem);max-width:100%;margin:0 auto;display:grid}.contact-form-field{gap:.35rem;display:grid}.contact-form-field label{font-size:var(--fs-xs);font-variation-settings:"wght" var(--fweight-medium), "wdth" var(--fwidth-normal);text-transform:uppercase;letter-spacing:.05em;opacity:.7}.contact-form-field input,.contact-form-field textarea{border:2px solid var(--dm-secondary);color:var(--dm-secondary);font-variation-settings:"wght" var(--fweight-roman), "wdth" var(--fwidth-normal);font-family:Roboto Flex,sans-serif;font-size:var(--fs-s);width:100%;transition:border-color var(--standard-duration) ease;resize:vertical;background:0 0;border-radius:10px;outline:none;padding:.6rem 1rem}.contact-form-field input:focus,.contact-form-field textarea:focus{border-color:var(--dm-accent)}.contact-form-field input::placeholder,.contact-form-field textarea::placeholder{color:var(--dm-secondary);opacity:.35}.contact-form-field input:disabled,.contact-form-field textarea:disabled{opacity:.5}.contact-form-submit{background:var(--dm-secondary);color:var(--dm-primary);font-variation-settings:"wght" var(--fweight-medium), "wdth" var(--fwidth-normal);font-family:Roboto Flex,sans-serif;font-size:var(--fs-s);border:2px solid var(--dm-secondary);border-radius:6px;min-height:44px;padding:.6rem 1.5rem;transition:all .3s}.contact-form-submit:hover:not(:disabled){background:var(--dm-accent);border-color:var(--dm-accent);color:var(--dm-primary)}.contact-form-submit:disabled{opacity:.5}.contact-form-success{font-size:var(--fs-xs);color:var(--dm-accent);text-align:center;width:100%}.contact-form-privacy{font-size:var(--fs-xs);opacity:.6;text-align:center;width:100%;line-height:1.5}.contact-form-privacy a{text-underline-offset:2px;text-decoration:underline}.contact-form-error{font-size:var(--fs-xs);color:#e05252;text-align:center;width:100%}.contact-modal{background:0 0;border:none;justify-content:center;align-items:center;width:100%;max-width:100vw;height:100%;max-height:100vh;padding:0;display:flex;overflow:hidden}.contact-modal:not([open]){display:none}.contact-modal::backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#000000b3}.contact-modal-content{background:var(--dm-primary);color:var(--dm-secondary);border:2px solid var(--dm-secondary);border-radius:10px;width:90%;max-width:50rem;max-height:85vh;padding:clamp(1.5rem,4vw,3rem);position:relative;overflow-y:auto}.contact-modal-content.modal-open{animation:.4s cubic-bezier(.16,1,.3,1) forwards modalScaleIn}.contact-modal-content.modal-close{animation:.3s cubic-bezier(.7,0,.84,0) forwards modalScaleOut}@keyframes modalScaleIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes modalScaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.contact-modal-content .contact-form{width:min(100%,40rem);margin:0 auto}.contact-modal-close{color:var(--dm-secondary);font-size:var(--fs-m);opacity:.6;background:0 0;border:none;line-height:1;transition:opacity .3s;position:absolute;top:1rem;right:1rem}.contact-modal-close:hover{opacity:1}.testimonial-grid{grid-column:1/-1;grid-template-columns:repeat(auto-fit,minmax(min(100%,26rem),1fr));gap:2vw;width:100%;display:grid}.testimonial-card{background-color:var(--dm-secondary);color:var(--dm-primary);box-shadow:inset 0 0 0rem 0px var(--dm-accent);border-radius:10px;flex-direction:column;gap:1rem;margin:0;padding:2vw;transition:box-shadow 1s;display:flex;position:relative;overflow:hidden}.testimonial-card:hover{box-shadow:inset 0 0 4rem 0px var(--dm-accent)}.testimonial-quote-mark{font-size:var(--fs-xl);font-variation-settings:"wght" var(--fweight-superbold), "wdth" var(--fwidth-superextended);opacity:.12;pointer-events:none;-webkit-user-select:none;user-select:none;line-height:1;position:absolute;top:-.1em;left:.2em}.testimonial-text{font-size:var(--fs-s);font-variation-settings:"wght" var(--fweight-roman), "wdth" var(--fwidth-normal);z-index:1;quotes:none;width:100%;max-width:100%;margin:0;padding:0;line-height:1.55;position:relative}.testimonial-attribution{flex-direction:column;gap:.2rem;margin-top:auto;display:flex}.testimonial-name{font-size:var(--fs-s);font-variation-settings:"wght" var(--fweight-bold), "wdth" var(--fwidth-extended)}.testimonial-role{font-size:var(--fs-xs);opacity:.6;font-variation-settings:"wght" var(--fweight-roman), "wdth" var(--fwidth-normal)}@media screen and (max-width:770px){.testimonial-grid{grid-template-columns:1fr}.testimonial-card{padding:1.2rem}}@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-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@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-ease{syntax:"*";inherits:false}
