:root{--bg: #1c1c1c;--bg-card: rgba(15, 14, 13, .94);--bg-card-hover: rgba(24, 23, 21, .97);--border: rgba(212, 169, 106, .12);--border-hover: rgba(212, 169, 106, .45);--text: #f4f4f4;--text-muted: #c0b09a;--accent: #d4a96a;--accent-alt: #e8d9c4;--accent-glow: rgba(212, 169, 106, .15);--accent-alt-glow: rgba(232, 217, 196, .12);--shadow: rgba(0, 0, 0, .7);--tag-bg: rgba(212, 169, 106, .12);--tag-text: #d4a96a;--font: "Open Sans", sans-serif;--font-display: "Space Grotesk", "Open Sans", sans-serif;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 2rem;--text-4xl: 2.5rem;--text-5xl: 3rem;--sp-xs: .25rem;--sp-sm: .5rem;--sp-md: 1rem;--sp-lg: 1.5rem;--sp-xl: 2rem;--sp-2xl: 3rem;--sp-3xl: 4rem;--ease: cubic-bezier(.16, 1, .3, 1);--t-fast: .15s ease;--t-normal: .26s ease}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{background:var(--bg);font-size:18px;scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color-scheme:dark}body{background:var(--bg);color:var(--text);font-family:var(--font);font-weight:400;line-height:1.6;min-height:100vh;overflow:auto}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);line-height:1.2;font-weight:700}a{color:var(--accent);font-weight:600;text-decoration:underline;text-decoration-thickness:.08em;text-underline-offset:.15em;transition:color var(--t-normal),opacity var(--t-normal)}@media(hover:hover){a:hover{opacity:.8}}body:after{content:"";position:fixed;inset:0;background:radial-gradient(ellipse 65% 45% at 50% -5%,rgba(212,169,106,.07) 0%,transparent 55%),radial-gradient(ellipse 45% 55% at 0% 100%,rgba(232,217,196,.04) 0%,transparent 50%);pointer-events:none;z-index:2}@keyframes fade-up{0%{opacity:0;transform:translateY(36px) scale(.982)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes sweep-engineer{0%{background-position:76% 0}23%{background-position:18% 0}23.1%{background-position:10% 0}65.9%{background-position:10% 0}66%{background-position:18% 0}to{background-position:76% 0}}@keyframes sweep-developer{0%{background-position:90% 0}18.9%{background-position:90% 0}19%{background-position:82% 0}44%{background-position:18% 0}72%{background-position:82% 0}72.1%{background-position:90% 0}to{background-position:90% 0}}.main{position:relative;z-index:10;display:flex;justify-content:center;min-height:100vh;padding:var(--sp-lg)}.content{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3xl);text-align:center;max-width:60rem;width:100%;padding-top:var(--sp-2xl);padding-bottom:var(--sp-3xl)}.hero-section{display:flex;flex-direction:column;align-items:center;gap:var(--sp-xl);width:100%}.name{color:var(--text);font-size:var(--text-4xl);font-weight:700;letter-spacing:-.03em;animation:fade-up 1.8s var(--ease) .2s both}.subtitle{color:var(--text-muted);font-size:var(--text-xl);font-weight:500;animation:fade-up 1.8s var(--ease) 1.1s both}.bio{color:var(--text-muted);font-size:var(--text-base);line-height:1.75;max-width:44rem;animation:fade-up 1.8s var(--ease) 1.1s both}.cycle-a,.cycle-b{display:inline-block;background-size:300% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;will-change:background-position}.cycle-a{background-image:linear-gradient(90deg,#888 0%,#888 38%,#b9905a 43%,var(--accent) 45%,var(--accent-alt) 50%,var(--accent) 55%,#b9905a 57%,#888 62%,#888 100%);animation:sweep-engineer 7s linear infinite}.cycle-b{background-image:linear-gradient(90deg,#888 0%,#888 38%,#b9905a 43%,var(--accent) 45%,var(--accent-alt) 50%,var(--accent) 55%,#b9905a 57%,#888 62%,#888 100%);animation:sweep-developer 7s linear infinite}.nav{display:flex;flex-wrap:wrap;gap:var(--sp-md);justify-content:center;animation:fade-up 1.8s var(--ease) 1.1s both}.button{align-items:center;background:var(--bg-card);border:1px solid var(--border);border-radius:.4em;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--text-muted);cursor:pointer;display:inline-flex;font-size:var(--text-sm);height:2.75em;width:2.75em;justify-content:center;line-height:1;padding:0;text-decoration:none;transition:border-color var(--t-normal),color var(--t-normal),transform var(--t-fast),box-shadow var(--t-normal);will-change:transform}.button-icon{flex-shrink:0;width:16px;height:16px;stroke:currentColor}@media(hover:hover){.button:hover{border-color:var(--border-hover);color:var(--text);transform:translateY(-1px);box-shadow:0 6px 24px var(--shadow)}}.button:active{transform:translateY(0)}.button[aria-label=LinkedIn]{color:#0a66c2}.button[aria-label=GitHub]{color:#e6edf3}.button[aria-label=YouTube]{color:red}.button[aria-label="Google Scholar"]{color:#4285f4}.button[aria-label=Resume]{color:var(--accent)}.tech-strip{width:100%;overflow:hidden;mask-image:linear-gradient(90deg,transparent 0%,#000 12%,#000 88%,transparent 100%);-webkit-mask-image:linear-gradient(90deg,transparent 0%,#000 12%,#000 88%,transparent 100%);animation:fade-up 1.8s var(--ease) 1.1s both}.tech-track{display:flex;align-items:center;gap:3rem;width:max-content;animation:tech-scroll 40s linear infinite;will-change:transform}@keyframes tech-scroll{0%{transform:translate(0)}to{transform:translate(-50%)}}.tech-item{display:flex;flex-direction:column;align-items:center;gap:.4rem;cursor:default}.tech-item img{display:block;height:48px;width:auto}.tech-item img[alt=Flask],.tech-item img[alt=Azure]{height:auto;width:96px}.tech-item img[alt=Git]{height:auto;width:72px}.icon-invert{filter:invert(1)}.projects-section{width:100%;animation:fade-up 1.8s var(--ease) 2.35s both}.projects-title{color:var(--text);font-size:var(--text-2xl);font-weight:700;margin-bottom:var(--sp-xl);text-align:center;letter-spacing:-.02em}.projects-title:after{content:"";display:block;width:2rem;height:3px;border-radius:2px;background:linear-gradient(90deg,var(--accent),var(--accent-alt));margin:.5rem auto 0}.projects-grid{display:grid;grid-template-columns:1fr;gap:var(--sp-lg);width:100%}.project-card{background:var(--bg-card);border:1px solid var(--border);border-radius:.6rem;padding:var(--sp-lg);text-align:left;transition:border-color var(--t-normal),background var(--t-normal),transform var(--t-fast),box-shadow var(--t-normal);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);will-change:transform}@media(hover:hover){.project-card:hover{border-color:var(--border-hover);background:var(--bg-card-hover);transform:translateY(-2px);box-shadow:0 8px 32px var(--shadow)}}.project-card:first-child{border-top:2px solid var(--border-hover)}.project-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--sp-md);margin-bottom:var(--sp-md)}.project-card-title{color:var(--text);font-size:var(--text-lg);font-weight:600;margin:0;flex:1}.project-card-year{color:var(--text-muted);font-size:var(--text-sm);font-weight:400;white-space:nowrap}a.project-card-year{color:var(--accent);font-weight:600}.project-card-description{color:var(--text-muted);font-size:var(--text-base);line-height:1.7;margin-bottom:var(--sp-md)}.project-card-video-link{display:block;text-decoration:none;margin-bottom:var(--sp-md);transition:transform var(--t-fast),opacity var(--t-normal)}@media(hover:hover){.project-card-video-link:hover{opacity:.9;transform:scale(1.01)}}.project-card-video{width:100%;border-radius:.4rem;overflow:hidden;background:var(--bg);border:1px solid var(--border);transition:border-color var(--t-normal)}.project-card:hover .project-card-video{border-color:var(--border-hover)}.project-card-video video{width:100%;height:auto;display:block;max-height:450px;object-fit:contain;background:transparent;pointer-events:none}.project-card-tags{display:flex;flex-wrap:wrap;gap:var(--sp-sm)}.project-tag{display:inline-block;padding:.2rem .65rem;border-radius:999px;background:var(--tag-bg);color:var(--tag-text);font-size:var(--text-xs)}.contact-section{width:100%;text-align:center;animation:fade-up 1.8s var(--ease) 3.15s both}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:1ms!important;animation-delay:0ms!important;transition-duration:1ms!important;scroll-behavior:auto!important}}.contact-email{color:var(--text-muted);font-size:var(--text-base);letter-spacing:.02em;margin-top:var(--sp-md)}.resume-page{min-height:100vh;padding:var(--sp-2xl) var(--sp-lg);display:flex;align-items:flex-start;justify-content:center;background:var(--bg)}.resume-card{background:var(--bg-card);border:1px solid var(--border);border-radius:.6rem;box-shadow:0 12px 48px var(--shadow);max-width:960px;width:100%;padding:var(--sp-2xl) var(--sp-xl);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:fade-up 1s var(--ease) both}.resume-back-link{display:inline-flex;align-items:center;gap:.5rem;font-size:var(--text-sm);color:var(--accent);text-decoration:none;margin-bottom:var(--sp-lg);transition:color var(--t-normal),opacity var(--t-normal)}.resume-back-link span{text-decoration:underline;text-decoration-thickness:.08em;text-underline-offset:.15em}.resume-header{display:flex;justify-content:space-between;align-items:center;gap:var(--sp-2xl);margin-bottom:var(--sp-3xl);padding-bottom:var(--sp-xl);border-bottom:1px solid var(--border)}.resume-header-main{display:flex;flex-direction:column;gap:var(--sp-xs);flex:1}.resume-name{font-size:var(--text-4xl);font-weight:700;line-height:1.1;margin:0;color:var(--text);letter-spacing:-.02em}.resume-title{font-size:var(--text-lg);font-weight:400;color:var(--text-muted);margin:0;letter-spacing:.01em}.resume-header-contact{display:flex;flex-direction:column;align-items:flex-end;text-align:right;justify-content:center}.resume-header-links{display:flex;align-items:center;gap:var(--sp-xs);flex-wrap:wrap;justify-content:flex-end}.resume-link{font-size:var(--text-sm)}.resume-link-separator{color:var(--text-muted);opacity:.4;font-size:var(--text-sm)}.resume-table{width:100%;border-collapse:collapse;font-size:var(--text-base)}.resume-table th,.resume-table td{vertical-align:top;padding:var(--sp-md) var(--sp-sm)}.resume-table th{width:13%;text-align:left;color:var(--accent);font-weight:600;font-size:var(--text-base);letter-spacing:.07em;text-transform:uppercase;border-right:1px solid var(--border);padding-right:var(--sp-lg);white-space:normal;padding-top:1.15rem}.resume-table tr:first-child th,.resume-table tr:first-child td{padding-top:0}.resume-table tr:not(:last-child){border-bottom:1px solid var(--border)}.resume-table td{padding-left:var(--sp-lg)}.resume-entry{margin-bottom:var(--sp-xl)}.resume-entry:last-child{margin-bottom:0}.resume-entry-title{font-weight:600;color:var(--text);font-size:var(--text-xl);margin-bottom:.3rem;line-height:1.3}.resume-entry-meta{font-size:var(--text-sm);color:var(--text-muted);margin-bottom:.65rem;line-height:1.5}.resume-entry-text{line-height:1.5;color:var(--text-muted)}.resume-entry-text ul{list-style:none;padding:0;margin:0}.resume-entry-text li{position:relative;padding-left:1.2rem;margin-bottom:.2rem;color:var(--text-muted);line-height:1.5}.resume-entry-text li:before{content:"·";position:absolute;left:0;color:var(--accent);font-weight:700}.resume-entry-text li:last-child{margin-bottom:0}.resume-entry-text strong{color:var(--text);font-weight:600;margin-right:.35rem}.publications-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp-sm) var(--sp-xl)}@media(max-width:48em){.name{font-size:var(--text-3xl)}.subtitle{font-size:var(--text-base)}.main{padding:var(--sp-md)}.content{gap:var(--sp-xl);padding-top:var(--sp-xl);padding-bottom:var(--sp-2xl)}.hero-section{gap:var(--sp-lg)}.projects-title{font-size:var(--text-xl)}.project-card{padding:var(--sp-md)}.resume-page,.resume-card{padding:var(--sp-lg) var(--sp-md)}.resume-header{flex-direction:column;align-items:flex-start;gap:var(--sp-lg)}.resume-name{font-size:var(--text-3xl)}.resume-header-contact{align-items:flex-start;text-align:left;width:100%}.resume-header-links{justify-content:flex-start}.resume-table,.resume-table tbody,.resume-table tr,.resume-table th,.resume-table td{display:block;width:100%}.resume-table tr{margin-bottom:var(--sp-xl);border-bottom:1px solid var(--border);padding-bottom:var(--sp-lg)}.resume-table tr:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.resume-table th{border-right:none;padding:0 0 var(--sp-sm) 0;text-align:center;font-size:var(--text-base);letter-spacing:.05em}.resume-table td{padding:0}.publications-grid{grid-template-columns:1fr}}@media(min-width:48em){.projects-grid{grid-template-columns:repeat(2,1fr)}}@media(min-width:64em){.name{font-size:var(--text-5xl)}.subtitle{font-size:var(--text-xl)}.content{gap:var(--sp-3xl)}.hero-section{align-items:flex-start;text-align:left}.nav{justify-content:flex-start}.projects-grid{grid-template-columns:repeat(5,1fr);gap:var(--sp-xl)}.project-card:nth-child(1){grid-column:span 3}.project-card:nth-child(2){grid-column:span 2}.project-card:nth-child(3){grid-column:span 2}.project-card:nth-child(4){grid-column:span 3}.project-card{padding:var(--sp-xl)}}
