@import"https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,500;0,9..144,600;1,9..144,500;1,9..144,600&family=Inter:wght@400;500;600;700;800&family=Space+Mono:wght@400;700&display=swap";:root{--cream: #f6efc9;--paper: #fbf8ec;--babyblue: #aecdea;--pink: #f6c9d1;--sage: #c9dcc3;--maroon: #6e0f13;--finale: #a8453a;--ink: #201a14;--ink-soft: #4a4038;--line: rgba(32, 26, 20, .14);--radius: 22px}.portfolio{font-family:Inter,system-ui,sans-serif;color:var(--ink);background-color:var(--paper);min-height:100vh;min-height:100dvh}html{overflow-x:hidden;background-color:var(--cream)}body{background-color:var(--cream)}.portfolio *{box-sizing:border-box}.portfolio h1,.portfolio h2,.portfolio h3{font-family:Fraunces,serif;font-weight:600;margin:0;line-height:1.05}.portfolio .accent{font-style:italic;font-weight:500}.portfolio p{margin:0;line-height:1.6;color:var(--ink-soft)}.portfolio a{color:inherit}.section{padding:clamp(3rem,6vw,6rem) clamp(1.5rem,6vw,5rem)}.stack-section{position:relative;min-height:100vh;min-height:100svh;border-radius:40px 40px 0 0;box-shadow:0 -30px 60px -30px #201a1459}.section-reveal{opacity:0;transform:translateY(36px);transition:opacity .6s cubic-bezier(.22,1,.36,1),transform .6s cubic-bezier(.22,1,.36,1)}.hero-full.section-visible .section-reveal,.stack-section.section-visible .section-reveal{opacity:1;transform:translateY(0)}.stack-section+.stack-section{margin-top:-40px}.eyebrow{font-size:.8rem;text-transform:uppercase;letter-spacing:.14em;font-weight:700;color:var(--maroon);margin-bottom:.75rem;display:inline-block}.nav{position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:space-between;padding:1.1rem clamp(1.5rem,6vw,3rem);background:none;transform:translateZ(0);backface-visibility:hidden}.nav-logo{display:inline-flex;align-items:center;gap:.55rem;font-family:Fraunces,serif;font-style:italic;font-size:1.3rem;font-weight:600;text-decoration:none;flex-shrink:0}.nav-heart{width:26px;height:26px;object-fit:contain;flex-shrink:0}.nav-right{position:relative;height:40px;flex:1 1 auto;display:flex;justify-content:flex-end}.mini-nav{position:absolute;inset:0;display:flex;align-items:center;justify-content:flex-end;gap:clamp(.8rem,2.5vw,1.4rem);font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.09em;color:var(--ink-soft);opacity:1;transition:opacity .4s ease}.mini-nav.mini-nav-hidden{opacity:0;pointer-events:none}.mini-nav a{text-decoration:none;padding-bottom:2px;border-bottom:1px solid transparent;transition:border-color .2s ease,color .2s ease}.mini-nav a:hover{border-color:var(--ink-soft)}.tab-row{position:absolute;inset:0;display:flex;align-items:center;justify-content:flex-end;gap:.2rem;opacity:0;transform:translateY(-10px);pointer-events:none;transition:opacity .4s ease,transform .4s ease}.tab-row.tab-row-visible{opacity:1;transform:translateY(0);pointer-events:auto}.tab{position:relative;display:inline-flex;align-items:center;height:34px;padding:0 .9em;border-radius:999px;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;text-decoration:none;background:transparent;opacity:.75;transition:background .2s ease,opacity .2s ease}.tab-row .tab{color:var(--ink-soft)}.tab:hover{opacity:1}.tab-active{opacity:1;background:#201a1414}.tab-row .tab-active{color:var(--ink)}.hero-full{position:relative;min-height:100vh;min-height:100svh;background:var(--cream);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0 1.5rem;text-align:left}.hero-reveal{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:3rem;width:100%;max-width:1140px}.hero-text{display:flex;flex-direction:column;align-items:flex-start;gap:2.5rem;max-width:640px}.hero-photos{position:relative;z-index:1;flex-shrink:0;width:clamp(260px,32vw,420px);margin:0;display:flex;flex-direction:column;gap:.5rem}.hero-photo-flip{display:block;width:100%;border:0;padding:0;margin:0;background:none;cursor:pointer;perspective:1400px}.hero-photo-flip-inner{position:relative;width:100%;aspect-ratio:2400 / 1560;transform-style:preserve-3d;transition:transform .9s cubic-bezier(.22,1,.36,1)}.hero-photo-flip-inner.is-flipped{transform:rotateY(180deg)}.hero-photo-face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;background:#fff}.hero-photo-back{transform:rotateY(180deg);display:flex;align-items:center;border:1px solid rgba(32,26,20,.14);padding:1.4rem 4.2rem 1.4rem 1.6rem}.hero-photo-back:before{content:"";position:absolute;top:10%;bottom:10%;right:3.2rem;width:1px;background:#201a142e}.hero-photo-back p{font-family:Fraunces,serif;font-style:italic;font-size:clamp(.8rem,1.7vw,1rem);line-height:1.5;color:var(--ink)}.hero-photo-back-stamp{position:absolute;top:1rem;right:1rem;width:1.8rem;height:2.2rem;border:1.5px dashed rgba(32,26,20,.3)}.hero-photo-frame{position:relative;width:100%;height:100%;background:#fff}.hero-photo{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:contain;border-radius:0;opacity:0;transition:opacity 1.8s ease}.hero-photo-active{opacity:1}.hero-photo-caption{align-self:flex-end;font-size:.72rem;font-weight:600;letter-spacing:.03em;color:var(--ink-soft)}.hero-art{position:absolute;z-index:0;pointer-events:none;-webkit-mask-image:var(--art-src);mask-image:var(--art-src);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center;animation:hero-art-pulse 7s ease-in-out infinite}@keyframes hero-art-pulse{0%,to{background-color:#c7c7c7}50%{background-color:#525252}}.hero-art-left{top:-6%;left:-8%;width:clamp(320px,42vw,540px);aspect-ratio:571 / 772}.hero-art-right{bottom:2%;right:-6%;width:clamp(240px,30vw,400px);aspect-ratio:502 / 857;animation-delay:-3.5s}.hero-statement,.hero-full .scroll-cue{position:relative;z-index:1}.hero-statement{font-size:clamp(2.2rem,4.6vw,4rem);font-weight:500;text-wrap:balance;color:var(--ink)}.hero-statement .accent{display:inline;font-weight:600}.scroll-cue{color:var(--maroon);animation:cue-bounce 1.8s ease-in-out infinite}.scroll-cue svg{width:26px;height:26px}@keyframes cue-bounce{0%,to{transform:translateY(0);opacity:.6}50%{transform:translateY(8px);opacity:1}}.about{background:var(--paper)}.about-spread{display:grid;grid-template-columns:1.1fr .9fr;gap:4rem;align-items:start}.about-theme{margin-top:.5rem}.about-theme.accent{font-family:Space Mono,SFMono-Regular,Consolas,monospace;font-style:normal;font-weight:600;font-size:clamp(1.9rem,4.4vw,3.2rem);line-height:1.15;margin-bottom:.75rem}.about-story{margin-top:1.5rem;max-width:48ch;font-size:1.05rem}.about-story+.about-story{margin-top:1rem}.about-photos{position:relative;display:flex;flex-direction:column;align-items:flex-end;gap:2rem;padding-top:.5rem}.about-photo{margin:0;width:80%}.about-photo img{display:block;width:100%;aspect-ratio:4/5;object-fit:cover;box-shadow:0 20px 40px #201a142e}.about-photo figcaption{margin-top:.6rem;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.07em;text-align:right;color:var(--ink-soft)}.about-photo-row{display:flex;gap:1rem;width:100%}.about-photo-small{flex:1 1 0;width:auto;min-width:0}.about-photo-small img{aspect-ratio:1}.about-photo-small figcaption{text-align:left;font-size:.62rem}.hero-meta{margin-top:1rem;font-size:.9rem;font-weight:600;color:var(--ink-soft)}.hero-cta{display:flex;gap:.9rem;margin-top:2rem;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;gap:.4em;padding:.85em 1.6em;border-radius:999px;font-weight:700;font-size:.92rem;text-decoration:none;border:2px solid var(--maroon);transition:transform .15s ease;cursor:pointer}.btn:hover{transform:translateY(-2px)}.btn-solid{background:var(--maroon);color:var(--cream)}.btn-outline{background:transparent;color:var(--maroon)}.research{background:var(--pink)}.research-title{font-size:clamp(1.8rem,3.4vw,2.6rem);margin-bottom:4rem}.research-meta{display:grid;grid-template-columns:1fr;gap:1.5rem;margin-bottom:2.5rem}@media (min-width: 641px){.research-meta{grid-template-columns:repeat(3,minmax(0,1fr))}}.meta-card{background:var(--paper);border-radius:16px;padding:1.1rem 1.3rem;border:1px solid rgba(32,26,20,.08)}.meta-card .label{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;font-weight:700;color:var(--maroon)}.meta-card .value{margin-top:.3rem;font-weight:600;font-size:.98rem}.research-layout{display:grid;grid-template-columns:1.15fr .85fr;gap:2.5rem;align-items:stretch}.research-text{display:flex;flex-direction:column}.research-photos{display:flex;align-items:center;justify-content:center}.photo-stack{display:flex;flex-direction:column;align-items:center;gap:1rem;min-height:260px;justify-content:center}.photo-stack-surface{position:relative;width:100%;max-width:396px;height:290px;margin-bottom:2.25rem;border:0;background:transparent;padding:0;cursor:pointer}.photo-card{position:absolute;inset:0;border-radius:14px;border:6px solid var(--paper);box-shadow:0 14px 28px #201a1438;display:flex}.photo-card-face{position:absolute;inset:0;padding:.8rem;display:flex}.chart-card{width:100%;display:flex;flex-direction:column;gap:.5rem}.chart-card-title{font-family:Fraunces,serif;font-style:italic;font-weight:600;font-size:.8rem;color:var(--ink);line-height:1.2}.chart-heatmap{flex:1;display:grid;grid-template-columns:1fr 1fr;gap:3px}.chart-heatmap-cell{border-radius:6px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.15rem;padding:.3rem;text-align:center}.chart-heatmap-value{font-weight:700;font-size:.78rem}.chart-heatmap-label{font-size:.55rem;opacity:.85;line-height:1.15}.chart-stackbars{flex:1;display:flex;align-items:flex-end;justify-content:center;gap:1.4rem;padding-bottom:.2rem}.chart-stackbar-col{display:flex;flex-direction:column;align-items:center;gap:.4rem}.chart-stackbar{width:2.6rem;height:6.6rem;border-radius:4px;overflow:hidden;display:flex;flex-direction:column;border:1px solid rgba(32,26,20,.15)}.chart-stackbar-seg+.chart-stackbar-seg{border-top:1px solid rgba(251,248,236,.5)}.chart-stackbar-caption{font-size:.58rem;font-weight:600;color:var(--ink-soft);text-align:center;line-height:1.25}.chart-rankbars{flex:1;display:flex;flex-direction:column;justify-content:center;gap:.4rem}.chart-rankbar-row{display:grid;grid-template-columns:5rem 1fr;align-items:center;gap:.4rem}.chart-rankbar-label{font-size:.58rem;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chart-rankbar-track{display:block;height:.45rem;background:#201a1414;border-radius:999px}.chart-rankbar-fill{display:block;height:100%;border-radius:999px;background:var(--maroon)}.stack-hint{font-size:.75rem;color:var(--ink-soft);text-align:center}.research-summary{margin-top:2.5rem;max-width:60ch}.research-summary h3{font-size:1rem;font-style:italic;margin-bottom:.9rem}.research-links{display:flex;flex-wrap:wrap;gap:.75rem 1.5rem;margin-top:2.5rem;padding-top:2rem;border-top:1px solid rgba(32,26,20,.15)}.research-links a{font-weight:700;font-size:.92rem;text-decoration:underline;text-underline-offset:3px}.coursework{background:var(--babyblue)}.projects{background:var(--sage)}.coursework-head{max-width:60ch;margin-bottom:2.5rem}.coursework-head h2{font-size:clamp(1.5rem,3.4vw,2.6rem);max-width:none;white-space:nowrap}.coursework-head .degree{margin-top:.5rem;font-weight:700}.coursework-head p{margin-top:1.1rem}.coursework-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:2.5rem 4.5rem}.pill-list{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;padding:0;margin:0}.pill-list li{background:var(--paper);color:var(--ink);border-radius:999px;padding:.55em 1.1em;font-weight:600;font-size:.88rem;border:1px solid rgba(32,26,20,.1);cursor:default;transition:background .2s ease,color .2s ease,border-color .2s ease,transform .2s ease,box-shadow .2s ease}.pill-list li:hover{background:var(--maroon);color:var(--cream);border-color:var(--maroon);transform:scale(1.08);box-shadow:0 6px 14px #201a1440}.side-col h3{font-size:1rem;font-style:italic;margin-bottom:.7rem}.side-col+.side-col{margin-top:3rem}.plain-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}.plain-list li{font-weight:600;font-size:.9rem;padding-left:1.1em;position:relative;color:var(--ink)}.plain-list li a{color:var(--maroon);text-decoration:underline;text-underline-offset:2px}.plain-list li:before{content:"★";position:absolute;left:0;color:var(--maroon);font-size:.72em}.involvement-list li{padding-left:0}.involvement-list li:before{content:none}.involvement-sub{list-style:none;padding:0;margin:.35rem 0 0;display:flex;flex-direction:column;gap:.3rem}.involvement-sub li{font-weight:500;font-size:.82rem;padding-left:1.1em;position:relative;color:var(--ink);opacity:.75}.involvement-sub li:before{content:"·";position:absolute;left:.15em;color:var(--maroon)}.involvement-badge{width:1.3rem;height:1.3rem;object-fit:contain;border-radius:4px;vertical-align:-3px;margin-right:.45rem;background:#fff;border:1px solid rgba(32,26,20,.1);padding:1px}.involvement-toggle{display:flex;align-items:center;width:100%;background:none;border:0;padding:0;margin:0;font:inherit;color:inherit;text-align:left;cursor:pointer}.involvement-detail{margin:.6rem 0 0 1.75rem;padding:.85rem 1rem;background:var(--paper);border:1px solid rgba(32,26,20,.12);border-radius:10px;font-size:.85rem;line-height:1.5}.involvement-detail p{margin:0;color:var(--ink)}.involvement-detail a{display:inline-block;margin-top:.6rem;font-weight:700;font-size:.82rem;color:var(--maroon);text-decoration:underline;text-underline-offset:2px}.involvement-title{font-weight:700}.timeline-diag{position:relative;height:40rem;margin:.25rem 0 2rem}.timeline-diag-detail{position:absolute;top:0;left:0;z-index:2;max-width:26rem}.timeline-diag-detail-body{display:flex;gap:1rem;align-items:flex-start;animation:timeline-detail-fade .35s cubic-bezier(.22,1,.36,1) both}@keyframes timeline-detail-fade{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.timeline-diag-detail-logo{flex-shrink:0;width:2.6rem;height:2.6rem;object-fit:contain;border-radius:8px;background:#fff;border:1px solid rgba(32,26,20,.12);padding:3px}.timeline-diag-detail-text h4{font-family:Fraunces,serif;font-size:1.05rem;font-weight:600}.timeline-diag-detail-text p{margin:.5rem 0 0;font-size:.88rem;color:var(--ink)}.timeline-diag-detail-text a{display:inline-block;margin-top:.5rem;font-weight:700;font-size:.8rem;color:var(--maroon);text-decoration:underline;text-underline-offset:2px}.timeline-diag-line{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.timeline-diag-line line{stroke:#201a1466;stroke-width:3;stroke-linecap:round}.timeline-diag-duration{stroke:#e84f8a!important;stroke-width:4!important;animation:timeline-duration-in .4s ease both}@keyframes timeline-duration-in{0%{opacity:0}to{opacity:1}}.timeline-diag-arrowhead{position:absolute;left:84%;top:3%;width:0;height:0;border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:12px solid rgba(32,26,20,.4);transform-origin:left center;transform:translate(-2px,-7px) rotate(-26deg)}.timeline-diag-point{position:absolute;display:flex;align-items:flex-start;gap:.7rem;transform:translate(-.3rem,-.3rem)}.timeline-diag-dot{flex-shrink:0;margin-top:.3rem;width:.6rem;height:.6rem;border-radius:50%;background:var(--ink)}.timeline-diag-content{max-width:20rem}.timeline-diag-content h4{font-family:Fraunces,serif;font-size:1.1rem;font-weight:600}.timeline-diag-range{font-family:Inter,system-ui,sans-serif;font-weight:500;font-size:.85rem;color:var(--ink-soft)}.timeline-diag-content ul{list-style:none;margin:.5rem 0 0;padding:0;display:flex;flex-direction:column;gap:.35rem}.timeline-diag-content li{font-size:.9rem;color:var(--ink);line-height:1.35}.timeline-diag-content li:not(.timeline-diag-event-clickable):before{content:"– ";color:var(--maroon);font-weight:700}.timeline-diag-event-clickable button{display:inline;background:none;border:0;padding:0;margin:0;font:inherit;font-size:.9rem;color:var(--ink);text-align:left;cursor:pointer}.timeline-diag-event-clickable button:before{content:"◂";display:inline-block;margin-right:.35em;color:var(--maroon);font-weight:700;transition:transform .2s ease}.timeline-diag-event-clickable button:hover,.timeline-diag-event-clickable button[aria-expanded=true]{color:var(--maroon);text-decoration:underline;text-underline-offset:2px}.timeline-diag-event-clickable button[aria-expanded=true]:before{transform:rotate(-90deg)}.education-distinctions{margin-top:3.5rem;max-width:68ch}.projects-bar{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem;animation:project-list-in .6s ease both}@keyframes project-list-in{0%{opacity:0;transform:translate(-24px)}to{opacity:1;transform:translate(0)}}@keyframes project-detail-in{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}.project-chip{display:flex;flex-direction:column;align-items:flex-start;gap:.6rem;text-align:left;background:var(--paper);border:1px solid rgba(32,26,20,.12);border-radius:var(--radius);padding:1.6rem;font:inherit;color:var(--ink);cursor:pointer;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}.project-chip:hover{transform:translateY(-4px);box-shadow:0 14px 28px #201a1429;border-color:var(--maroon)}.project-chip-icon{display:block;width:2rem;height:2rem;image-rendering:pixelated}.project-chip:hover .project-chip-icon{animation:project-icon-bounce .6s ease}@keyframes project-icon-bounce{0%,to{transform:translateY(0)}30%{transform:translateY(-7px)}55%{transform:translateY(0)}75%{transform:translateY(-3px)}}.project-chip-title{font-family:Fraunces,serif;font-weight:600;font-size:1.15rem}.project-chip-tagline{font-size:.8rem;font-weight:600;color:var(--maroon)}.project-chip-summary{font-size:.88rem;color:var(--ink-soft);margin:0}.project-tags{display:flex;flex-wrap:wrap;gap:.4rem}.project-tags span{background:#201a140f;border:1px solid rgba(32,26,20,.1);border-radius:999px;padding:.3em .8em;font-size:.75rem;font-weight:600;color:var(--ink)}.project-detail{max-width:100%;animation:project-detail-in .7s cubic-bezier(.22,1,.36,1) both}.project-back{display:inline-flex;align-items:center;background:none;border:0;padding:0;margin-bottom:1.5rem;font:inherit;font-weight:700;font-size:.85rem;color:var(--maroon);cursor:pointer;text-decoration:underline;text-underline-offset:3px}.project-detail-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:2.5rem;align-items:start}.project-detail-text{max-width:60ch}.project-detail h3{font-size:clamp(1.5rem,2.6vw,2rem)}.project-detail-tagline{margin-top:.4rem;font-weight:600;color:var(--maroon)}.project-detail .project-tags{margin:1.1rem 0 1.4rem}.project-detail p:not(.project-detail-tagline){margin-bottom:1rem}.project-detail .btn-outline{margin-top:.5rem}.project-github-link{transition:transform .15s ease,background .15s ease}.project-github-link:hover{background:#fff}.project-detail-image{position:relative}.project-detail-image img{display:block;width:100%;border-radius:12px;border:1px solid rgba(32,26,20,.15);box-shadow:0 16px 32px #201a1433}.involvement-image-slot{margin-top:.9rem}.involvement-image-slot img{display:block;width:100%;border-radius:10px;border:1px solid rgba(32,26,20,.12);box-shadow:0 14px 28px #201a142e}.resume{background:var(--finale);color:var(--cream)}.resume h2{color:var(--cream);font-size:clamp(1.8rem,3.4vw,2.6rem)}.resume-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1.5rem;margin-bottom:2.5rem}.resume-top p{color:var(--pink);max-width:46ch;margin-top:.5rem}.resume .btn-solid{background:var(--pink);border-color:var(--pink);color:var(--finale)}.resume-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.5rem}.resume-card{background:#fbf8ec0f;border:1px solid rgba(251,248,236,.25);border-radius:var(--radius);padding:1.5rem}.resume-card h3{font-style:italic;color:var(--pink);font-size:1.05rem;margin-bottom:.9rem}.exp-item+.exp-item{margin-top:1.1rem;padding-top:1.1rem;border-top:1px solid rgba(251,248,236,.18)}.exp-item .exp-role{font-weight:700;font-size:.92rem}.exp-item .exp-org{font-size:.82rem;color:var(--pink)}.exp-item .exp-date{font-size:.75rem;color:#fbf8eca6;margin-top:.15rem}.tag-row{display:flex;flex-wrap:wrap;gap:.4rem}.tag-row span{background:#fbf8ec1f;border-radius:999px;padding:.35em .85em;font-size:.78rem;font-weight:600}.resume-card .edu-line{font-weight:700;font-size:.92rem}.resume-card .edu-sub{font-size:.82rem;color:var(--pink);margin-top:.2rem}.resume-card .edu-gpa{margin-top:.7rem;font-size:.8rem;color:#fbf8eccc}.pf-footer{position:relative;min-height:55vh;min-height:55svh;background:var(--ink);color:#fff;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:clamp(3rem,6vw,6rem) clamp(1.5rem,6vw,5rem);border-radius:40px 40px 0 0;box-shadow:0 -30px 60px -30px #201a1459}.pf-footer .eyebrow{color:var(--pink)}.pf-footer h2{font-size:clamp(1.8rem,3.4vw,2.6rem);margin-bottom:.5rem}.pf-footer p{max-width:40ch;margin:0 auto;color:var(--pink)}.contact-close{position:relative;z-index:1;padding:2rem 3rem}.footer-links{display:flex;justify-content:center;gap:1rem;margin-top:1.75rem;flex-wrap:wrap}.footer-links a{text-decoration:none;font-weight:700;font-size:.88rem;border:2px solid #fff;color:#fff;border-radius:999px;padding:.6em 1.3em;transition:background .15s ease,color .15s ease}.footer-links a:hover{background:#fff;color:var(--ink)}.contact-qr-link{display:flex;flex-direction:column;align-items:center;gap:.6rem;margin-top:2rem;text-decoration:none;color:#fff;font-size:.82rem;font-weight:600;opacity:.85;transition:opacity .15s ease}.contact-qr-link:hover{opacity:1}.contact-qr{width:132px;height:132px;border-radius:12px;background:#fff;padding:.5rem}.footer-inline-link{text-decoration:underline;text-underline-offset:2px}p.footer-copy{margin-top:4rem;font-size:.78rem;color:#fff9}.contact-stickers{position:absolute;inset:0;pointer-events:none}.contact-sticker{position:absolute;background:none;border:0;padding:0;cursor:pointer;pointer-events:auto;filter:drop-shadow(0 8px 14px rgba(0,0,0,.4));transform:rotate(var(--sticker-rot, 0deg));transition:transform .15s ease}.contact-sticker:hover{transform:rotate(var(--sticker-rot, 0deg)) scale(1.06)}.contact-sticker img{display:block;width:100%;height:auto}.contact-sticker-portrait{--sticker-rot: -9deg;top:10%;right:9%;width:clamp(64px,7vw,96px);filter:none}.contact-sticker-portrait img{filter:drop-shadow(2px 0 0 #fff) drop-shadow(-2px 0 0 #fff) drop-shadow(0 2px 0 #fff) drop-shadow(0 -2px 0 #fff) drop-shadow(1.4px 1.4px 0 #fff) drop-shadow(-1.4px 1.4px 0 #fff) drop-shadow(1.4px -1.4px 0 #fff) drop-shadow(-1.4px -1.4px 0 #fff) drop-shadow(0 6px 12px rgba(0,0,0,.4))}.contact-sticker-lym{--sticker-rot: 6deg;bottom:9%;left:6%;width:clamp(140px,15vw,200px)}.contact-sticker-uf{--sticker-rot: -6deg;top:9%;left:7%;width:clamp(76px,8vw,116px)}.contact-sticker-eye{--sticker-rot: 11deg;bottom:13%;right:8%;width:clamp(52px,5.5vw,78px)}.contact-sticker-uf img,.contact-sticker-eye img{border-radius:50%}.contact-sticker-music{--sticker-rot: -13deg;top:40%;left:3%;width:clamp(68px,7.5vw,104px)}.contact-sticker-spiral{--sticker-rot: 8deg;top:38%;right:4%;width:clamp(58px,6.5vw,88px);filter:drop-shadow(0 8px 14px rgba(0,0,0,.4))}.contact-sticker-spiral img{border-radius:6px;border:3px solid #fdfdfb}@keyframes contact-sticker-bounce{0%{transform:rotate(var(--sticker-rot, 0deg)) scale(1)}30%{transform:rotate(var(--sticker-rot, 0deg)) scale(1.3)}55%{transform:rotate(var(--sticker-rot, 0deg)) scale(.88)}75%{transform:rotate(var(--sticker-rot, 0deg)) scale(1.1)}to{transform:rotate(var(--sticker-rot, 0deg)) scale(1)}}.contact-sticker-bounce{animation:contact-sticker-bounce .5s cubic-bezier(.36,1.7,.45,1) both}@media (max-width: 860px){.about-spread,.research-layout,.coursework-grid{grid-template-columns:1fr}.about-photos{order:-1;align-items:stretch}.about-photo-main{width:70%;align-self:center}.tab{font-size:.62rem;padding:0 .75em}.nav-logo{font-size:1.05rem}}@media (max-width: 640px){*{-webkit-tap-highlight-color:transparent}.portfolio{background-color:var(--cream)}.stack-section{border-radius:26px 26px 0 0;box-shadow:0 -16px 32px -18px #201a144d}.stack-section+.stack-section{margin-top:-26px}.nav{padding:.85rem 1rem;gap:.75rem;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.nav-logo{font-size:.92rem;flex-shrink:0}.nav-right{flex:1 1 auto;min-width:0;align-items:center;justify-content:flex-start;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none}.nav-right::-webkit-scrollbar{display:none}.mini-nav{display:none}.tab-row{position:static;opacity:1;transform:none;pointer-events:auto;width:max-content;justify-content:flex-start;gap:.2rem;padding-right:.5rem}.tab{flex-shrink:0;font-size:.66rem;padding:0 .7em;height:30px}.photo-stack-surface{max-width:220px}.projects-bar,.project-detail-grid{grid-template-columns:1fr}}.mobile-stack{display:flex;flex-direction:column}.mobile-stack-copy{margin:0;padding:1.4rem 1.4rem calc(1.4rem + env(safe-area-inset-bottom,0px));text-align:center;font-size:.75rem;color:var(--ink-soft);background:var(--cream)}.mobile-card{--tab-color: var(--paper);--tab-text: var(--ink);position:relative;background:var(--tab-color);color:var(--tab-text);border-radius:24px 24px 0 0;box-shadow:0 -12px 26px -16px #201a144d}.mobile-card+.mobile-card{margin-top:-18px}.mobile-card-header{position:relative;z-index:2;width:100%;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.5rem 1.4rem;background:none;border:0;text-align:left;cursor:pointer;font:inherit;color:inherit}.mobile-card-label{font-size:.95rem;font-weight:700;text-transform:uppercase;letter-spacing:.12em}.mobile-card-toggle{flex-shrink:0;width:32px;height:32px;border-radius:50%;border:1.5px solid currentColor;display:flex;align-items:center;justify-content:center;font-size:1.3rem;line-height:1;opacity:.75;transition:opacity .2s ease}.mobile-card-header:hover .mobile-card-toggle{opacity:1}.mobile-home-statement{margin:0 1.4rem 1.5rem;font-family:Fraunces,serif;font-style:italic;font-weight:500;font-size:clamp(.95rem,4.2vw,1.15rem);line-height:1.4;opacity:0;transform:translateY(6px);transition:opacity .35s ease .05s,transform .35s ease .05s}.mobile-card-expanded .mobile-home-statement{opacity:1;transform:translateY(0)}.mobile-card-title{display:block;padding:0 1.4rem;margin-bottom:1.1rem;font-family:Fraunces,serif;font-size:clamp(1.3rem,5.5vw,1.7rem);font-weight:600;line-height:1.2;opacity:0;transform:translateY(6px);transition:opacity .35s ease .05s,transform .35s ease .05s}.mobile-card-expanded .mobile-card-title{opacity:1;transform:translateY(0)}.mobile-card-title-code{font-family:Space Mono,SFMono-Regular,Consolas,monospace;font-size:clamp(1.05rem,4.4vw,1.3rem)}.mobile-card-body-wrap{display:grid;grid-template-rows:minmax(0,0fr);overflow:hidden;transition:grid-template-rows .4s ease}.mobile-card-expanded .mobile-card-body-wrap{grid-template-rows:minmax(0,1fr)}.mobile-card-body{min-height:0;overflow:hidden;padding:0 1.4rem 2rem}.mobile-card-content>*+*{margin-top:1.25rem}.mobile-home-content{display:flex;flex-direction:column;align-items:center;text-align:center;padding:0 1.4rem 2rem}.mobile-home-portrait{width:55%;max-width:200px;margin:1rem 0 1.5rem;border-radius:50%;box-shadow:0 16px 32px #201a1433}.mobile-resume .resume-card{background:#201a140d;border-color:#201a1424}.mobile-resume .resume-card h3{color:var(--maroon)}.mobile-resume .exp-item+.exp-item{border-top-color:#201a1424}.mobile-resume .exp-item .exp-org,.mobile-resume .resume-card .edu-sub{color:var(--maroon)}.mobile-resume .exp-item .exp-date,.mobile-resume .resume-card .edu-gpa{color:var(--ink-soft)}.mobile-resume .tag-row span{background:#201a1414;color:var(--ink)}.mobile-resume .btn-solid{background:var(--maroon);color:var(--cream)}p.contact-intro{color:var(--pink)}.mobile-card .contact-sticker-music,.mobile-card .contact-sticker-spiral{display:none}.mobile-card .footer-copy{margin-bottom:5rem}.mobile-card .contact-sticker-uf{inset:auto auto 2% 4%;width:clamp(42px,12vw,54px)}.mobile-card .contact-sticker-eye{inset:auto auto 2% 32%;width:clamp(30px,8.5vw,40px)}.mobile-card .contact-sticker-lym{inset:auto 4% 0 auto;width:clamp(80px,23vw,104px)}.mobile-card .contact-sticker-portrait{inset:auto 34% 2% auto;width:clamp(38px,10.5vw,48px)}.mobile-resume .side-col+.side-col{margin-top:0}@media (prefers-reduced-motion: reduce){.scroll-cue{animation:none}.mobile-card-body-wrap,.mobile-card-title,.mobile-card-toggle{transition:none}}.rain-toggle{position:fixed;top:1.1rem;right:1.1rem;z-index:1000;width:2.3rem;height:2.3rem;border-radius:50%;border:1.5px solid rgba(32,26,20,.25);background:var(--paper);color:var(--ink);font-size:1.05rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 16px #201a142e;transition:background .2s ease,color .2s ease,transform .2s ease}.rain-toggle:hover{transform:scale(1.08)}.rain-toggle-active{background:var(--ink);color:var(--cream);border-color:var(--ink)}.rain-overlay{position:fixed;inset:0;z-index:999;overflow:hidden;pointer-events:none}.rain-note{position:absolute;top:-10vh;color:var(--ink-soft);opacity:.75;animation-name:rain-fall;animation-timing-function:linear;animation-iteration-count:infinite}@keyframes rain-fall{0%{transform:translateY(0) rotate(0)}to{transform:translateY(120vh) rotate(25deg)}}
