@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:200 800;font-display:swap;src:url(/_next/static/media/6fe53d21e6e7ebd8-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:200 800;font-display:swap;src:url(/_next/static/media/8ebc6e9dde468c4a-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:200 800;font-display:swap;src:url(/_next/static/media/ef64ecae5e1bff42-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:200 800;font-display:swap;src:url(/_next/static/media/636a5ac981f94f8b-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Plus Jakarta Sans Fallback;src:local("Arial");ascent-override:98.88%;descent-override:21.15%;line-gap-override:0.00%;size-adjust:104.98%}.__className_e12b3c{font-family:Plus Jakarta Sans,Plus Jakarta Sans Fallback;font-style:normal}.__variable_e12b3c{--font-plus-jakarta:"Plus Jakarta Sans","Plus Jakarta Sans Fallback"}@font-face{font-family:Work Sans;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/10f65c94012f0d89-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Work Sans;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/1a3ad150732fe43e-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Work Sans;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/b0088cce7ac0b424-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Work Sans Fallback;src:local("Arial");ascent-override:83.09%;descent-override:21.71%;line-gap-override:0.00%;size-adjust:111.93%}.__className_15cf24{font-family:Work Sans,Work Sans Fallback;font-style:normal}.__variable_15cf24{--font-work-sans:"Work Sans","Work Sans Fallback"}

/*! tailwindcss v4.1.5 | 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)))){*,::backdrop,:after,:before{--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-font-weight:initial;--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-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}}}@layer theme{:host,:root{--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--spacing:.25rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--font-weight-medium:500;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-geist-sans);--default-mono-font-family:var(--font-geist-mono)}}@layer base{*,::backdrop,:after,:before{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}:host,html{-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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{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}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,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,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-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,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.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}}.\!grid{display:grid!important}.\!hidden{display:none!important}.block{display:block}.contents{display:contents}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.grow{flex-grow:1}.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}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.rounded{border-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.bg-gray-50{background-color:var(--color-gray-50)}.px-3{padding-inline:calc(var(--spacing)*3)}.py-2{padding-block:calc(var(--spacing)*2)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.text-gray-500{color:var(--color-gray-500)}.text-gray-900{color:var(--color-gray-900)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.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)}.blur{--tw-blur:blur(8px)}.blur,.invert{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,)}.invert{--tw-invert:invert(100%)}.\!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,)!important}.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,visibility,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))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:text-gray-900:hover{color:var(--color-gray-900)}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{background-color:var(--color-gray-800)}.dark\:text-gray-100{color:var(--color-gray-100)}.dark\:text-gray-400{color:var(--color-gray-400)}@media (hover:hover){.dark\:hover\:bg-gray-800:hover{background-color:var(--color-gray-800)}.dark\:hover\:text-gray-100:hover{color:var(--color-gray-100)}}}}:root{--background:#fff;--foreground:#1e1e1e;--font-heading:"Inter",sans-serif;--font-body:"Inter",sans-serif;--spacing-unit:1rem;--accent-green-light:#d2df68;--accent-green-medium:#bcde85;--accent-purple:#a7a5ff;--accent-lilac:#abc3ff;--accent-red:#c34725;--accent-pink:#ff7eb6;--accent-turquoise:#94dcd8;--accent-turquoise-dark:#4a8e8b;--line-primary:#d9d9d9;--container-width:min(95vw,1400px);--container-width-wide:min(90vw,1600px);--container-width-ultra:min(85vw,1800px);--spacing-fluid:clamp(1rem,3vw,2rem);--spacing-fluid-lg:clamp(2rem,5vw,4rem);--spacing-fluid-xl:clamp(3rem,7vw,6rem)}body{background:var(--background);color:var(--foreground);font-family:var(--font-body);flex-direction:column;min-height:100vh;margin:0;display:flex}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-weight:600}main{flex:1;padding-top:4rem}*{box-sizing:border-box;margin:0;padding:0}h1{margin-bottom:2rem;font-size:2.25rem;font-weight:700;line-height:1.1}h2{margin-bottom:1.5rem;font-size:1.75rem;font-weight:600;line-height:1.2}h3{font-size:1.5rem;line-height:1.3}h3,h4{margin-bottom:1rem;font-weight:600}h4{margin-top:1rem;font-size:1.25rem;line-height:1.4}p{margin-bottom:1rem;font-size:1rem;line-height:1.6}.smiley-text{font-size:1.5rem;font-family:var(--font-heading);fill:var(--accent-pink);font-weight:600}.homepage-columns{flex-direction:row;align-items:center;gap:4rem;width:100%;max-width:900px;margin:0 auto}.homepage-columns,.homepage-text{justify-content:center;display:flex}.homepage-text{flex-direction:column;flex:1;align-items:flex-start}@media (max-width:900px){.homepage-columns{flex-direction:column;gap:2rem;max-width:100%}.circular-text-container,.homepage-text{text-align:center;align-items:center}}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline}footer{background:var(--accent-turquoise);border-top:1px solid #0000001a;width:100%;margin-top:auto;padding:2rem 0}.footer-content{width:var(--container-width);color:var(--background);flex-direction:column;align-items:center;gap:1.5rem;margin:0 auto;padding:0 1rem;display:flex}.social-links{flex-wrap:wrap;justify-content:center;gap:2rem;margin-bottom:1rem;font-weight:600;display:flex}.social-links a{color:var(--accent-turquoise-dark);padding:.5rem;font-size:1rem;transition:color .2s}.social-links a:hover{text-decoration:underline}.copyright{text-align:center;color:var(--accent-turquoise-dark);padding:0 1rem;font-size:1rem;font-weight:500}.copyright p{margin:0}@media (max-width:768px){footer{padding:1.5rem 0}.footer-content,.social-links{gap:1rem}.social-links a{font-size:.875rem}.copyright{font-size:.75rem}}@media (max-width:480px){.social-links{gap:.75rem}.social-links a{padding:.25rem;font-size:.75rem}}.services-row{gap:15px;max-width:fit-content;margin:2rem auto;padding:0 2rem;display:flex}.service-image{object-fit:cover}.services-section{text-align:center;margin:4rem 0;padding:2rem 0}.section-divider{background-color:#e0e0e0;border:none;height:1px;margin:3rem 0}.two-column-layout{gap:2rem;margin:1rem 0;display:flex}.column-left,.column-right{flex:1}.two-column-layout.highlighted .column-left,.two-column-layout.highlighted .column-right{background-color:#f5f5f5;border-radius:8px;padding:3rem}.column-right ul{padding-left:1.5rem;list-style-type:disc}.project-quote-section{background-color:#2c3e50;border-radius:8px;max-width:900px;margin:2rem 0;padding:4rem 3rem}.project-quote-section p{font-size:1.25rem}.project-quote-section h4,.project-quote-section p{color:#fff;margin:0;font-weight:300;line-height:1.6}.project-quote-section h4{font-size:1.5rem}.project-two-column-info{background-color:#f8f9fa;border-radius:8px;gap:2rem;margin:2rem 0;padding:3rem 2rem;display:flex}.project-two-column-info h3{color:var(--foreground);margin-bottom:1rem;font-size:1.5rem}.project-two-column-info p{margin-bottom:1rem}.project-two-column-info p,.project-two-column-info ul{color:var(--foreground);font-size:1.125rem;line-height:1.6}.project-two-column-info .column-left,.project-two-column-info .column-right{flex:1}.project-two-column-info .column-right ul{padding-left:10.5m;list-style-type:disc}.project-two-column-info .column-left,.project-two-column-info .column-right{flex:none;width:50%}.project-call-out{border-left:4px solid var(--accent-pink);background-color:#f8f9fa;border-radius:8px;margin:2rem 0;padding:3rem 2rem}.project-call-out h3{font-size:1.5rem}.project-call-out h3,.project-call-out p{color:var(--foreground);margin-bottom:1rem}.project-call-out p{font-size:1.125rem;line-height:1.6}.notes-section{background-color:#f8f9fa;margin:4rem calc(50% - 50vw) 2rem;padding:3rem 2rem}.carousel-container{width:100%;max-width:800px;margin:2rem auto;position:relative;overflow:hidden}.carousel-track{transition:transform .4s cubic-bezier(.4,.2,1);width:600%;display:flex}.carousel-slide{box-sizing:border-box;flex-shrink:0;width:16.666%;padding:0 1rem}.carousel-image{object-fit:cover;border-radius:8px;width:100%;height:400px}.carousel-btn{color:#333;cursor:pointer;width:48px;height:48px;transition:all .3s cubic-bezier(.4,.2,1);z-index:10;background:#fffffff2;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:1.5rem;display:flex;position:absolute;top:50%;transform:translateY(-50%);box-shadow:0 4px 16px #00000026}.carousel-btn:hover{background:#fff;transform:translateY(-50%)scale(1.1);box-shadow:0 6px 24px #0003}.carousel-btn:active{transform:translateY(-50%)scale(.95)}.carousel-btn.prev{left:1rem}.carousel-btn.next{right:1rem}.carousel-dots{justify-content:center;gap:.75rem;margin-top:1.5rem;display:flex}.dot{cursor:pointer;width:10px;height:10px;transition:all .3s cubic-bezier(.4,.2,1);background:#e0e0e0;border:2px solid #0000;border-radius:50%}.dot.active{background:var(--accent-turquoise);border-color:var(--accent-turquoise);transform:scale(1.2)}.dot:hover{background:#bdbdbd;transform:scale(1.1)}@media (max-width:768px){.carousel-container{max-width:100%;margin:1rem auto}.carousel-slide{padding:0 .5rem}.carousel-image{height:300px}.carousel-btn{width:40px;height:40px;font-size:1.25rem}.carousel-btn.prev{left:.5rem}.carousel-btn.next{right:.5rem}}nav{background:var(--background);z-index:50;border-bottom:1px solid #0000001a;padding:1rem 0;position:fixed;top:0;left:0;right:0}.nav-container{width:var(--container-width);margin:0 auto;padding:0 1rem}.nav-content{justify-content:space-between;align-items:center;height:4rem;display:flex}.nav-brand a{font-size:1.25rem;font-weight:600;transition:color .2s}.nav-brand a:hover{color:var(--accent-pink);text-decoration:none}.nav-links{gap:3rem;display:flex}.nav-links a{opacity:.7;font-size:1rem;transition:opacity .2s}.nav-links a:hover{opacity:1;text-decoration:none}.hamburger-menu{cursor:pointer;padding:.5rem;display:none}.mobile-nav{background:var(--background);z-index:100;padding:2rem;transition:transform .3s;display:none;position:fixed;inset:0;transform:translate(100%)}.mobile-nav.active{transform:translate(0)}.mobile-nav-links{flex-direction:column;gap:2rem;margin-top:4rem;display:flex}.mobile-nav-links a{opacity:.7;font-size:1.5rem;transition:opacity .2s}.mobile-nav-links a:hover{opacity:1}.mobile-nav-links a.active{opacity:1;color:var(--accent-pink)}@media (max-width:768px){.nav-links{display:none}.hamburger-menu,.mobile-nav{display:block}}main{max-width:1200px;margin-top:4rem;margin-left:auto;margin-right:auto;padding:2rem 1rem}.portfolio-grid{grid-template-columns:1fr;gap:4rem;max-width:800px;margin:0 auto;padding:2rem 1rem;display:grid}.portfolio-item{background:0 0;border:none;transition:transform .2s}.portfolio-item:hover{transform:translateY(-4px)}.portfolio-link{color:inherit;display:block}.portfolio-link,.portfolio-link:hover{text-decoration:none}.portfolio-image-container{border-radius:8px;width:100%;height:300px;margin-bottom:1.5rem;position:relative;overflow:hidden;box-shadow:0 4px 12px #0000001a}.portfolio-image{object-fit:cover;transition:transform .3s}.portfolio-item:hover .portfolio-image{transform:scale(1.02)}.portfolio-content{padding:0}.portfolio-content h3{margin-bottom:.5rem;font-size:1.25rem}.portfolio-content p{color:var(--foreground);opacity:.8;margin-bottom:1rem;font-size:1rem;line-height:1.6}.dataviz-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:2rem;margin-top:2rem;display:grid}.dataviz-item{background:var(--background);color:inherit;border:1px solid #0000001a;border-radius:8px;text-decoration:none;transition:transform .2s,box-shadow .2s;overflow:hidden}.dataviz-item:hover{transform:translateY(-4px);box-shadow:0 4px 12px #0000001a}.dataviz-item.streamgraph{box-shadow:none;background:0 0;border:none}.dataviz-item.streamgraph:hover{box-shadow:none;transform:none}.dataviz-image-container{width:100%;padding-top:60%;position:relative;overflow:hidden}.dataviz-item.streamgraph .dataviz-image-container{width:100%;height:400px;padding-top:0;position:relative}.dataviz-item.streamgraph .dataviz-image{object-fit:contain!important}.dataviz-image{object-fit:cover;opacity:0;width:100%;height:100%;transition:transform .3s;position:absolute;top:0;left:0}.dataviz-item.streamgraph .dataviz-image{object-fit:contain;width:100%;height:auto;position:relative}.dataviz-image.loaded{opacity:1}.dataviz-item:hover .dataviz-image{transform:scale(1.05)}.dataviz-item.streamgraph:hover .dataviz-image{transform:none}.dataviz-content{padding:1.5rem}.dataviz-item.streamgraph .dataviz-content{padding:1rem 0}.dataviz-content h2{color:var(--foreground);margin-bottom:.75rem;font-size:1.25rem}.dataviz-content p{color:var(--foreground);opacity:.8;font-size:.875rem;line-height:1.5}@keyframes shimmer{0%{background-position:100%}to{background-position:0}}.about-grid{width:var(--container-width);grid-template-columns:1fr;gap:4rem;margin:0 auto;padding:2rem 1rem;display:grid}@media (min-width:1024px){.about-grid{grid-template-columns:1.5fr 1fr;align-items:start}}.about-content{flex-direction:column;gap:2rem;display:flex}.about-intro{color:var(--foreground);opacity:.9;font-size:1.5rem;line-height:1.4}.about-text{flex-direction:column;gap:2rem;display:flex}.about-text p{color:var(--foreground);opacity:.8;font-size:1.125rem;line-height:1.6}.skills-section{flex-direction:column;gap:1rem;display:flex}.skills-list{flex-wrap:wrap;gap:.5rem;display:flex}.about-image-section{flex-direction:column;align-items:center;gap:1.5rem;display:flex}.about-image-container{border-radius:8px;width:100%;max-width:300px;height:300px;position:relative;overflow:hidden;box-shadow:0 4px 12px #0000001a}.about-image{object-fit:cover;transition:transform .3s}.about-image-container:hover .about-image{transform:scale(1.02)}.about-email{color:var(--accent-pink);border:.5px solid var(--accent-pink);border-radius:8px;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-size:1.25rem;font-weight:600;text-decoration:none;transition:all .2s;display:inline-flex}.about-email:hover{background:#ff7eb61a;text-decoration:none}.about-email:after{content:"→";opacity:0;font-size:1.25rem;transition:all .2s;transform:translate(-10px)}.about-email:hover:after{opacity:1;transform:translate(0)}.work-together{width:var(--container-width);margin:4rem auto 0;padding:0 1rem;position:relative}.work-together:before{content:"";background:#0000001a;height:1px;position:absolute;top:-2rem;left:1rem;right:1rem}.work-together h3{margin-bottom:1.5rem;font-size:1.75rem}.work-list{flex-direction:column;gap:.75rem;padding:0;list-style:none;display:flex}.work-list li{color:var(--foreground);opacity:.8;padding-left:1.5rem;font-size:1.125rem;line-height:1.5;position:relative}.work-list li:before{content:"•";color:var(--accent-green-light);position:absolute;left:0}.fast-facts-section{background:#f8f9fa80;border:1px solid #0000000d;border-radius:12px;max-width:400px;padding:2rem}.fast-facts-section h4{color:var(--foreground);opacity:.9;margin-bottom:1.5rem;font-size:1.25rem}.fast-facts-list{margin:0;padding:0;list-style:none}.fast-fact-item{color:var(--foreground);opacity:.8;font-size:.875rem;line-height:1.4;font-family:var(--font-body);padding:.25rem 0 .25rem 1.25rem;position:relative}.fast-fact-item:before{content:"•";color:var(--foreground);font-weight:700;position:absolute;left:0}.viz-container{background:var(--background);border-radius:8px;width:100%;max-width:800px;margin:2rem auto;padding:1rem;box-shadow:0 2px 4px #0000001a}.viz-container svg{width:100%;height:auto;display:block}.tooltip{pointer-events:none;color:var(--foreground);background:var(--background);z-index:100;border-radius:4px;padding:8px;font-size:.875rem;line-height:1.4;box-shadow:0 2px 4px #0000001a}.container{width:var(--container-width);margin:0 auto;padding:2rem 1rem}@media (min-width:1600px){.container{width:var(--container-width-wide)}}@media (min-width:2000px){.container{width:var(--container-width-ultra)}}.tag{border-radius:9999px;padding:.25rem .75rem;font-size:.875rem;transition:all .2s;display:inline-block}.tag-interactive{cursor:pointer;color:var(--foreground);border:1px solid var(--line-primary);background:#fff}.tag-interactive.active,.tag-interactive:hover{background:var(--accent-green-light);color:var(--foreground);border:1px solid var(--accent-green-light)}.tag-interactive.active:hover{background:#d2df68cc}.tag-container{flex-wrap:wrap;gap:.5rem;margin-bottom:2rem;display:flex}.project-card{color:inherit;text-decoration:none;transition:transform .2s}.project-card:hover{transform:translateY(-4px)}.project-image-container{width:100%;height:0;padding-bottom:50%;position:relative}.project-image{object-fit:contain;width:100%;height:100%;position:absolute;top:0;left:0}.project-content{padding:1rem 0}.project-content h2{margin-bottom:.5rem;font-size:1.5rem}.project-content p{color:var(--foreground);opacity:.8}.project-content ul{margin-bottom:1rem;padding-left:1.5rem;list-style-type:disc}.project-content li{margin-bottom:.5rem}.back-link{color:var(--accent-turquoise-dark);margin-bottom:2rem;text-decoration:none;transition:opacity .2s;display:inline-block}.project-detail{margin:0 auto}.project-header{margin-bottom:2rem}.project-image-container{border-radius:8px;justify-content:center;align-items:center;margin:2rem 0;display:flex;overflow:hidden}.project-content{margin-top:2rem}.button{background-color:var(--accent-color);color:#fff;border-radius:4px;padding:.75rem 1.5rem;text-decoration:none;transition:background-color .3s;display:inline-block}.button:hover{background-color:var(--accent-color-dark)}.project-large{background:0 0;border-radius:0;align-items:flex-start;gap:2rem;width:100%;margin-bottom:4rem;padding:1.25rem;transition:transform .2s;display:flex}.project-large:hover{transform:translateY(-4px)}.project-large-image-container{flex-shrink:0;width:50%;height:0;padding-bottom:37.5%;position:relative;overflow:hidden}.project-large-image{object-fit:cover;align-items:left;width:100%;height:100%;padding-bottom:1rem;position:absolute;top:0;left:0}.project-large-content{flex-direction:column;flex:1;justify-content:flex-start;padding:0;display:flex}.project-large-content h2{margin-bottom:.5rem;font-size:1.25rem}.project-large-content p{color:var(--foreground);opacity:.8;margin-bottom:1rem;font-size:1rem;line-height:1.6}.project-tags{flex-wrap:nowrap;gap:.5rem;margin-bottom:1rem;padding:.5rem;display:flex}.project-tags,.project-tags p{background:var(--accent-green-light);border-radius:9999px;transition:background-color .2s}.project-tags p{cursor:pointer;margin:0;padding:.25rem .75rem;font-size:.875rem}.project-tags p:hover{background:#d2df68cc}.project-large-content .see-more{color:var(--foreground);opacity:.8;margin-top:1rem;font-weight:500;transition:color .2s;display:inline-block}.project-large-content .see-more:hover{color:var(--accent-pink);opacity:1;text-decoration:underline}.project-details{max-height:0;margin-top:0;transition:max-height .3s ease-out;overflow:hidden}.project-details.expanded{max-height:1000px;margin-top:2rem}.project-subtitle{color:var(--foreground);opacity:.8;margin-top:.5rem;font-size:1.25rem}.project-section,.project-subtitle{margin-bottom:2rem}.project-section h2{font-size:1.75rem}.project-section h2,.project-section p{color:var(--foreground);margin-bottom:1rem}.project-section p{opacity:.9;font-size:1.125rem;line-height:1.6}.project-images-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem;max-width:1200px;margin-top:1.5rem;margin-left:auto;margin-right:auto;display:grid}.project-image-item{cursor:pointer;flex-direction:column;gap:.5rem;transition:transform .2s;display:flex}.project-image-item:hover{transform:scale(1.02)}.project-detail-image{border-radius:8px;width:100%;height:auto;box-shadow:0 2px 8px #0000001a}.project-detail-image.small{width:50%;max-width:600px;height:auto;box-shadow:none;border-radius:8px}.image-modal-overlay{z-index:1000;background-color:#000c;justify-content:center;align-items:center;padding:2rem;display:flex;position:fixed;inset:0}.image-modal-content{background:var(--background);border-radius:8px;max-width:90vw;max-height:90vh;position:relative;overflow:hidden;box-shadow:0 10px 30px #0000004d}.image-modal-image{object-fit:contain;width:100%;height:auto;max-height:80vh}.image-modal-close{color:#fff;cursor:pointer;background:#000000b3;border:none;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;font-size:1.5rem;transition:background-color .2s;display:flex;position:absolute;top:1rem;right:1rem}.image-modal-close:hover{background:#000000e6}@media (max-width:768px){.project-images-grid{grid-template-columns:1fr;gap:1rem}}.image-caption{color:var(--foreground);opacity:.7;text-align:center;font-size:.875rem;font-style:italic}.project-pdf-embed{background:#fff;border:none;border-radius:8px;box-shadow:0 4px 12px #0000001a}.conference-info{color:var(--foreground);opacity:.8;text-align:center;margin-top:.5rem;font-size:.875rem}.conference-info a{color:var(--accent-pink);font-weight:500;text-decoration:none;transition:opacity .2s}.conference-info a:hover{opacity:.8;text-decoration:underline}.book-reference{background:#f8f9fa80;border:1px solid #0000000d;border-radius:8px;align-items:center;gap:1rem;margin-top:2rem;padding:1rem;display:flex}.book-image-container{flex-shrink:0}.book-image{border-radius:4px;box-shadow:0 2px 8px #0000001a}.book-info{flex:1}.book-info h3{color:var(--foreground);margin-bottom:.25rem;font-size:1.125rem}.book-author{color:var(--foreground);opacity:.7;margin-bottom:0;font-size:.875rem}.recommended-reads{text-align:center;background-color:#f8f9fa;margin-top:4rem;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);padding:4rem}.recommended-reads h2{margin-bottom:1rem;font-size:1.75rem}.recommended-reads>p{color:var(--foreground);opacity:.8;margin-bottom:2rem;font-size:1.125rem}.books-grid{flex-wrap:wrap;justify-content:center;align-items:flex-start;gap:2rem;display:flex}.book-card{color:inherit;flex:0 0 200px;text-decoration:none;transition:transform .2s}.book-card:hover{transform:translateY(-4px)}.book-image-container{border-radius:4px;width:100%;margin-bottom:1rem;padding-top:150%;position:relative;overflow:hidden;box-shadow:0 4px 12px #0000001a}.book-image{object-fit:cover}.book-content h3{margin-bottom:.25rem;font-size:1rem}.book-content p{color:var(--foreground);opacity:.7;font-size:.875rem}.section-title{margin-top:4rem;margin-bottom:2rem;font-size:2rem}.large-projects-grid{grid-template-columns:1fr;gap:4rem;width:100%;margin:0 auto;padding:2rem 0;display:grid}.projects-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:2rem;margin-top:2rem;display:grid}.art-grid{grid-template-columns:repeat(2,1fr);gap:2rem;margin-top:3rem;display:grid}.art-item{border-radius:8px;transition:transform .2s;position:relative;overflow:hidden;box-shadow:0 4px 12px #0000001a}.art-item:hover{transform:translateY(-4px)}.art-image{object-fit:cover;width:100%;height:auto}.spinning-container{flex-direction:column;min-height:60vh}.spinning-container,.spinning-smiley-container{justify-content:center;align-items:center;display:flex;position:relative}.spinning-smiley-container{min-height:200px;padding:2rem}.spinning-text{white-space:nowrap;transform-origin:50%;font-family:Playfair Display,serif;font-size:1.5rem;font-weight:700;animation:orbit 4s linear infinite;position:absolute}@keyframes spin{to{transform:rotate(1turn)}}@keyframes orbit{0%{transform:rotate(0)translate(180px)rotate(0)}to{transform:rotate(1turn)translate(180px)rotate(-1turn)}}.circular-text-container{width:400px;height:400px;position:relative}.circle,.circular-text-container{justify-content:center;align-items:center;display:flex}.circle{z-index:1;width:240px;height:240px;position:absolute}.spinning-smiley{animation:spin 3s linear infinite}.circular-text{width:100%;height:100%;animation:rotate-text 4s linear infinite;position:absolute}.circular-text text{fill:var(--foreground);letter-spacing:2px;font-family:Playfair Display,serif;font-size:32px;font-weight:700}@keyframes rotate-text{0%{transform:rotate(0)}to{transform:rotate(-1turn)}}.modal-overlay{z-index:1000;background-color:#000000bf;justify-content:center;align-items:center;padding:2rem;display:flex;position:fixed;inset:0}.modal-content{background:var(--background);border-radius:8px;width:100%;max-width:960px;height:80vh;padding:2rem;position:relative;overflow-y:auto}.modal-header{background:var(--background);z-index:2;border-bottom:1px solid #0000001a;justify-content:space-between;align-items:center;margin-bottom:1.5rem;padding-bottom:1rem;display:flex;position:sticky;top:0}.modal-header h2{margin:0;font-size:1.75rem}.modal-close{cursor:pointer;color:var(--foreground);opacity:.7;background:0 0;border:none;padding:.5rem;font-size:1.5rem;line-height:1;transition:opacity .2s}.modal-close:hover{opacity:1}.modal-project{flex-direction:row;align-items:flex-start;gap:2rem;display:flex}.modal-project-image-wrapper{width:50%;min-width:50%;position:relative}.modal-project-image{width:100%;height:0;padding-bottom:75%;position:relative}.modal-project-image img{object-fit:contain;border-radius:8px;width:100%;height:100%;position:absolute;top:0;left:0}.modal-project-content{flex-direction:column;flex:1;gap:1.5rem;display:flex}.modal-project-content p{color:var(--foreground);opacity:.9;font-size:1.125rem;line-height:1.6}.project-link{color:var(--accent-pink);margin-top:1rem;font-weight:600;text-decoration:none;transition:opacity .2s;display:inline-block}.project-link:hover{opacity:.8;text-decoration:underline}@media (max-width:768px){.modal-project{flex-direction:column}.modal-project-image-wrapper{width:100%;min-width:100%}.project-large{flex-direction:column;gap:1rem}.project-large-image-container{width:100%;padding-bottom:75%}.projects-page .project-large-image-container{width:100%}}.project-small .project-content p,.project-small .project-tags{display:none}.project-small .project-content h3{margin-bottom:0;display:block}.project-small{cursor:pointer;transition:transform .2s}.project-small:hover{transform:translateY(-4px)}.filter-tags{flex-wrap:wrap;gap:.5rem;margin-bottom:2rem;display:flex}.filter-tag{border:1px solid var(--accent-turquoise-dark);color:var(--accent-turquoise-dark);cursor:pointer;background:0 0;border-radius:9999px;padding:.5rem 1rem;font-size:.875rem;transition:all .2s}.filter-tag.active,.filter-tag:hover{background:var(--accent-turquoise-dark);color:#fff}.projects-page .project-large{width:100%;margin:0 auto}.projects-page .project-large-image-container{width:50%;margin:0}.projects-page .project-large-image{object-fit:contain}@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-font-weight{syntax:"*";inherits:false}@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-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}