:root{--color-ink:#17324a;--color-muted:#607589;--color-soft:#eef7ff;--color-surface:#fff;--color-surface-alt:#f6fbff;--color-line:#d8ebfb;--color-primary:#338fd6;--color-primary-dark:#1f75b8;--color-accent:#61a7ec;--shadow-soft:0 16px 42px rgba(22,50,72,.075);--shadow-hover:0 20px 50px #1632481f;--radius-sm:8px;--radius-md:12px;--radius-lg:18px;--content-max:1120px}*{box-sizing:border-box}html{background:#f6fbff;background:var(--color-surface-alt);scroll-behavior:smooth}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:linear-gradient(180deg,#fffffff5,#f6fbfffa 40%,#fff);color:#17324a;color:var(--color-ink);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;margin:0}body,button,input,textarea{letter-spacing:0}button,input,textarea{font:inherit}a{color:inherit}:focus-visible{border-radius:8px;border-radius:var(--radius-sm);outline:3px solid #1f75b8;outline:3px solid var(--color-primary-dark);outline-offset:3px}img{max-width:100%}::selection{background:#61a7ec40}code{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace}.App{min-height:100vh;overflow-x:hidden}.skip-link{background:var(--color-surface);border-radius:0 0 var(--radius-sm) var(--radius-sm);box-shadow:var(--shadow-soft);color:var(--color-primary-dark);font-weight:750;left:50%;padding:.7rem 1.25rem;position:absolute;text-decoration:none;top:0;transform:translate(-50%,-150%);z-index:1001}.skip-link:focus-visible{transform:translate(-50%)}.App-header{z-index:10}.App-header,main{position:relative}.page-wrapper{padding:clamp(4.5rem,8vw,7rem) clamp(1.25rem,5vw,4rem);scroll-margin-top:96px;width:100%}.page-wrapper:nth-of-type(odd){background:var(--color-surface)}.page-wrapper:nth-of-type(2n){background:var(--color-surface-alt)}.section-kicker{color:var(--color-primary);font-size:.78rem;font-weight:800;letter-spacing:.08em;margin:0 0 .55rem;text-transform:uppercase}.text-link{color:var(--color-primary);font-weight:700;text-decoration:none}.text-link:hover{color:var(--color-primary-dark)}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}.NavBar{align-items:center;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background-color:#ffffffd1;border:1px solid #ffffff8f;box-shadow:0 16px 36px #17202a1f;display:flex;flex-direction:row;gap:.25rem;justify-content:center;left:50%;margin:0 auto;padding:.45rem;position:fixed;top:18px;transform:translateX(-50%);width:min(calc(100% - 2rem),560px);z-index:1000}.NavBar,.NavBar a{border-radius:999px}.NavBar a{color:var(--color-muted);flex:1 1;font-size:.92rem;font-weight:750;padding:.72rem .8rem;position:relative;text-align:center;text-decoration:none;transition:color .22s ease,background .22s ease,transform .22s ease;white-space:nowrap;z-index:1}.NavBar a:hover{background:#3498db17;color:var(--color-primary)}.NavBar .active{background:var(--color-primary);box-shadow:0 8px 18px #3498db3d;color:#fff}@media (max-width:768px){.NavBar{bottom:auto;padding:.35rem;top:10px;width:min(calc(100% - 1rem),520px)}.NavBar a{font-size:.78rem;padding:.68rem .35rem}}@media (max-width:480px){.NavBar a{font-size:.7rem}}.heroContainer{align-items:center;animation:gradientBG 15s ease infinite;background:linear-gradient(-45deg,#61a7ec,#7cb9f8,#4d9be6,#3689db);background-size:400% 400%;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;margin:0 auto;min-height:68vh;overflow:hidden;padding:clamp(6.5rem,9vw,8.5rem) clamp(1.5rem,5vw,5.625rem) clamp(3rem,6vw,4.5rem);position:relative;width:100vw}@keyframes gradientBG{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}.avatar{animation:fadeInDown 1s ease-out;display:flex;justify-content:center;margin-bottom:clamp(1.1rem,2.4vw,1.8rem)}.avatar img{border-radius:50%;box-shadow:0 0 20px #0000001a;height:clamp(120px,15vw,160px);object-fit:cover;transition:transform .3s ease,box-shadow .3s ease;width:clamp(120px,15vw,160px)}.avatar img:hover{box-shadow:0 0 30px #0003;transform:scale(1.05) rotate(5deg)}.hero{color:#fff;margin:0 auto;max-width:840px;text-align:center}.hero-kicker{animation:fadeInUp 1s ease-out .5s both;color:#fffc;font-size:clamp(.75rem,1.6vw,.9rem);font-weight:800;letter-spacing:.12em;margin:0 0 .65rem;text-shadow:1px 1px 3px #0000001f;text-transform:uppercase}.hero h1{animation:fadeInUp 1s ease-out .6s both;color:#fff;font-size:clamp(2.5rem,6vw,4.8rem);font-weight:850;line-height:1.04;margin:0;text-shadow:2px 2px 8px #0000001f}.hero-copy{animation:fadeInUp 1s ease-out .7s both;color:#ffffffeb;font-size:clamp(1.05rem,2.2vw,1.35rem);font-weight:650;line-height:1.65;margin:clamp(.9rem,2vw,1.25rem) auto 0;max-width:760px;text-shadow:1px 1px 4px #0000001f}.hero-highlights{animation:fadeInUp 1s ease-out .8s both;display:flex;flex-wrap:wrap;gap:.65rem;justify-content:center;margin-top:clamp(1rem,2.5vw,1.5rem)}.hero-highlights span{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff26;border:1px solid #ffffff3d;border-radius:999px;color:#ffffffeb;font-size:.86rem;font-weight:750;padding:.42rem .7rem}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-30px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@media screen and (max-width:768px){.heroContainer{min-height:72vh;padding:6.25rem 1rem 2.5rem}.hero{max-width:100%}.hero-copy{max-width:34rem}}@media screen and (max-width:480px){.heroContainer{padding:5.75rem 1rem 2.25rem}.hero-highlights{gap:.45rem}.hero-highlights span{font-size:.78rem}}.project-container{margin:0 auto;max-width:var(--content-max)}.projects{grid-gap:.95rem;display:grid;gap:.95rem}.project-card{grid-gap:clamp(1.2rem,2.8vw,2rem);align-items:center;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);box-shadow:var(--shadow-soft);display:grid;gap:clamp(1.2rem,2.8vw,2rem);grid-template-columns:minmax(280px,4fr) minmax(0,6fr);min-height:0;overflow:hidden;padding:1rem;transition:transform .24s ease,box-shadow .24s ease,border-color .24s ease}.project-card:hover{border-color:#338fd642;box-shadow:var(--shadow-hover);transform:translateY(-2px)}.project-media{background:linear-gradient(135deg,#eaf6ff,#d8ecfb);border-radius:var(--radius-sm);height:230px;min-height:230px;overflow:hidden;position:relative;width:100%}.project-icon-panel{align-items:center;background:linear-gradient(135deg,#61a7eceb,#3689dbf2),radial-gradient(circle at 78% 18%,#ffffff42,#0000 32%);color:#fffffff0;display:flex;flex-direction:column;gap:.75rem;height:100%;justify-content:center;min-height:100%;width:100%}.project-image{display:block;height:100%;object-fit:cover;object-position:top center;width:100%}.project-icon-panel i{font-size:clamp(3rem,5.8vw,4.2rem)}.project-icon-panel strong{font-size:.94rem;letter-spacing:.08em;text-transform:uppercase}.project-index{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0000003d;border:1px solid #ffffff2e;border-radius:999px;bottom:1rem;color:#ffffffe6;font-size:.86rem;font-weight:850;left:1rem;padding:.34rem .56rem;position:absolute}.project-content{align-items:flex-start;display:flex;flex-direction:column;padding:.35rem clamp(.25rem,1.5vw,.75rem) .35rem 0}.project-type{color:var(--color-primary-dark);font-size:.78rem;font-weight:850;letter-spacing:.08em;margin:0 0 .7rem;text-transform:uppercase}.project-name{color:var(--color-ink);font-size:clamp(1.35rem,2.4vw,1.9rem);font-weight:850;line-height:1.08;margin:0}.project-description{color:var(--color-muted);line-height:1.65;margin:.85rem 0 1rem;max-width:58ch}.project-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.2rem}.project-tags span{background:#61a7ec1f;border:1px solid #338fd629;border-radius:999px;color:var(--color-primary-dark);font-size:.82rem;font-weight:800;padding:.34rem .62rem}.project-buttons{display:flex;gap:1rem;margin-top:auto}.github-button{align-items:center;background-color:var(--color-ink);border-radius:var(--radius-sm);color:#fff;display:inline-flex;font-size:.92rem;font-weight:800;gap:.42rem;justify-content:center;min-height:36px;padding:.48rem .82rem;text-decoration:none;transition:background-color .22s ease,transform .22s ease}.github-button:hover{background-color:#263447;transform:translateY(-2px)}.project-note{color:var(--color-muted);font-size:.9rem;font-weight:700}@media (max-width:800px){.project-card{gap:1rem;grid-template-columns:1fr}.project-media{height:206px;min-height:206px}.project-content{padding:.15rem .2rem .25rem}}@media (max-width:480px){.project-media{height:180px;min-height:180px}}.education-container{--education-card-pad:clamp(1.35rem,3vw,2.2rem);--education-logo-column:170px;--education-logo-size:142px;grid-gap:1rem;display:grid;gap:1rem;margin:0 auto;max-width:var(--content-max);position:relative}.education-container:before{background:linear-gradient(180deg,#0000,var(--color-line),#0000);bottom:1.5rem;content:"";left:calc(var(--education-card-pad) + var(--education-logo-column)/2);position:absolute;top:1.5rem;width:1px}.education-card{grid-gap:clamp(1.5rem,4vw,3rem);align-items:center;background:#ffffffe0;border:1px solid var(--color-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft);display:grid;gap:clamp(1.5rem,4vw,3rem);grid-template-columns:var(--education-logo-column) minmax(0,1fr);padding:var(--education-card-pad);transition:transform .24s ease,box-shadow .24s ease,border-color .24s ease}.education-card:hover{border-color:#3498db47;box-shadow:var(--shadow-hover);transform:translateY(-3px)}.education-logo{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);box-sizing:border-box;display:grid;height:var(--education-logo-size);justify-self:center;overflow:hidden;padding:1.2rem;place-items:center;position:relative;width:var(--education-logo-size)}.education-logo:after{background:var(--color-accent);border-radius:50%;box-shadow:0 0 0 6px #61a7ec2e;content:"";height:.7rem;position:absolute;right:-2.4rem;top:50%;transform:translateY(-50%);width:.7rem}.education-logo img{display:block;height:100%;object-fit:contain;object-position:center;width:100%}.education-details{min-width:0}.education-details h3{color:var(--color-ink);font-size:clamp(1.35rem,2.6vw,1.9rem);line-height:1.12;margin:0 0 .45rem}.institution{color:var(--color-primary);font-size:1.05rem;font-weight:800;margin-bottom:.35rem}.timeline{color:var(--color-muted);font-size:.92rem;font-weight:650;margin-bottom:1.05rem}.focus,.gpa,.major{color:var(--color-ink);font-weight:650;margin-bottom:.75rem}.gpa{background:var(--color-soft);border-radius:var(--radius-sm);color:var(--color-primary-dark);display:inline-block;padding:.45rem .75rem}.core-courses h4,.description h4{color:var(--color-ink);font-size:1rem;margin:1rem 0 .55rem}.core-courses ul{display:flex;flex-wrap:wrap;gap:.5rem;list-style-type:none;margin:0;padding-left:0}.core-courses li{background:#3498db17;border:1px solid #3498db29;border-radius:999px;color:var(--color-primary-dark);font-size:.88rem;font-weight:700;padding:.36rem .7rem}.description p{color:var(--color-muted);line-height:1.7;margin:0}@media (max-width:768px){.education-container{--education-logo-size:124px}.education-container:before,.education-logo:after{display:none}.education-card{grid-template-columns:1fr;justify-items:center;text-align:left}.education-details{width:100%}}.skill-container{grid-gap:1rem;display:grid;gap:1rem;margin:0 auto;max-width:var(--content-max)}.skill-group{grid-gap:clamp(1.25rem,3vw,2.5rem);align-items:start;border-top:1px solid var(--color-line);display:grid;gap:clamp(1.25rem,3vw,2.5rem);grid-template-columns:minmax(210px,.34fr) minmax(0,.66fr);padding:clamp(1.25rem,3vw,2rem) 0}.skill-group:last-child{border-bottom:1px solid var(--color-line)}.skill-group-copy h3{color:var(--color-ink);font-size:clamp(1.3rem,2.6vw,1.85rem);margin:0}.skill-group-copy p{color:var(--color-muted);line-height:1.65;margin:.65rem 0 0}.skills-grid{grid-gap:.75rem;display:grid;gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(118px,1fr))}.skill-item{align-items:center;background:#ffffffd1;border:1px solid var(--color-line);border-radius:var(--radius-sm);display:flex;gap:.65rem;min-height:64px;padding:.78rem .86rem;transition:transform .22s ease,border-color .22s ease,box-shadow .22s ease}.skill-item:hover{border-color:#3498db4d;box-shadow:0 12px 26px #16324814;transform:translateY(-2px)}.skill-item .iconify{flex:0 0 auto;font-size:1.8rem}.skill-item span:last-child{color:var(--color-ink);font-size:.92rem;font-weight:750}@media (max-width:760px){.skill-group{gap:1rem;grid-template-columns:1fr}}@media (max-width:480px){.skills-grid{grid-template-columns:1fr 1fr}.skill-item{min-height:58px;padding:.68rem}}.contact-container{grid-gap:clamp(2rem,5vw,4rem);align-items:start;background:linear-gradient(135deg,#eaf6ffeb,#fffffff5),var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft);box-sizing:border-box;display:grid;gap:clamp(2rem,5vw,4rem);grid-template-columns:minmax(240px,.42fr) minmax(0,.58fr);margin:clamp(4rem,8vw,6rem) auto 0;max-width:var(--content-max);padding:clamp(2rem,5vw,4rem) clamp(1.25rem,5vw,4rem);width:100%}.contact-copy{position:-webkit-sticky;position:sticky;top:110px}.contact-title{color:var(--color-ink);font-size:clamp(2rem,4.8vw,3.8rem);font-weight:850;line-height:1.02;margin:0}.contact-copy>p:not(.section-kicker){color:var(--color-muted);line-height:1.72;margin:1.1rem 0 0}.contact-form{background:#ffffffd6;border:1px solid #ffffffb3;border-radius:var(--radius-md);box-sizing:border-box;padding:clamp(1.25rem,3vw,2rem);width:100%}.form-group{margin-bottom:1.2rem;position:relative;width:100%}.form-group label{color:var(--color-ink);display:block;font-size:.92rem;font-weight:800;margin-bottom:.5rem}.form-group input,.form-group textarea{background:#ffffffeb;border:1px solid var(--color-line);border-radius:var(--radius-sm);box-sizing:border-box;color:var(--color-ink);font-size:1rem;padding:.9rem 1rem;transition:border-color .22s ease,box-shadow .22s ease;width:100%}.form-group input:focus,.form-group textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 4px #3498db24;outline:none}.form-group textarea{min-height:154px;resize:vertical}.submit-btn{background:var(--color-primary);border:none;border-radius:var(--radius-sm);color:#fff;cursor:pointer;font-size:1rem;font-weight:850;min-height:50px;padding:.9rem 1.2rem;transition:background .22s ease,transform .22s ease,box-shadow .22s ease;width:100%}.submit-btn:hover{background:var(--color-primary-dark);box-shadow:0 14px 26px #3498db3d;transform:translateY(-2px)}.submit-btn:disabled{cursor:progress;opacity:.72;transform:none}.contact-info{color:var(--color-muted);margin-top:1.5rem}.contact-info a{color:var(--color-primary);font-weight:800;text-decoration:none}.contact-info a:hover{color:var(--color-primary-dark)}.contact-social-links{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.25rem}.contact-social-link{align-items:center;background:#0000;border:0;border-radius:var(--radius-sm);color:var(--color-ink);display:inline-flex;gap:.5rem;padding:.45rem .25rem;text-decoration:none;transition:color .22s ease,transform .22s ease}.github-link,.github-link .social-icon,.github-link span{color:#111827}.contact-social-link:hover{color:var(--color-primary-dark);transform:translateY(-2px)}.social-icon{font-size:1.35rem}.submit-message{border-radius:var(--radius-sm);font-weight:750;margin-top:1rem;padding:.9rem;text-align:center}.submit-message.success{background:#2ecc711a;color:#1f8f4d}.submit-message.error{background:#e74c3c1a;color:#b33628}@media (max-width:820px){.contact-container{grid-template-columns:1fr;margin-bottom:0}.contact-copy{position:static}}@media (max-width:520px){.contact-social-link{justify-content:center;width:100%}.form-group input,.form-group textarea{font-size:16px}}.section-title-container{margin:clamp(3.5rem,6vw,5rem) auto 1.75rem;max-width:760px;padding:0 1.25rem;position:relative;scroll-margin-top:96px;text-align:center}.section-title-eyebrow{color:var(--color-primary);font-size:.78rem;font-weight:800;letter-spacing:.08em;margin:0 0 .65rem;text-transform:uppercase}.section-title{color:var(--color-ink);display:inline-block;font-size:clamp(2rem,4vw,3.15rem);font-weight:800;line-height:1.05;margin:0;padding-bottom:1.1rem;position:relative}.section-title:after{background:linear-gradient(90deg,var(--color-primary),var(--color-accent));border-radius:2px;bottom:0;content:"";height:3px;left:50%;position:absolute;transform:translateX(-50%);width:74px}@media (max-width:768px){.section-title-container{margin-top:3rem}}
/*# sourceMappingURL=main.86ad3535.css.map*/