*{margin:0;padding:0;box-sizing:border-box;font-family:Helvetica,Arial,sans-serif}html,body{min-height:100%;overflow-y:auto}.main-page{position:relative;z-index:1;overflow-y:auto;-webkit-overflow-scrolling:touch;height:100vh}.name{position:relative;font-size:4rem;font-weight:700;padding-top:1.5vh;padding-bottom:1.4vh;padding-left:.5%;display:flex;flex-direction:row;color:#fffefee6}.proj-tile-container{display:inline-block;margin:20px;position:relative;transition:transform .3s ease,box-shadow .3s ease;border-radius:12px}.proj-tile-container:hover{transform:translateY(-10px);box-shadow:0 8px 20px #00000040}.proj-tile-square{width:25vw;height:25vw;min-width:200px;min-height:200px;max-width:400px;max-height:400px;background-size:cover;background-position:right;background-repeat:no-repeat;border-radius:8px;border-color:#000;border-width:5px;border-style:solid;box-shadow:0 4px 12px #0000007f;position:relative}.proj-tile-overlay{position:absolute;bottom:0;left:0;right:0;padding:15px;border-radius:0 0 2px 2px}.proj-tile-title{color:#fff;font-size:1.5rem;font-weight:700;margin:10px;text-shadow:1px 1px 2px rgba(0,0,0,.7)}.section-grid{position:relative;width:99%;margin:0 auto 2%;background-color:#7c878ed4;pointer-events:none;padding-bottom:20px}.section-grid *{pointer-events:auto}.section-text{position:relative;font-size:2.5rem;padding-top:1.5vw;padding-left:1.5vw;padding-bottom:1.5vw;background-color:#000;color:#f0f8ff}.app-container{display:flex;flex-direction:column;height:100vh}.demo_space{flex:1;position:relative;overflow:hidden}.demo_space>*{max-height:100%;position:relative!important}.about-me-container{display:flex;gap:2rem;align-items:stretch;margin:20px;width:calc(100% - 40px);height:calc(100% - 40px);padding:1.5rem;background-color:#1d1d1b;border-radius:12px}.about-me-image{flex:1;min-width:200px}.profile-image{width:100%;height:100%;object-fit:cover;aspect-ratio:1}.about-me-content{flex:2;display:flex;flex-direction:column;gap:2rem;justify-content:space-between}.about-section{flex:1;display:flex;flex-direction:column}.section-title{font-size:1.4rem;font-weight:600;margin-bottom:1rem;color:#fff;border-bottom:2px solid rgb(255,255,255);padding-bottom:.5rem}.sub-list{margin-left:1rem;list-style:none;padding:0}.sub-list li{font-size:.9rem;color:#1de4f2;padding-left:1rem;margin-bottom:.1rem}.sub-list li:before{content:"◦";font-size:1rem}.section-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}.section-list li{position:relative;padding-left:1.5rem;font-size:1rem;line-height:1.5;color:#fff}.section-list li:before{content:"•";position:absolute;left:0;color:#fff;font-weight:700;font-size:1.2rem}.section-list li.color-1:before{color:#00843d}.section-list li.color-2:before{color:#da291c}.section-list li.color-3:before{color:#ed8b00}.section-list li.color-4:before{color:#003da5}@media (max-width: 768px){.about-me-container{flex-direction:column;gap:1.5rem;padding:1rem}.about-me-image{max-width:200px;align-self:center}.about-me-content{gap:1.5rem}.section-title{font-size:1.2rem}.section-list li{font-size:.9rem}}@media (max-width: 480px){.about-me-container{padding:.8rem}.about-me-image{max-width:150px}.section-title{font-size:1.1rem}}.stem-app-wrapper{width:100vw;height:100vh;overflow:hidden;background-color:#000}.title-wrapper{position:relative;z-index:600;transform:translateY(0);transition:transform .3s ease}.title-wrapper.title-collapsed{transform:translateY(-100%);overflow:hidden}.app-container{position:relative;width:100vw;height:100vh;overflow:hidden;transition:height .3s ease}.app-container.full-screen{height:100vh}.instructions{display:inline-block;padding:12px 24px;border:2px solid white;border-radius:16px;color:#fff;background:linear-gradient(135deg,#444,#222);background-color:#00843e56;cursor:pointer;font-size:26px;text-align:center;width:50vh;position:absolute;z-index:1000;animation:gentle-beat 2s ease-in-out infinite}@keyframes gentle-beat{0%,to{transform:scale(1)}50%{transform:scale(1.03)}}.controls-container{position:fixed;bottom:0;left:50%;transform:translate(-50%);z-index:500;transition:transform .3s ease}.controls-container.collapsed{transform:translate(-50%) translateY(calc(100% - 35px));transition:transform .5s ease-in-out}.controls-eyelid{background:linear-gradient(135deg,#444,#222);color:#fff;padding:8px 20px;border-radius:12px 12px 0 0;cursor:pointer;font-size:14px;font-weight:700;text-align:center;-webkit-user-select:none;user-select:none;box-shadow:0 -2px 10px #0000004d;border:1px solid #555;border-bottom:none;min-width:100px}.controls-eyelid:hover{background:linear-gradient(135deg,#555,#333)}.controls{display:flex;flex-direction:row;align-items:center;gap:15px;background:linear-gradient(135deg,#000000f2,#1e1e1ef2);padding:20px;border:1px solid #555;border-bottom:none;box-shadow:0 -5px 20px #00000080;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.file-button{display:inline-block;padding:12px 24px;border:2px solid white;border-radius:16px;color:#fff;background-color:transparent;cursor:pointer;font-size:20px;text-align:center;transition:all .2s ease;white-space:nowrap}.file-button-2{display:inline-block;padding:12px 24px;border:2px solid white;border-radius:16px;color:#fff;background-color:#003da5;cursor:pointer;font-size:20px;text-align:center;transition:all .2s ease;white-space:nowrap}.file-button-play{display:inline-block;padding:12px 24px;border:2px solid white;border-radius:16px;color:#fff;background-color:#da291c;cursor:pointer;font-size:20px;text-align:center;transition:all .2s ease;white-space:nowrap}.file-button-restart{display:inline-block;padding:12px 24px;border:2px solid white;border-radius:16px;color:#fff;background-color:#00843d;cursor:pointer;font-size:20px;text-align:center;transition:all .2s ease;white-space:nowrap}.side-button{display:flex;flex-direction:row;gap:10px;align-items:center}.file-button:hover,.file-button-2:hover,.file-button-play:hover,.file-button-restart:hover{transform:translateY(-2px);box-shadow:0 4px 12px #fff3}.file-button:active,.file-button-2:active,.file-button-play:active,.file-button-restart:active{transform:translateY(0)}.file-button:hover{background-color:#ffffff1a}.loading-spinner{border:4px solid rgba(255,255,255,.3);border-top:4px solid white;border-radius:50%;width:30px;height:30px;animation:spin 1s linear infinite;margin:0 10px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.stem-circles{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.stem-circles>*{pointer-events:auto}input[type=file]{display:none}body{background-color:#000;margin:0;padding:0;overflow:hidden}.stem_canvas:hover{background-color:#ea0f0f18}@media (max-width: 768px){.controls{flex-direction:column;gap:10px;padding:15px}.side-button{flex-direction:column;gap:8px}.file-button,.file-button-2,.file-button-play,.file-button-restart{font-size:16px;padding:10px 20px}.instructions{font-size:20px;width:80vw}}/*! tailwindcss v4.1.12 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-duration:initial;--tw-ease:initial;--tw-space-x-reverse:0}}}@layer theme{:root,:host{--color-red-500:oklch(63.7% .237 25.331);--color-red-700:oklch(50.5% .213 27.518);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-700:oklch(55.5% .163 48.998);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-gray-500:oklch(55.1% .027 264.364);--color-zinc-100:oklch(96.7% .001 286.375);--color-zinc-500:oklch(55.2% .016 285.938);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-2xl:42rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-9xl:8rem;--text-9xl--line-height:1;--font-weight-semibold:600;--font-weight-bold:700;--tracking-normal:0em;--tracking-wide:.025em;--leading-snug:1.375;--leading-relaxed:1.625;--radius-lg:.5rem;--radius-2xl:1rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1)}}@layer utilities{.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.top-0{top:calc(var(--spacing)*0)}.top-1{top:calc(var(--spacing)*1)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing)*2)}.top-4{top:calc(var(--spacing)*4)}.top-12{top:calc(var(--spacing)*12)}.top-20{top:calc(var(--spacing)*20)}.right-1{right:calc(var(--spacing)*1)}.right-2{right:calc(var(--spacing)*2)}.left-0{left:calc(var(--spacing)*0)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing)*2)}.z-20{z-index:20}.mx-2{margin-inline:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-\[-10px\]{margin-top:-10px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-1\/2{height:50%}.h-40{height:calc(var(--spacing)*40)}.h-full{height:100%}.h-screen{height:100vh}.w-1\/3{width:33.3333%}.w-2\/3{width:66.6667%}.w-\[90\%\]{width:90%}.w-full{width:100%}.w-screen{width:100vw}.max-w-2xl{max-width:var(--container-2xl)}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.scale-125{--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x)var(--tw-scale-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing)*2)}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.overflow-hidden{overflow:hidden}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-5{border-style:var(--tw-border-style);border-width:5px}.border-amber-700{border-color:var(--color-amber-700)}.border-black{border-color:var(--color-black)}.border-gray-500{border-color:var(--color-gray-500)}.border-green-500{border-color:var(--color-green-500)}.border-red-500{border-color:var(--color-red-500)}.border-red-700{border-color:var(--color-red-700)}.border-transparent{border-color:#0000}.border-white{border-color:var(--color-white)}.bg-amber-500{background-color:var(--color-amber-500)}.bg-black{background-color:var(--color-black)}.bg-green-500{background-color:var(--color-green-500)}.bg-red-500{background-color:var(--color-red-500)}.bg-white{background-color:var(--color-white)}.bg-zinc-100{background-color:var(--color-zinc-100)}.p-10{padding:calc(var(--spacing)*10)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-2{padding-block:calc(var(--spacing)*2)}.py-4{padding-block:calc(var(--spacing)*4)}.pt-4{padding-top:calc(var(--spacing)*4)}.text-center{text-align:center}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-9xl{font-size:var(--text-9xl);line-height:var(--tw-leading,var(--text-9xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.text-amber-500{color:var(--color-amber-500)}.text-black{color:var(--color-black)}.text-green-500{color:var(--color-green-500)}.text-red-500{color:var(--color-red-500)}.text-white{color:var(--color-white)}.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-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}@media (hover:hover){.hover\:bg-green-600:hover{background-color:var(--color-green-600)}.hover\:bg-zinc-500:hover{background-color:var(--color-zinc-500)}}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}@media (min-width:40rem){.sm\:flex-row{flex-direction:row}.sm\:justify-center{justify-content:center}:where(.sm\:space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*0)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*0)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-x-6>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*6)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-x-reverse)))}}}@keyframes growFade{0%{opacity:.95;transform:scale(.9);box-shadow:0 0 #f59e0b66}to{opacity:0;transform:scale(1);box-shadow:0 0 0 10px #f59e0b00}}.growAndFade{will-change:transform,opacity;animation:.3s ease-out forwards growFade}.app-header{overflow:hidden}.app-header canvas{pointer-events:none;z-index:0!important;width:100%!important;height:100%!important;position:absolute!important;inset:0!important}main{min-height:0;overflow:hidden}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@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-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}
