.app{min-height:100vh;background:radial-gradient(ellipse at center,#1a1a1a,#0a0a0a);display:flex;align-items:center;justify-content:center;padding:2rem;position:relative;overflow:hidden}.main{max-width:800px;width:100%;text-align:center}.hero{margin-bottom:4rem}.title{font-size:3.5rem;font-weight:700;background:linear-gradient(135deg,#fff,#a3a3a3);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:1rem;letter-spacing:-.02em}.subtitle{font-size:1rem;color:#a3a3a3;font-weight:400}.about-me{margin:2rem 0;text-align:left}.about-content{padding:1.5rem}.about-title{font-size:1.25rem;font-weight:500;color:#fff;margin-bottom:1rem;text-align:left}.about-summary{font-size:.9rem;line-height:1.4;color:#a3a3a3;margin-bottom:1.5rem;text-align:left}.experience-highlights{display:grid;gap:.75rem;margin-bottom:1.5rem}.experience-item{padding:1rem}.experience-item h3{font-size:.95rem;font-weight:500;color:#fff;margin-bottom:.25rem}.experience-item .company{font-size:.85rem;color:#64b5f6;font-weight:400;margin-right:.75rem}.experience-item .years{font-size:.8rem;color:#a3a3a3;font-weight:400}.experience-item p{margin-top:.5rem;font-size:.8rem;line-height:1.4;color:#a3a3a3}.education-section{margin-top:1.5rem}.education-section h3{font-size:.9rem;font-weight:500;color:#fff;margin-bottom:.75rem}.education{display:flex;gap:1rem;justify-content:flex-start;flex-wrap:wrap}.other-roles{margin-top:1.5rem}.other-roles h3{font-size:.9rem;font-weight:500;color:#fff;margin-bottom:.75rem}.other-roles-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.5rem}.other-role{font-size:.75rem;color:#a3a3a3;padding:.25rem 0}.other-role .role-title{color:#fff;font-weight:400}.other-role .role-company{color:#64b5f6;margin-left:.5rem}.education-item{padding:.6rem 1rem;font-size:.8rem;color:#a3a3a3}.education-item strong{color:#fff}@media (max-width: 768px){.about-content{padding:1.25rem}.about-title{font-size:1.1rem}.about-summary{font-size:.85rem}.other-roles-list{grid-template-columns:1fr}.experience-item{padding:.85rem}.education{flex-direction:column;gap:.75rem}.education-item{text-align:center}}.logo-parade{margin-top:1.5rem}.logo-grid{display:flex;gap:1.5rem;justify-content:flex-start;align-items:center;flex-wrap:wrap}.logo-item{display:flex;align-items:center;justify-content:center;transition:all .3s ease;width:80px;height:50px}.logo-item img{max-width:100%;max-height:100%;object-fit:contain;filter:brightness(.7) contrast(1.1);transition:filter .3s ease}.logo-item:hover img{filter:brightness(.9) contrast(1)}.logo-item img[alt="Olin College"]{background:#fff;padding:8px;border-radius:0}@media (max-width: 768px){.logo-grid{justify-content:center;gap:1rem}.logo-item{width:70px;height:45px}}.projects{margin-top:3rem;text-align:left}.projects-content{padding:1.5rem}.projects-title{font-size:1.25rem;font-weight:500;color:#fff;margin-bottom:1rem;text-align:left}.projects-description{font-size:.9rem;line-height:1.4;color:#a3a3a3;margin-bottom:1.5rem;text-align:left}.projects-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem;margin-top:2rem}.project-card{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:2rem;text-decoration:none;color:inherit;transition:all .3s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.project-card:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,#ffffff1a,#ffffff0d);opacity:0;transition:opacity .3s ease}.project-card:hover:before{opacity:1}.project-card:hover{transform:translateY(-4px);border-color:#fff3;box-shadow:0 10px 40px #0000004d}.project-card--coming-soon{opacity:.6;cursor:default}.project-card--coming-soon:hover{transform:none;border-color:#ffffff1a;box-shadow:none}.project-card--coming-soon:before{display:none}.project-name{font-size:1.5rem;font-weight:600;margin-bottom:.5rem;color:#fff}.project-description{font-size:1rem;color:#a3a3a3;line-height:1.5;margin-bottom:1rem}.project-arrow{position:absolute;top:1.5rem;right:1.5rem;font-size:1.5rem;color:#a3a3a3;transition:all .3s ease}.project-card:hover .project-arrow{color:#fff;transform:translate(4px,-4px)}@media (max-width: 768px){.app{padding:1rem}.title{font-size:2.5rem}.subtitle{font-size:1.125rem}.projects-grid{grid-template-columns:1fr;gap:1rem}.project-card{padding:1.5rem}}.footer{margin-top:4rem;padding-top:2rem;border-top:1px solid rgba(255,255,255,.1)}.linkedin-link{color:#a3a3a3;text-decoration:none;font-size:.95rem;transition:color .3s ease}.linkedin-link:hover{color:#fff}.cursor{opacity:0;transition:opacity .1s ease}.cursor.visible{opacity:1}.space-particles{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:0}.particle{position:absolute;width:2px;height:2px;background:#fff9;border-radius:50%;animation:float 20s infinite linear}.particle:nth-child(3n){width:1px;height:1px;background:#fff6}.particle:nth-child(5n){width:3px;height:3px;background:#fffc;animation:twinkle 3s infinite ease-in-out}@keyframes float{0%{transform:translateY(100vh) translate(0);opacity:0}10%{opacity:1}90%{opacity:1}to{transform:translateY(-100vh) translate(100px);opacity:0}}@keyframes twinkle{0%,to{opacity:.4;transform:scale(1)}50%{opacity:1;transform:scale(1.2)}}.main{position:relative;z-index:1}.animation-toggle{position:fixed;top:1.5rem;right:1.5rem;z-index:1000;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:50%;width:48px;height:48px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:1.2rem;transition:all .3s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:#fff}.animation-toggle:hover{background:#ffffff26;border-color:#ffffff4d;transform:scale(1.05)}.animation-toggle:active{transform:scale(.95)}@media (max-width: 768px){.animation-toggle{top:1rem;right:1rem;width:40px;height:40px;font-size:1rem}}.passcode-screen{min-height:100vh;background:radial-gradient(ellipse at center,#1a1a1a,#0a0a0a);display:flex;align-items:center;justify-content:center;padding:2rem}.passcode-container{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:20px;padding:3rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);text-align:center;max-width:400px;width:100%}.passcode-title{font-size:4rem;margin-bottom:1rem}.passcode-subtitle{font-size:1.8rem;font-weight:600;color:#fff;margin-bottom:.5rem}.passcode-description{color:#a3a3a3;margin-bottom:2rem;font-size:1rem}.passcode-form{display:flex;flex-direction:column;gap:1rem}.passcode-input{background:#ffffff1a;border:2px solid rgba(255,255,255,.2);border-radius:12px;padding:1rem 1.5rem;font-size:1.1rem;color:#fff;text-align:center;font-family:SF Mono,Monaco,Inconsolata,monospace;letter-spacing:.2em;transition:all .3s ease}.passcode-input:focus{outline:none;border-color:#fff6;background:#ffffff26}.passcode-input::placeholder{color:#ffffff4d;letter-spacing:.1em}.passcode-input.shake{animation:shake .5s ease-in-out}@keyframes shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-5px)}20%,40%,60%,80%{transform:translate(5px)}}.passcode-submit{background:linear-gradient(135deg,#ffffff1a,#ffffff0d);border:1px solid rgba(255,255,255,.2);border-radius:12px;padding:1rem 2rem;color:#fff;font-size:1rem;font-weight:500;cursor:pointer;transition:all .3s ease;margin-top:.5rem}.passcode-submit:hover{background:linear-gradient(135deg,#ffffff26,#ffffff1a);border-color:#ffffff4d;transform:translateY(-2px)}.passcode-submit:active{transform:translateY(0)}.passcode-error{color:#ff6b6b;font-size:.9rem;margin:0;opacity:.9}@media (max-width: 768px){.passcode-container{padding:2rem;margin:1rem}.passcode-title{font-size:3rem}.passcode-subtitle{font-size:1.5rem}}.github-starmap{margin:4rem 0 2rem;padding:2rem;background:#ffffff08;border:1px solid rgba(255,255,255,.08);border-radius:16px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.starmap-title{font-size:1.5rem;font-weight:600;color:#fff;margin-bottom:.5rem;text-align:center}.starmap-subtitle{color:#a3a3a3;text-align:center;margin-bottom:2rem;font-size:.9rem}.starmap-loading{text-align:center;padding:3rem;color:#a3a3a3;font-style:italic}.starmap-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(8px,1fr));gap:2px;max-width:100%;margin-bottom:1.5rem}.commit-star{width:8px;height:8px;border-radius:50%;transition:all .3s ease;cursor:pointer}.commit-star.intensity-0{background:#ffffff1a;border:1px solid rgba(255,255,255,.05)}.commit-star.intensity-1{background:#64c8ff66;box-shadow:0 0 4px #64c8ff4d}.commit-star.intensity-2{background:#96dcff99;box-shadow:0 0 6px #96dcff66}.commit-star.intensity-3{background:#c8f0ffcc;box-shadow:0 0 8px #c8f0ff80}.commit-star.intensity-4{background:#fff;box-shadow:0 0 12px #fff9;transform:scale(1.2)}.commit-star:hover{transform:scale(1.5);z-index:10;box-shadow:0 0 16px #fffc}.starmap-legend{display:flex;justify-content:center;gap:2rem;font-size:.8rem;color:#a3a3a3}.legend-item{display:flex;align-items:center;gap:.5rem}.legend-item .commit-star{position:static;margin:0}@media (max-width: 768px){.github-starmap{padding:1.5rem;margin:2rem 0}.starmap-grid{grid-template-columns:repeat(20,1fr);gap:1px}.commit-star{width:6px;height:6px}.starmap-legend{gap:1rem;font-size:.75rem}}.projects-password-prompt{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:2rem;margin-top:2rem;text-align:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.projects-password-prompt h3{font-size:1.25rem;font-weight:500;color:#fff;margin-bottom:1rem}.projects-password-prompt p{font-size:.9rem;color:#a3a3a3;margin-bottom:1.5rem;line-height:1.4}.email-link{background:none;border:none;color:#64b5f6;text-decoration:underline;cursor:pointer;font-size:.9rem;font-family:inherit;transition:color .3s ease}.email-link:hover{color:#fff}.password-form{display:flex;flex-direction:column;gap:1rem;max-width:300px;margin:0 auto}.password-input{background:#ffffff1a;border:2px solid rgba(255,255,255,.2);border-radius:8px;padding:.75rem 1rem;font-size:1rem;color:#fff;text-align:center;transition:all .3s ease}.password-input:focus{outline:none;border-color:#fff6;background:#ffffff26}.password-input::placeholder{color:#fff6}.password-submit{background:linear-gradient(135deg,#ffffff1a,#ffffff0d);border:1px solid rgba(255,255,255,.2);border-radius:8px;padding:.75rem 1.5rem;color:#fff;font-size:.9rem;font-weight:500;cursor:pointer;transition:all .3s ease}.password-submit:hover{background:linear-gradient(135deg,#ffffff26,#ffffff1a);border-color:#ffffff4d;transform:translateY(-2px)}.password-submit:active{transform:translateY(0)}.password-error{color:#ff6b6b;font-size:.85rem;margin:0;opacity:.9}@media (max-width: 768px){.projects-password-prompt{padding:1.5rem}.projects-password-prompt h3{font-size:1.1rem}.projects-password-prompt p{font-size:.85rem}.password-form{max-width:100%}}.chatbot gradio-app{max-height:500px;display:block}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#0a0a0a;color:#fff;line-height:1.6}#root{min-height:100vh}
