@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Patrick+Hand:wght@400;700&display=swap";.header{z-index:20;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--border);background:#071119bd;position:sticky;top:0}.header-container{justify-content:center;align-items:center;width:min(1280px,100% - 20px);min-height:72px;margin:0 auto;display:flex}.nav{grid-template-columns:repeat(5,minmax(0,1fr));align-items:center;gap:12px;width:100%;display:grid}.nav-item{letter-spacing:.08em;text-transform:uppercase;width:100%;color:var(--muted);border-bottom:1px solid #0000;border-radius:0;padding:14px 8px;font-family:Patrick Hand,Segoe Print,cursive;font-size:1.12rem;transition:background .2s,color .2s,border-color .2s}.nav-item:hover,.nav-item.active{color:var(--text);background:#8ab4ff0f;border-color:#8ab4ff4d}.mobile-menu-btn{color:var(--text);display:none}@media (width<=860px){.header-container{justify-content:space-between;padding:10px 0}.mobile-menu-btn{border:1px solid var(--border);background:#ffffff05;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;margin-left:8px;display:inline-flex}.nav{border:1px solid var(--border);box-shadow:0 20px 42px var(--shadow);background:#091016f5;border-radius:18px;grid-template-columns:1fr;padding:12px;display:none;position:absolute;top:72px;left:16px;right:16px}.nav.mobile-open{display:grid}.nav-item{text-align:left;border-radius:12px;width:100%;padding:12px 14px}}.hero{padding:68px 0 40px;position:relative}.hero-shell{grid-template-columns:1.05fr 1fr;align-items:center;gap:40px;width:min(1120px,100% - 32px);margin:0 auto;display:grid}.hero-copy{padding:18px 0}.hero-title{letter-spacing:-.02em;color:var(--text);max-width:640px;margin:0 0 8px;font-family:Patrick Hand,Segoe Print,cursive;font-size:clamp(3.2rem,5vw,5.3rem);font-weight:400;line-height:.96;transform:translateY(-1px)}.hero-description{max-width:560px;color:var(--muted);margin-bottom:22px;font-size:1.06rem}.hero-cta{flex-wrap:nowrap;align-items:center;gap:16px;margin-bottom:22px;display:flex}.btn-social{border:1px solid var(--border);min-height:48px;color:var(--text);white-space:nowrap;box-shadow:none;background:#ffffff05;border-radius:999px;flex:none;justify-content:center;align-items:center;gap:8px;padding:0 24px;font-size:15px;font-weight:600;transition:transform .2s,border-color .2s,box-shadow .2s;display:inline-flex}.btn-social:hover{border-color:#8ab4ff99;transform:translateY(-2px)}.hero-collage-wrap{border:1px solid var(--border);background:#080f1542;border-radius:26px;padding:12px 0 14px;overflow:hidden}.hero-collage{gap:18px;width:max-content;padding:0 8px;animation:28s linear infinite marquee-scroll;display:flex}.hero-collage:hover{animation-play-state:paused}@keyframes marquee-scroll{0%{transform:translate(0)}to{transform:translate(-50%)}}.collage-card{border:1px solid var(--border);background:#080f15e6;border-radius:22px;flex:0 0 250px;height:360px;position:relative;overflow:hidden;box-shadow:0 25px 50px #080f1959}.collage-card img{object-fit:cover;filter:saturate(1.05)contrast(1.06);width:100%;height:100%}.collage-overlay{background:linear-gradient(#05090d00 0%,#05090d61 18%,#05090db8 52%,#05090df0 100%);padding:18px 18px 24px;position:absolute;inset:auto 0 0}.collage-overlay span{letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin-bottom:8px;font-size:10px;display:inline-block}.collage-overlay h2{letter-spacing:-.04em;color:var(--text);font-size:1.1rem}.card-one{margin-top:10px}.card-two{margin-top:34px}.card-three{margin-top:16px}.card-four{margin-top:48px}.card-five{margin-top:12px}.card-six{margin-top:42px}.card-seven{margin-top:18px}.card-eight{margin-top:30px}.scroll-indicator{color:var(--accent);border:1px solid var(--border);background:#ffffff05;border-radius:50%;width:42px;height:42px;animation:4s ease-in-out infinite drift;position:absolute;bottom:8px;left:50%;transform:translate(-50%)}@media (width<=980px){.hero-shell{grid-template-columns:1fr}.hero-copy{order:1}.hero-collage{order:2}}@media (width<=640px){.hero{padding-top:38px}.hero-shell{width:min(100% - 20px,1120px)}.hero-cta{flex-direction:column}.hero-cta .btn{width:100%}.hero-collage-wrap{-webkit-overflow-scrolling:touch;scrollbar-width:none;overflow:auto hidden}.hero-collage-wrap::-webkit-scrollbar{display:none}.hero-collage{width:max-content;padding:0 10px 4px;animation:none;transform:none}.collage-card{flex-basis:220px;height:300px}}.about-page{width:min(1120px,100% - 32px);margin:0 auto}.about-grid{grid-template-columns:minmax(0,1.2fr) minmax(260px,1.45fr);align-items:stretch;gap:24px;margin-bottom:24px;display:grid}.about-card{border:1px solid var(--border);background:#0c1218e6;border-radius:24px;box-shadow:0 18px 38px #0711192e}.bio-card,.story-card,.detail-card,.awards-card{padding:24px}.bio-card{flex-direction:column;justify-content:center;display:flex}.awards-card{margin:24px 0}.label{letter-spacing:.04em;text-transform:none;color:var(--accent);margin:18px 0 8px;font-family:Patrick Hand,Segoe Print,cursive;font-size:1.12rem;font-weight:400}.bio-card h3,.story-card p,.detail-card h4,.detail-card p,.education-block h4,.education-block p{color:var(--text)}.bio-card h3{letter-spacing:-.02em;margin-bottom:10px;font-size:1.35rem;font-weight:400}.bio-card h2{letter-spacing:-.04em;margin:0 0 12px;font-family:Patrick Hand,Segoe Print,cursive;font-size:clamp(2.1rem,3vw,3rem);font-weight:400;line-height:1.05}.interest-list{flex-direction:column;gap:10px;margin-top:12px;list-style:none;display:flex}.interest-list li{color:var(--muted);padding-left:18px;position:relative}.interest-list li:before{content:"•";color:var(--accent);position:absolute;left:0}.interest-list a{color:var(--text);-webkit-text-decoration:underline #8ab4ffa6;text-decoration:underline #8ab4ffa6}.interest-list a:hover{color:var(--accent)}.story-card{justify-content:center;align-items:stretch;height:100%;min-height:100%;padding:14px;display:flex}.geo-map-shell{justify-content:center;align-items:center;width:100%;height:100%;display:flex}.geo-map-image{object-fit:cover;object-position:center;background:#0a0f14b3;border-radius:18px;width:100%;max-width:560px;height:100%;display:block}.detail-heading-wrap{align-items:center;gap:12px;display:flex}.company-logo{border:1px solid var(--border);background:#ffffff05;border-radius:12px;justify-content:center;align-items:center;width:42px;height:42px;display:flex;overflow:hidden}.company-logo img{object-fit:cover;width:100%;height:100%;display:block}.rice-logo{background:linear-gradient(135deg,#60a5fa38,#c4b5fd26)}.p66-logo{background:linear-gradient(135deg,#fbbf2433,#f8717124)}.chevron-logo{background:linear-gradient(135deg,#60a5fa33,#2dd4bf1f)}.ut-logo{background:linear-gradient(135deg,#2dd4bf2e,#60a5fa1f)}.graham-logo{background:linear-gradient(135deg,#94a3b82e,#4f46e514)}.about-sections{gap:24px;display:grid}.detail-toggle{letter-spacing:.03em;width:100%;color:var(--text);justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;font-size:1.02rem;display:flex}.detail-content{gap:16px;margin-top:14px;display:grid}.detail-item-block,.education-block{border:1px solid var(--border);background:#ffffff03;border-radius:18px;padding:16px}.detail-header,.education-header{cursor:pointer;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.detail-header h4,.education-header h4{margin-bottom:4px;font-size:1.12rem}.simplified{margin-bottom:8px}.detail-header p,.education-header p{color:var(--muted)}.detail-header span,.education-header span{color:var(--muted);white-space:nowrap;font-size:.78rem}.detail-body{margin-top:12px}.detail-body p,.education-block p{color:var(--muted);margin-bottom:12px;line-height:1.7}.detail-body ul,.education-block ul{color:var(--muted);gap:8px;padding-left:18px;display:grid}.tag-row{flex-wrap:wrap;gap:8px;margin-top:14px;display:flex}.tag{border:1px solid var(--border);letter-spacing:.05em;text-transform:uppercase;color:var(--muted-strong);background:#ffffff05;border-radius:999px;align-items:center;padding:7px 10px;font-size:.72rem;display:inline-flex}@media (width<=820px){.about-grid{grid-template-columns:1fr}}.projects-page{width:min(1120px,100% - 32px);margin:0 auto;padding-top:12px}.projects-showcase{gap:18px;display:grid}.projects-section-title{letter-spacing:-.02em;color:var(--text);margin:8px 0 0;font-family:Patrick Hand,Segoe Print,cursive;font-size:clamp(2.2rem,3vw,3rem);font-weight:400;line-height:1.1}.projects-section-title.secondary{margin-top:8px}.project-featured{border:1px solid var(--border);background:#0b1216e6;border-radius:26px;grid-template-columns:1.3fr .9fr;gap:0;display:grid;overflow:hidden;box-shadow:0 20px 50px #07111947}.project-image-wrap{background:#0b1420;min-height:100%}.project-image-wrap img{object-fit:cover;width:100%;height:100%}.project-feature-content{flex-direction:column;justify-content:center;padding:30px 28px 26px;display:flex}.feature-pill{color:var(--accent);letter-spacing:.02em;text-transform:none;background:0 0;border:none;align-self:flex-start;margin-bottom:12px;padding:0;font-family:Patrick Hand,Segoe Print,cursive;font-size:.9rem;display:inline-flex}.project-feature-content h3{letter-spacing:-.06em;color:var(--text);margin-bottom:12px;font-size:clamp(2rem,2.8vw,2.7rem);line-height:1.02}.project-feature-content p{color:var(--muted);margin-bottom:18px;font-size:1rem}.lightsaber-feature{border:1px solid var(--border);background:#0b1216e6;border-radius:26px;grid-template-columns:1.4fr 1fr;gap:22px;margin-bottom:26px;padding:20px;display:grid;box-shadow:0 20px 50px #07111947}.lightsaber-media{grid-template-columns:1.5fr .75fr;gap:14px;display:grid}.lightsaber-image-stack{border:1px solid var(--border);background:#0b1216cc;border-radius:18px;min-height:290px;overflow:hidden}.lightsaber-image-stack.small{min-height:290px}.lightsaber-image-stack img{object-fit:contain;object-position:center;cursor:pointer;background:#080f13cc;width:100%;height:100%}.project-tile-image img,.project-tile-image .project-image-wrap img,.gallery-item img,.gallery-item picture img{object-fit:contain;object-position:center}.gallery-caption{display:none}.lightsaber-copy{flex-direction:column;justify-content:center;display:flex}.lightsaber-copy h3{letter-spacing:-.06em;color:var(--text);margin-bottom:12px;font-size:clamp(2rem,2.7vw,3rem)}.lightsaber-copy p{color:var(--muted);margin-bottom:10px;line-height:1.7}.project-skills-inline{color:var(--muted-strong);letter-spacing:.08em;text-transform:uppercase;margin-top:4px;font-size:.74rem}.project-tech-row{flex-wrap:wrap;gap:8px;display:flex}.project-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;display:grid}.project-tile{border:1px solid var(--border);background:#0c1218e6;border-radius:22px;transition:transform .2s,border-color .2s;overflow:hidden;box-shadow:0 16px 36px #07111933}.project-tile:hover{border-color:#8ab4ff61;transform:translateY(-4px)}.project-tile.expanded{border-color:#8ab4ff73;box-shadow:0 24px 44px #07111942}.project-toggle{text-align:left;width:100%;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}.project-tile-image{height:220px;overflow:hidden}.project-tile-image img{object-fit:contain;object-position:center;cursor:pointer;background:#080f13cc;width:100%;height:100%}.project-tile-body{padding:18px 18px 20px}.project-label-row{justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.project-category{letter-spacing:.12em;text-transform:uppercase;color:var(--accent);font-size:.68rem}.project-year{color:var(--muted);font-size:.74rem}.project-tile-body h3{letter-spacing:-.05em;color:var(--text);margin-bottom:8px;font-size:1.32rem}.project-tile-body p{color:var(--muted);font-size:.96rem}.separator-paper-button{min-height:38px;color:var(--text);background:#8ab4ff14;border:1px solid #8ab4ff59;border-radius:999px;justify-content:center;align-items:center;margin-top:20px;padding:0 16px;font-weight:600;text-decoration:none;display:inline-flex}.project-expanded{border-top:1px solid var(--border);background:#ffffff05;padding:18px}.project-expanded p{color:var(--muted);margin-bottom:16px;line-height:1.7}.project-tech-row{flex-wrap:wrap;gap:8px;margin-bottom:18px;display:flex}.project-tech-tag{border:1px solid var(--border);color:var(--muted-strong);letter-spacing:.04em;background:#ffffff05;border-radius:999px;align-items:center;padding:7px 10px;font-size:.7rem;display:inline-flex}.presentation-link{min-height:40px;color:var(--text);background:#8ab4ff14;border:1px solid #8ab4ff59;border-radius:999px;justify-content:center;align-items:center;padding:0 16px;font-weight:600;display:inline-flex}.compact-presentation-link{margin-top:18px}.lightsaber-feature.expanded{display:block}.lightsaber-image-stack,.lightsaber-copy{cursor:pointer;transition:transform .2s,border-color .2s}.lightsaber-image-stack:hover,.lightsaber-copy:hover{border-color:#8ab4ff73;transform:translateY(-2px)}.lightsaber-expanded{border-top:1px solid var(--border);margin-top:18px;padding-top:18px}.lightsaber-video-wrap{border:1px solid var(--border);background:#070d12b3;border-radius:18px;width:min(640px,100%);margin:18px auto;overflow:hidden}.lightsaber-video-wrap video{object-fit:contain;background:#0006;width:100%;max-height:420px;display:block}.video-caption{color:var(--muted);background:#070d12bf;padding:10px 14px 14px;font-size:.8rem;line-height:1.5}.lightsaber-video-placeholder{border:1px dashed var(--border);color:var(--muted);background:#ffffff05;border-radius:16px;margin:18px 0;padding:18px}.gallery-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:18px;display:grid}.gallery-item{border:1px solid var(--border);cursor:pointer;text-align:left;background:#0a1016bf;border-radius:14px;flex-direction:column;gap:8px;padding:0;display:flex;overflow:hidden}.gallery-item img{object-fit:contain;object-position:center;cursor:pointer;background:#080f13cc;width:100%;height:220px;display:block}.gallery-caption{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;padding:0 10px 10px;font-size:.72rem;display:inline-block}.lightbox-backdrop{z-index:40;background:#02060acc;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.lightbox-image{border:1px solid var(--border);background:#080d12f2;border-radius:18px;width:100%;max-width:min(920px,90vw);position:relative;overflow:hidden}.lightbox-image img{object-fit:contain;width:100%;max-height:80vh;display:block}.lightbox-caption{color:var(--text);background:#080d12f5;padding:12px 16px 18px;font-size:.92rem;line-height:1.5}.lightbox-close{border:1px solid var(--border);color:var(--text);cursor:pointer;background:#05090ccc;border-radius:999px;padding:8px 12px;position:absolute;top:12px;right:12px}@media (width<=980px){.project-featured{grid-template-columns:1fr}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=640px){.lightsaber-feature{grid-template-columns:1fr;gap:14px;padding:12px}.lightsaber-media{order:1;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.lightsaber-copy{order:2}.lightsaber-image-stack,.lightsaber-image-stack.small{height:150px;min-height:150px}.project-grid{grid-template-columns:1fr}.project-feature-content{padding:22px 18px 24px}.gallery-grid{grid-template-columns:1fr}}.skills{width:min(1100px,100% - 48px);margin:0 auto;padding:60px 0 40px}.skills-grid{grid-template-columns:repeat(2,minmax(220px,1fr));gap:12px;max-width:980px;margin:0 auto;display:grid}.skill-category-card{border:1px solid var(--border);background:#0c1218e6;border-radius:18px;min-height:92px;padding:14px 14px 12px;transition:transform .2s,border-color .2s}.skill-category-card:hover{border-color:#8ab4ff73;transform:translateY(-4px)}.category-header{flex-direction:column;gap:10px;display:flex}.category-header h3{color:var(--text);font-size:1.12rem}.category-tools{flex-wrap:wrap;gap:6px;display:flex}.software-badge{letter-spacing:.04em;text-transform:uppercase;border-radius:999px;justify-content:center;align-items:center;min-height:24px;padding:5px 9px;font-size:.58rem;font-weight:700;display:inline-flex}@media (width<=768px){.skills{width:min(100% - 24px,1100px);padding:60px 0}.skills-grid{grid-template-columns:1fr;max-width:none;margin-bottom:40px}}.contact{width:min(760px,100% - 32px);margin:0 auto}.contact-shell{justify-content:center;display:flex}.contact-card{border:1px solid var(--border);text-align:center;background:#0c1218e6;border-radius:28px;width:min(100%,700px);padding:38px 28px;box-shadow:0 20px 50px #07111940}.contact-header-row{justify-content:center;align-items:center;gap:16px;margin-bottom:18px;display:flex}.contact-icon{color:#0a66c2;background:#0a66c21f;border-radius:50%;justify-content:center;align-items:center;width:78px;height:78px;display:inline-flex}.contact-divider{background:#ffffff2e;width:1px;height:56px}.linkedin-headshot{object-fit:cover;border:1px solid var(--border);background:#ffffff0a;border-radius:50%;width:78px;height:78px;display:block}.contact-kicker{letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin-bottom:10px;font-size:.7rem}.contact-card h3{letter-spacing:-.06em;color:var(--text);margin-bottom:14px;font-size:clamp(1.8rem,3vw,2.9rem)}.contact-card p{max-width:560px;color:var(--muted);margin:0 auto 18px;font-size:1rem}.linkedin-button{width:min(100%,260px);min-height:52px;color:var(--text);background:linear-gradient(135deg,#8ab4ff38,#78f0d11f);border:1px solid #8ab4ff66;border-radius:999px;justify-content:center;align-items:center;margin-top:10px;padding:0 28px;font-weight:600;transition:transform .2s,box-shadow .2s;display:inline-flex}.linkedin-button:hover{transform:translateY(-2px);box-shadow:0 18px 36px #4873b638}.app{flex-direction:column;min-height:100vh;display:flex}main{flex-direction:column;flex:1;justify-content:center;display:flex}section{padding:64px 0 52px;animation:.5s floatIn}.footer{border-top:1px solid var(--border);text-align:center;color:var(--muted);background:#071119b3;padding:24px 20px 40px}.footer p{font-size:13px;line-height:1.8}@media (width<=900px){section{padding:52px 0 40px}}:root{--primary:#8ab4ff;--primary-strong:#dfe9ff;--accent:#b8c7ff;--bg:#071119;--bg-elevated:#0d1a22;--bg-soft:#13232d;--panel:#121c23e6;--panel-strong:#101c25;--text:#edf3f8;--muted:#edf3f8b8;--muted-strong:#edf3f8d6;--border:#97adbe29;--shadow:#07111973}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:radial-gradient(circle at top,#8ab4ff2e,#0000 30%),linear-gradient(#071119 0%,#0a1620 100%);font-family:Inter,Segoe UI,sans-serif;line-height:1.6}img{max-width:100%;display:block}button,a{font:inherit}button{cursor:pointer;background:0 0;border:none}h1,h2,h3,h4,p{line-height:1.2}h1,h2,h3,h4,.lightsaber-copy h3,.project-tile-body h3,.project-feature-content h3,.collage-overlay h2{font-family:Inter,Segoe UI,sans-serif}.hero-title,.section-header h2{font-family:Patrick Hand,Segoe Print,cursive}.eyebrow,.label,.project-category,.feature-pill,.project-tech-tag,.tag,.contact-kicker,.detail-toggle{letter-spacing:.02em;font-family:Patrick Hand,Segoe Print,cursive;font-size:1.08em;line-height:1.25}p{color:var(--muted)}a{color:inherit;text-decoration:none}.eyebrow{letter-spacing:.04em;text-transform:none;color:var(--accent);margin-bottom:16px;font-family:Patrick Hand,Segoe Print,cursive;font-size:1.12rem;font-weight:400}.btn{border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;min-height:48px;padding:0 24px;font-size:15px;font-weight:600;transition:transform .2s,box-shadow .2s,border-color .2s;display:inline-flex}.btn:hover{transform:translateY(-2px)}.btn-primary{color:var(--text);background:linear-gradient(135deg,#8ab4ff47,#78f0d133);border-color:#8ab4ff59;box-shadow:0 18px 50px #22364a47}.btn-secondary{border-color:var(--border);color:var(--text);background:#ffffff05}.section-header{text-align:left;width:min(1120px,100% - 32px);margin:0 auto 40px}.section-header h2{letter-spacing:-.05em;color:var(--text);font-size:clamp(2.2rem,3.5vw,3.2rem);font-weight:700}.section-header p{max-width:640px}::-webkit-scrollbar{width:11px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:#8ab4ff4d;border-radius:999px}@keyframes drift{0%,to{transform:translate(0,0)}50%{transform:translateY(-12px)}}@keyframes floatIn{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
