:root{--color-primary-navy: #031927;--color-primary-light-blue: #C8E0F4;--color-secondary-white: #FFFFFF;--color-secondary-black: #000000;--color-secondary-gentle-grey: #AAAAAA;--color-secondary-dark-grey: #666666;--color-interactive-blue: #007CAD;--color-accent-red: #C83232;--color-accent-yellow: #B4B432;--gradient-bg-1: #250f6b;--gradient-bg-2: #031927;--gradient-color-1: 231, 143, 94;--gradient-color-2: 44, 53, 106;--gradient-color-3: 109, 72, 229;--gradient-color-4: 200, 50, 50;--gradient-color-5: 180, 180, 50;--gradient-color-interactive: 0, 124, 173;--font-family-primary: "Open Sans", sans-serif;--font-size-hero: 6rem;--font-size-h1: 4rem;--font-size-h2: 2rem;--font-size-h3: 1.5rem;--font-size-body-large: 1.5rem;--font-size-body: 1.125rem;--font-size-body-small: 1rem;--font-size-caption: .875rem;--font-weight-light: 300;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: .75rem;--spacing-lg: 1rem;--spacing-xl: 1.5rem;--spacing-2xl: 2rem;--spacing-3xl: 2.5rem;--spacing-4xl: 3.5rem;--spacing-5xl: 5rem;--spacing-6xl: 7.5rem;--header-height: 5rem;--container-padding-desktop: 10vw;--container-padding-tablet: 8vw;--container-padding-mobile: 5vw;--container-padding-small: 4vw;--container-padding-xs: 2vw;--container-padding-vertical-desktop: 10vh;--container-padding-vertical-tablet: 8vh;--container-padding-vertical-mobile: 5vh;--container-padding-vertical-small: 4vh;--container-padding-vertical-xs: 2vh;--border-radius-sm: .25rem;--border-radius-md: .375rem;--border-radius-lg: .5rem;--border-radius-xl: 1rem;--shadow-sm: .0625rem .0625rem .125rem 0px rgba(0, 0, 0, .15);--shadow-md: 0 1.25rem 2.5rem rgba(0, 0, 0, .1);--transition-fast: .3s ease;--transition-normal: .5s ease;--transition-slow: .8s ease-out;--z-index-header: 1000;--z-index-content: 100;--z-index-media: 5;--z-index-overlay: 6;--breakpoint-desktop: 120rem;--breakpoint-laptop: 75rem;--breakpoint-tablet: 48rem;--breakpoint-mobile: 30rem;--circle-size: 80%;--blending-mode: hard-light;--blur-intensity: 2.5rem}html,body{font-family:var(--font-family-primary);margin:0;padding:0;background-color:var(--color-secondary-black);overflow-x:hidden}h1{font-family:var(--font-family-primary);font-size:var(--font-size-h1);font-weight:var(--font-weight-semibold);line-height:var(--spacing-5xl);margin:0 0 var(--spacing-sm) 0}h2{font-family:var(--font-family-primary);font-size:var(--font-size-h2);font-weight:var(--font-weight-normal);line-height:normal;letter-spacing:1.6px;margin:0 0 var(--spacing-sm) 0}h2 .bold{font-weight:var(--font-weight-bold)}h3{font-family:var(--font-family-primary);font-size:var(--font-size-h3);font-weight:var(--font-weight-medium);line-height:var(--line-height-tight);margin:0}p{font-family:var(--font-family-primary);font-size:var(--font-size-body);font-weight:var(--font-weight-normal);line-height:var(--line-height-normal);margin:0}.hero-title{font-family:var(--font-family-primary);font-size:var(--font-size-hero);font-weight:var(--font-weight-bold);line-height:normal;text-transform:uppercase;color:var(--color-secondary-white);animation:fadeInUp var(--transition-slow) .2s both}.hero-title--outline{-webkit-text-stroke-width:.25rem;-webkit-text-stroke-color:var(--color-secondary-white);color:transparent}.name-first{color:var(--color-secondary-white);font-family:var(--font-family-primary);font-size:var(--font-size-hero);font-style:normal;font-weight:var(--font-weight-bold);line-height:normal;text-transform:uppercase;animation:fadeInUp var(--transition-slow) .2s both}.name-last{-webkit-text-stroke-width:.25rem;-webkit-text-stroke-color:var(--color-secondary-white);color:transparent;font-family:var(--font-family-primary);font-size:var(--font-size-hero);font-style:normal;font-weight:var(--font-weight-bold);line-height:normal;text-transform:uppercase;animation:fadeInUp var(--transition-slow) .2s both}.hero-subtitle,.subtitle{font-family:var(--font-family-primary);font-size:var(--font-size-h2);font-weight:var(--font-weight-semibold);line-height:normal;letter-spacing:1.6px;color:var(--color-secondary-white);animation:fadeInUp var(--transition-slow) .4s both}.hero-description{font-family:var(--font-family-primary);font-size:var(--font-size-body-large);font-weight:var(--font-weight-normal);line-height:var(--line-height-normal);color:var(--color-secondary-gentle-grey);animation:fadeInUp var(--transition-slow) .6s both}.description{font-family:var(--font-family-primary);font-size:var(--font-size-body-large);font-weight:var(--font-weight-normal);line-height:var(--line-height-normal);color:var(--color-secondary-gentle-grey);animation:fadeInUp var(--transition-slow) .6s both;margin-top:.5rem}.section-title,.project-title{font-family:var(--font-family-primary);font-size:var(--font-size-h1);font-weight:var(--font-weight-semibold);line-height:var(--spacing-5xl);margin:0 0 var(--spacing-sm) 0}.section-subtitle{font-family:var(--font-family-primary);font-size:var(--font-size-h2);font-weight:var(--font-weight-normal);line-height:normal;letter-spacing:1.6px;margin:0 0 var(--spacing-sm) 0}.section-subtitle .bold{font-weight:var(--font-weight-bold)}.project-subtitle{font-family:var(--font-family-primary);font-size:var(--font-size-h2);font-weight:var(--font-weight-normal);line-height:normal;letter-spacing:1.6px;margin:0 0 var(--spacing-sm) 0}.project-subtitle .bold{font-weight:var(--font-weight-bold)}.section-dates,.project-dates{font-family:var(--font-family-primary);font-size:1.75rem;font-weight:var(--font-weight-semibold);line-height:normal;margin:0}.card-title,.case-study-title{font-family:var(--font-family-primary);font-size:var(--font-size-h3);font-weight:var(--font-weight-medium);line-height:var(--line-height-tight);margin:0}.card-description{font-family:var(--font-family-primary);font-size:var(--font-size-body);font-weight:var(--font-weight-normal);line-height:var(--line-height-normal);margin:0}.case-study-description{font-family:var(--font-family-primary);font-size:var(--font-size-body);font-weight:var(--font-weight-normal);line-height:var(--line-height-normal);margin:0;max-width:601px}.footnote{font-family:var(--font-family-primary);font-size:var(--font-size-body-small);font-weight:var(--font-weight-light);line-height:1.25rem;color:var(--color-secondary-gentle-grey);margin-top:var(--spacing-3xl);text-align:left}.container{width:100%;padding-left:var(--container-padding-desktop);padding-right:var(--container-padding-desktop);box-sizing:border-box}.text-container{z-index:var(--z-index-content);width:100vw;height:80vh;display:flex;flex-direction:column;position:absolute;top:0;left:var(--container-padding-desktop);justify-content:center;align-items:flex-start;color:var(--color-secondary-white);opacity:1;-webkit-user-select:none;user-select:none;text-shadow:1px 1px rgba(0,0,0,.1)}.hero-row{display:flex;align-items:baseline}@keyframes fadeInUp{0%{opacity:0;transform:translateY(1.875rem)}to{opacity:1;transform:translateY(0)}}@keyframes moveInCircle{0%{transform:rotate(0)}50%{transform:rotate(180deg)}to{transform:rotate(360deg)}}@keyframes moveVertical{0%{transform:translateY(-50%)}50%{transform:translateY(50%)}to{transform:translateY(-50%)}}@keyframes moveHorizontal{0%{transform:translate(-50%) translateY(-.625rem)}50%{transform:translate(50%) translateY(.625rem)}to{transform:translate(-50%) translateY(-.625rem)}}.gradient-bg{width:100vw;height:80vh;position:relative;overflow:hidden;background:linear-gradient(40deg,var(--gradient-bg-1),var(--gradient-bg-2));top:0;left:0}.gradient-bg svg{position:fixed;top:0;left:0;width:0;height:0}.gradient-bg .gradients-container{filter:url(#goo) blur(var(--blur-intensity));width:100%;height:100%}.gradient-bg .g1{position:absolute;background:radial-gradient(circle at center,rgba(var(--gradient-color-1),.8) 0,rgba(var(--gradient-color-1),0) 50%) no-repeat;mix-blend-mode:var(--blending-mode);width:var(--circle-size);height:var(--circle-size);top:calc(50% - var(--circle-size) / 2);left:calc(50% - var(--circle-size) / 2);transform-origin:center center;animation:moveVertical 30s ease infinite;opacity:1}.gradient-bg .g2{position:absolute;background:radial-gradient(circle at center,rgba(var(--gradient-color-2),.8) 0,rgba(var(--gradient-color-2),0) 50%) no-repeat;mix-blend-mode:var(--blending-mode);width:var(--circle-size);height:var(--circle-size);top:calc(50% - var(--circle-size) / 2);left:calc(50% - var(--circle-size) / 2);transform-origin:calc(50% - 25rem);animation:moveInCircle 20s reverse infinite;opacity:1}.gradient-bg .g3{position:absolute;background:radial-gradient(circle at center,rgba(var(--gradient-color-3),.8) 0,rgba(var(--gradient-color-3),0) 50%) no-repeat;mix-blend-mode:var(--blending-mode);width:var(--circle-size);height:var(--circle-size);top:calc(50% - var(--circle-size) / 2 + 12.5rem);left:calc(50% - var(--circle-size) / 2 - 31.25rem);transform-origin:calc(50% + 25rem);animation:moveInCircle 40s linear infinite;opacity:1}.gradient-bg .g4{position:absolute;background:radial-gradient(circle at center,rgba(var(--gradient-color-4),.8) 0,rgba(var(--gradient-color-4),0) 50%) no-repeat;mix-blend-mode:var(--blending-mode);width:var(--circle-size);height:var(--circle-size);top:calc(50% - var(--circle-size) / 2);left:calc(50% - var(--circle-size) / 2);transform-origin:calc(50% - 12.5rem);animation:moveHorizontal 40s ease infinite;opacity:.7}.gradient-bg .g5{position:absolute;background:radial-gradient(circle at center,rgba(var(--gradient-color-5),.8) 0,rgba(var(--gradient-color-5),0) 50%) no-repeat;mix-blend-mode:var(--blending-mode);width:calc(var(--circle-size) * 2);height:calc(var(--circle-size) * 2);top:calc(50% - var(--circle-size));left:calc(50% - var(--circle-size));transform-origin:calc(50% - 50rem) calc(50% + 12.5rem);animation:moveInCircle 20s ease infinite;opacity:1}.gradient-bg .interactive{position:absolute;background:radial-gradient(circle at center,rgba(var(--gradient-color-interactive),.8) 0,rgba(var(--gradient-color-interactive),0) 50%) no-repeat;mix-blend-mode:var(--blending-mode);width:100%;height:100%;top:-50%;left:-50%;opacity:.7}.header{position:fixed;top:0;left:0;width:100%;height:var(--header-height);z-index:var(--z-index-header);pointer-events:none;max-width:100vw;box-sizing:border-box;transition:all var(--transition-normal)}.header.scrolled .header-bg:before{opacity:0}.header.scrolled .header-bg:after{opacity:1}.header-bg{position:absolute;top:0;left:0;width:100%;height:100%;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.header-bg:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(to bottom,rgba(0,0,0,.1) 0%,rgba(0,0,0,0) 100%);transition:opacity var(--transition-normal);opacity:1}.header-bg:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(to bottom,rgba(0,0,0,.5) 0%,rgba(0,0,0,.1) 100%);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);transition:opacity var(--transition-normal);opacity:0}.header-content{position:relative;z-index:10;width:100%;height:100%;display:flex;align-items:center;justify-content:space-between;padding-left:var(--container-padding-desktop);padding-right:var(--container-padding-desktop);pointer-events:auto;max-width:100vw;box-sizing:border-box}.header-logo{display:flex;align-items:center;flex-shrink:0}.logo-link{text-decoration:none;transition:opacity var(--transition-fast)}.logo-link:hover{opacity:.8}.logo-link:active{opacity:.6}.logo-text{font-family:var(--font-family-primary);font-size:2rem;font-weight:var(--font-weight-bold);line-height:normal;color:var(--color-secondary-white);white-space:nowrap}.header-navigation{display:flex;gap:var(--spacing-xl);align-items:center;flex-shrink:0}.nav-button{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-lg);background:rgba(0,0,0,.5);border-radius:var(--border-radius-lg);text-decoration:none;transition:all var(--transition-fast);border:2px solid transparent}.nav-button:hover{background:rgba(0,0,0,.7);border:2px solid var(--color-secondary-gentle-grey)}.nav-button:active{background:#333333}.nav-icon{display:flex;align-items:center;justify-content:center;width:var(--spacing-xl);height:var(--spacing-xl);color:var(--color-secondary-white)}.nav-icon svg{width:100%;height:100%}.nav-text{font-family:var(--font-family-primary);font-size:1.25rem;font-weight:var(--font-weight-medium);line-height:normal;color:var(--color-secondary-white);white-space:nowrap}.project-section{position:relative;width:100vw;display:flex;align-items:center;overflow:hidden}.project-section--dark{height:fit-content;background-color:var(--color-primary-navy)}.project-section--dark h1,.project-section--dark h2,.project-section--dark h3,.project-section--dark p{color:var(--color-secondary-white)}.project-section--dark .project-dates{color:var(--color-secondary-gentle-grey)}.project-section--light{height:40rem;background-color:var(--color-primary-light-blue)}.project-section--light h1,.project-section--light h2,.project-section--light h3,.project-section--light p{color:var(--color-secondary-black)}.project-section--light .project-dates{color:var(--color-secondary-dark-grey)}.project-section--about{height:fit-content;background-color:var(--color-secondary-black)}.project-section--about h1,.project-section--about h2,.project-section--about h3,.project-section--about p{color:var(--color-secondary-white)}.project-section--about .project-dates{color:var(--color-secondary-gentle-grey)}.project-section--about .project-media{width:calc(100vw - 56rem);height:100%}.project-section--about .project-media:after{background:linear-gradient(to right,var(--color-secondary-black) 0%,rgba(0,0,0,.8) 30%,rgba(0,0,0,.4) 60%,transparent 100%)}.project-section--about .contact-buttons{display:flex;gap:var(--spacing-3xl);align-items:center}.project-section--about .contact-button{display:flex;align-items:center;justify-content:center;width:var(--spacing-5xl);height:var(--spacing-5xl);background:#333333;border-radius:var(--border-radius-lg);text-decoration:none;transition:all var(--transition-fast);border:2px solid transparent}.project-section--about .contact-button:hover{background:var(--color-secondary-black);border:2px solid var(--color-secondary-gentle-grey)}.project-section--about .contact-button:active{background:var(--color-secondary-dark-grey)}.project-section--about .contact-icon{width:3rem;height:3rem}.project-section--about .contact-icon img{width:100%;height:100%;object-fit:contain}.project-content{position:relative;z-index:var(--z-index-content);width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;padding-left:var(--container-padding-desktop);padding-right:var(--container-padding-desktop);padding-top:var(--container-padding-vertical-desktop);padding-bottom:var(--container-padding-vertical-desktop)}.project-header{margin-bottom:var(--spacing-4xl)}.project-case-studies{display:flex;flex-direction:column;gap:var(--spacing-4xl);max-width:45vw;position:relative}.case-study-item{display:flex;gap:var(--spacing-lg);align-items:flex-start;height:fit-content;opacity:0;transform:translateY(3.125rem);transition:all var(--transition-fast);border-radius:var(--spacing-lg);border:2px solid rgba(255,255,255,.2);padding-bottom:var(--spacing-lg);padding-top:var(--spacing-lg);padding-left:var(--spacing-lg);text-decoration:none;color:inherit}.case-study-item.animate-in{opacity:1;transform:translateY(0)}.case-study-item:hover{background-color:#00000026;border:2px solid rgba(255,255,255,.5);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.case-study-item--light{border:2px solid rgba(0,0,0,.2)}.case-study-item--light:hover{background-color:#0000001a;border:2px solid rgba(0,0,0,.5)}.case-study-image{width:15rem;height:11.25rem;border-radius:var(--border-radius-md);overflow:hidden;flex-shrink:0}.case-study-image img{width:100%;height:100%;object-fit:cover;object-position:center}.placeholder-image{width:100%;height:100%;background-color:#ffffffb3;border-radius:var(--border-radius-md)}.case-study-content{display:flex;flex-direction:column;gap:var(--spacing-sm);flex:1}.case-study-labels{display:flex;gap:var(--spacing-sm);flex-wrap:wrap}.project-label{background-color:var(--color-interactive-blue);color:var(--color-secondary-white);font-family:var(--font-family-primary);font-size:var(--font-size-body-small);font-weight:var(--font-weight-medium);line-height:var(--line-height-normal);padding:var(--spacing-xs) var(--spacing-lg);border-radius:var(--border-radius-lg);white-space:nowrap;letter-spacing:-.176px}.project-media{position:absolute;right:0;top:0;z-index:var(--z-index-media)}.project-media video,.project-media img{width:100%;height:100%;object-fit:cover}.project-media:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:var(--z-index-overlay);pointer-events:none}.project-section--dark .project-media{width:calc(100vw - 56rem);height:100%}.project-section--dark .project-media:after{background:linear-gradient(to right,var(--color-primary-navy) 0%,rgba(3,25,39,.8) 30%,rgba(3,25,39,.4) 60%,transparent 100%)}.project-section--light .project-media{max-width:40%;height:40rem;overflow:hidden}.project-section--light .project-media img{width:110.68%;height:100%;object-fit:cover;object-position:center center;margin-left:-7.45%}.project-overlay-images{position:absolute;top:2.4375rem;left:var(--spacing-md)}.project-overlay-images img{width:7.1875rem;height:6.3125rem;box-shadow:var(--shadow-sm);border-radius:var(--border-radius-sm);object-fit:cover}.coursework-section{position:relative;width:100vw;height:fit-content;background-color:var(--color-primary-navy);display:flex;align-items:flex-start;justify-content:center;padding-top:var(--header-height)}.coursework-content{width:100%;padding:0 var(--container-padding-desktop);position:relative}.coursework-title{font-family:var(--font-family-primary);font-size:var(--font-size-h1);font-weight:var(--font-weight-semibold);line-height:var(--spacing-5xl);color:var(--color-secondary-white);margin:0 0 var(--spacing-lg) 0;position:relative;top:0;left:0}.coursework-grid{display:grid;grid-template-columns:2fr auto 1fr;gap:5rem;align-items:start;width:80vw;padding-bottom:var(--container-padding-vertical-desktop)}.university-group{display:flex;flex-direction:column;gap:2.5rem;width:100%}.university-title{font-family:var(--font-family-primary);font-size:var(--font-size-h2);font-weight:var(--font-weight-semibold);line-height:normal;letter-spacing:1.6px;color:var(--color-secondary-white);margin:0;text-align:left}.university-projects{display:grid;grid-template-columns:1fr 1fr;gap:5rem;width:100%}.university-projects--single{grid-template-columns:1fr}.academic-project{display:flex;flex-direction:column;gap:var(--spacing-md);opacity:0;transform:translateY(3.125rem);transition:all var(--transition-fast);width:100%;border-radius:var(--spacing-lg);border:2px solid rgba(255,255,255,.2);text-decoration:none;color:inherit}.academic-project.animate-in{opacity:1;transform:translateY(0)}.academic-project:hover{background-color:#00000080;border:2px solid rgba(255,255,255,.5);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.academic-project-image{width:100%;height:12.5rem;border-radius:var(--border-radius-md);overflow:hidden}.academic-project-image img{width:100%;height:100%;object-fit:cover;object-position:center}.academic-project-content{display:flex;flex-direction:column;gap:.5rem;padding:0 var(--spacing-lg) var(--spacing-lg) var(--spacing-lg)}.academic-project-title{font-family:var(--font-family-primary);font-size:var(--font-size-h3);font-weight:var(--font-weight-medium);line-height:var(--line-height-tight);color:var(--color-secondary-white);margin:0}.academic-project-company{font-family:var(--font-family-primary);font-size:var(--font-size-h3);font-weight:var(--font-weight-medium);line-height:var(--line-height-tight);color:var(--color-secondary-gentle-grey);margin:0}.academic-project-labels{display:flex;gap:var(--spacing-sm);flex-wrap:wrap}.academic-project-description{color:var(--color-secondary-white);margin:0}.decorative-line{display:flex;align-items:center;justify-content:center;width:1px;height:100%;background:linear-gradient(to bottom,transparent,var(--color-secondary-gentle-grey),transparent);flex-shrink:0}.decorative-line img{display:none}@media (max-width: 75rem){.header-content,.project-content{padding-left:var(--container-padding-tablet);padding-right:var(--container-padding-tablet)}.project-section{flex-direction:column;height:auto;min-height:40rem}.project-section--dark{min-height:51.25rem}.project-content{width:80vw;order:1;padding-bottom:var(--container-padding-vertical-tablet)}.project-case-studies{max-width:100%}.project-media{order:2;position:relative;width:100%;height:25rem}.project-media:after{display:none}.project-section--dark .project-media{width:100%}.project-section--light .project-media{width:100%;max-width:100%}.project-section--light .project-media img{width:100%;height:100%;object-fit:cover;object-position:center center;margin-left:0}.case-study-item{flex-direction:column;height:auto;gap:var(--spacing-lg)}.case-study-image{width:100%;height:12.5rem}.project-overlay-images{position:relative;top:0;left:0;margin-top:var(--spacing-xl)}.coursework-grid{grid-template-columns:1fr;gap:3rem;width:100%}.university-projects{grid-template-columns:1fr;gap:3rem}.project-section--about .project-media{width:100%;max-width:100%}}@media (max-width: 48rem){.header-content,.project-content{padding-left:var(--container-padding-mobile);padding-right:var(--container-padding-mobile)}.header-navigation{gap:var(--spacing-md)}.logo-text{font-size:var(--font-size-h3)}.nav-text{font-size:var(--font-size-body-large)}.nav-button{padding:var(--spacing-md) var(--spacing-md);gap:var(--spacing-md)}.nav-icon{width:1.25rem;height:1.25rem}h1{font-size:3rem;line-height:3.75rem}h2{font-size:var(--font-size-h3)}h3{font-size:1.25rem}p{font-size:var(--font-size-body-small)}.project-label{font-size:var(--font-size-caption);padding:.1875rem var(--spacing-md)}}@media (max-width: 30rem){.header-content,.project-content{padding-left:var(--container-padding-xs);padding-right:var(--container-padding-xs)}.header-navigation{gap:var(--spacing-sm)}.nav-text{font-size:var(--font-size-body-small)}.nav-button{padding:var(--spacing-xs) var(--spacing-sm);gap:var(--spacing-xs)}.nav-icon{width:1.125rem;height:1.125rem}.project-label{font-size:var(--font-size-caption);padding:.1875rem var(--spacing-md)}}
