:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f3f6f7;--surface:#fff;--surface-cool:#e9f5f2;--surface-warm:#fff3e7;--ink:#101723;--muted:#576579;--line:#d7e0e8;--accent:#0f766e;--accent-strong:#0b5f59;--blue:#1d4ed8;--rust:#c2410c;--gold:#b7791f;--danger:#b42318;--shadow:0 22px 60px #1017231f;color:var(--ink);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-weight:400;line-height:1.5}*{box-sizing:border-box}html,body,#root{min-width:320px;height:100%;min-height:100%}html{scroll-behavior:smooth}body{background:linear-gradient(135deg, #0f766e14, transparent 34%), linear-gradient(45deg, transparent 0 48%, #c2410c0f 49% 51%, transparent 52%), linear-gradient(#1017230a 1px, transparent 1px), linear-gradient(90deg, #1017230a 1px, transparent 1px), var(--bg);background-size:auto,160px 160px,42px 42px,42px 42px,auto;margin:0;overflow:hidden auto}body,button,input{letter-spacing:0}a{color:inherit;text-decoration:none}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}:focus-visible{outline-offset:3px;outline:3px solid #0f766e57}#root{position:relative}.site-header{z-index:60;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#f3f6f7e0;border-bottom:1px solid #d7e0e8db;position:fixed;inset:0 0 auto;box-shadow:0 12px 40px #10172314}.nav-shell{justify-content:space-between;align-items:center;gap:20px;min-height:72px;padding:0 clamp(18px,3vw,36px);display:flex}.brand-mark{min-width:0;min-height:48px;color:var(--ink);align-items:center;gap:10px;font-weight:900;display:inline-flex}.brand-mark img{aspect-ratio:1;object-fit:cover;object-position:center 46%;border:2px solid #fff;border-radius:8px;width:44px;box-shadow:0 10px 26px #1017232e}.brand-mark span{white-space:nowrap}.nav-links{color:var(--muted);align-items:center;gap:4px;font-size:.92rem;font-weight:800;display:flex}.nav-links a{white-space:nowrap;border-radius:8px;align-items:center;gap:6px;min-height:40px;padding:0 11px;display:inline-flex}.nav-links a:hover,.nav-links a.is-active{color:var(--ink);box-shadow:inset 0 0 0 1px var(--line);background:#fff}.icon-button{aspect-ratio:1;border:1px solid var(--line);background:var(--surface);width:40px;color:var(--ink);cursor:pointer;border-radius:8px;place-items:center;transition:transform .16s,border-color .16s,color .16s;display:inline-grid}.icon-button.nav-toggle{display:none}.icon-button:hover:not(:disabled){color:var(--accent);border-color:#0f766e8c;transform:translateY(-1px)}.icon-button:disabled{cursor:not-allowed;opacity:.42}.project-grid::-webkit-scrollbar{width:10px;height:10px}.page-section::-webkit-scrollbar{width:10px;height:10px}.hero-section::-webkit-scrollbar{width:10px;height:10px}.project-grid::-webkit-scrollbar-thumb{background:#0f766e5c padding-box content-box;border:2px solid #0000;border-radius:999px}.page-section::-webkit-scrollbar-thumb{background:#0f766e5c padding-box content-box;border:2px solid #0000;border-radius:999px}.hero-section::-webkit-scrollbar-thumb{background:#0f766e5c padding-box content-box;border:2px solid #0000;border-radius:999px}.hero-section,.page-section{scroll-snap-align:start;scroll-snap-stop:always;height:calc(100dvh - 180px);box-shadow:var(--shadow);background:#ffffffe0;border:1px solid #d7e0e8e6;border-radius:8px;flex:0 0 min(1120px,100vw - 72px);margin:0;overflow:hidden auto}.hero-section{background:linear-gradient(120deg, #fffffff0, #e9f5f2d1), var(--surface);flex-basis:min(1240px,100vw - 72px);position:relative}.hero-section:before,.page-section:before{content:"";pointer-events:none;background:linear-gradient(90deg,#0000 0 78%,#0f766e14 79% 80%,#0000 81%),linear-gradient(#ffffff6b,#0000 32%);position:absolute;inset:0}.hero-content{grid-template-columns:minmax(0,1.02fr) minmax(320px,.98fr);align-items:center;gap:clamp(28px,4vw,54px);min-height:100%;padding:clamp(28px,4vw,54px);display:grid;position:relative}.hero-copy{align-content:center;gap:18px;display:grid}.eyebrow{color:var(--accent);text-transform:uppercase;margin:0;font-size:.78rem;font-weight:900}h1,h2,h3,p{margin-top:0}h1{max-width:880px;margin-bottom:0;font-size:5.4rem;line-height:.98}.hero-role{color:var(--rust);margin:0;font-size:2rem;font-weight:900}.hero-intro,.section-lead{max-width:760px;color:var(--muted);font-size:1.08rem}.hero-meta{flex-wrap:wrap;gap:12px;display:flex}.hero-meta span,.source-note{border:1px solid var(--line);min-height:36px;color:var(--muted);background:#ffffffb8;border-radius:8px;align-items:center;gap:8px;padding:0 12px;font-weight:800;display:inline-flex}.hero-actions,.hero-socials,.contact-actions,.project-actions{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.button{cursor:pointer;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;gap:8px;min-height:46px;padding:0 18px;font-weight:900;transition:transform .16s,border-color .16s,background .16s;display:inline-flex}.button.primary{color:#fff;background:var(--ink)}.button.primary:hover{background:#1d2a3b;transform:translateY(-1px)}.button.secondary{color:var(--ink);border-color:var(--line);background:#fff}.button.secondary:hover{border-color:#0f766e8c;transform:translateY(-1px)}.hero-socials a,.text-link{min-height:36px;color:var(--accent-strong);align-items:center;gap:8px;font-weight:900;display:inline-flex}.hero-socials a:hover,.text-link:hover{color:var(--blue)}.details-toggle{border:1px solid var(--line);min-height:38px;color:var(--muted);cursor:pointer;background:#fff;border-radius:8px;padding:0 12px;font-weight:900}.hero-visual{align-content:center;gap:18px;min-height:100%;display:grid}.portrait-card{background:var(--ink);min-height:440px;box-shadow:var(--shadow);isolation:isolate;border:1px solid #10172324;border-radius:8px;margin:0;position:relative;overflow:hidden}.portrait-card img{object-fit:cover;object-position:center 43%;width:100%;height:100%;min-height:440px;display:block;transform:scale(1.01)}.portrait-card figcaption{z-index:1;color:#fff;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#101723ad;border:1px solid #ffffff38;border-radius:8px;align-items:center;gap:10px;min-height:48px;padding:12px 14px;font-weight:900;display:flex;position:absolute;bottom:18px;left:18px;right:18px}.page-section{padding:clamp(26px,4vw,48px);position:relative}.section-heading{max-width:880px;margin-bottom:28px;position:relative}.section-heading h2{margin:6px 0 0;font-size:3rem;line-height:1.08}.about-metrics{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:28px;display:grid}.about-metrics article{border:1px solid var(--line);background:#ffffffd1;border-radius:8px;align-content:space-between;min-height:150px;padding:18px;transition:transform .16s,border-color .16s;display:grid}.about-metrics article:hover{border-color:#0f766e5c;transform:translateY(-3px)}.about-metrics strong{color:var(--rust);font-size:3rem;line-height:1}.about-metrics span{color:var(--muted);font-weight:800}.timeline{grid-template-columns:repeat(2,minmax(320px,1fr));gap:18px;display:grid}.timeline-item{grid-template-columns:48px minmax(0,1fr);gap:16px;display:grid}.timeline-icon{aspect-ratio:1;border:1px solid var(--line);width:48px;color:var(--accent);background:#fff;border-radius:8px;place-items:center;display:grid}.timeline-body,.education-item,.skill-group,.resume-panel,.project-card,.contact-list{border:1px solid var(--line);background:#ffffffe6;border-radius:8px;box-shadow:0 12px 34px #1017230f}.timeline-body{padding:22px}.item-kicker{color:var(--accent-strong);flex-wrap:wrap;gap:10px;margin:0 0 8px;font-size:.86rem;font-weight:900;display:flex}.timeline-body h3,.project-card h3,.education-item h3,.skill-group h3{margin:0 0 6px;font-size:1.35rem}.item-company{margin:0;font-weight:900}.item-context,.role-line{color:var(--muted);font-weight:800}.check-list,.highlight-list{color:var(--muted);padding-left:20px}.check-list li,.highlight-list li{margin:8px 0}.tag-row{flex-wrap:wrap;gap:8px;display:flex}.tag{color:#174a45;background:#0f766e14;border:1px solid #0f766e38;border-radius:8px;align-items:center;min-height:30px;padding:0 10px;font-size:.84rem;font-weight:900;display:inline-flex}.project-grid{scroll-snap-type:x proximity;gap:18px;padding:4px 4px 18px;display:flex;overflow:auto hidden}.project-card{scroll-snap-align:start;flex:0 0 min(430px,100vw - 132px);grid-template-rows:auto 1fr auto;transition:transform .16s,box-shadow .16s,border-color .16s;display:grid;overflow:hidden}.project-card:hover{border-color:#0f766e57;transform:translateY(-3px);box-shadow:0 18px 42px #1017231c}.project-visual{background:linear-gradient(135deg, #e9f5f2fa, #fffffff5), var(--surface);border-bottom:1px solid var(--line);height:148px;position:relative;overflow:hidden}.project-visual:before{content:"";border:1px solid #10172314;border-radius:8px;position:absolute;inset:18px}.bid-line,.comment-bar{background:#c8d7e6;border-radius:999px;height:16px;position:absolute;left:28px}.bid-line{width:44%;top:42px}.bid-line.wide{background:#a8c6d8;width:64%;top:72px}.bid-pill{color:#fff;background:var(--accent);border-radius:8px;padding:10px 14px;font-weight:900;position:absolute;bottom:32px;right:32px}.card-shape{background:#fff;border:2px solid #10172329;border-radius:8px;place-items:center;width:76px;height:104px;font-weight:900;display:grid;position:absolute;box-shadow:0 18px 28px #1017231a}.card-shape.one{color:var(--accent);top:30px;left:34px;transform:rotate(-7deg)}.card-shape.two{color:var(--danger);top:24px;left:96px}.card-shape.three{color:var(--blue);top:36px;left:158px;transform:rotate(8deg)}.node{background:#fff;border:1px solid #1017231f;border-radius:8px;place-items:center;min-width:84px;min-height:42px;font-weight:900;display:grid;position:absolute}.node.input{top:56px;left:28px}.node.vector{color:var(--accent);top:56px;left:50%;transform:translate(-50%)}.node.output{top:56px;right:28px}.chart-line{border-bottom:2px solid #c8d7e6;border-left:2px solid #c8d7e6;position:absolute;inset:32px 28px}.chart-line:after{content:"";background:linear-gradient(135deg, transparent 0 44%, var(--accent) 45% 48%, transparent 49%), linear-gradient(30deg, transparent 0 56%, var(--blue) 57% 60%, transparent 61%);height:72px;position:absolute;bottom:22px;left:12px;right:10px}.comment-bar{width:66%;top:42px}.comment-bar.short{background:#a8c6d8;width:48%;top:74px}.label-stack{aspect-ratio:1;background:var(--ink);color:#fff;border-radius:8px;place-items:center;width:64px;font-weight:900;display:grid;position:absolute;bottom:34px;right:34px}.project-card-body{padding:20px}.project-title-row{justify-content:space-between;gap:16px;display:flex}.project-card p{color:var(--muted)}.details-toggle{justify-content:center;align-items:center;gap:8px;width:100%;margin-top:18px;display:flex}.details-toggle[aria-expanded=true] svg{transform:rotate(180deg)}.project-details{border-top:1px solid var(--line);background:#fbfdff;padding:20px}.architecture-diagram{grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px;margin-bottom:20px;display:grid}.diagram-step{border:1px solid var(--line);text-align:center;background:#fff;border-radius:8px;place-items:center;min-height:68px;padding:10px;font-weight:900;display:grid;position:relative}.diagram-step b{color:var(--accent);z-index:1;font-size:.72rem;position:absolute;right:-22px}.project-details dl{gap:14px;margin:0;display:grid}.project-details dt{color:var(--ink);font-weight:900}.project-details dd{color:var(--muted);margin:4px 0 0}.skills-grid,.education-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;display:grid}.skill-group,.education-item{padding:22px}.skill-group.is-emphasized{border-color:#0f766e5c;box-shadow:0 14px 36px #0f766e1a}.skill-group:hover,.education-item:hover{border-color:#c2410c47;transform:translateY(-2px)}.resume-panel{gap:16px;padding:22px;display:grid}.resume-actions{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.resume-viewer{border:1px solid var(--line);background:#fff;border-radius:8px;width:100%;height:80vh;min-height:620px}.resume-fallback{color:var(--muted);margin:0;font-size:.92rem}.resume-fallback a{color:var(--accent-strong);font-weight:900}.contact-layout{grid-template-columns:minmax(0,1fr) 340px;align-items:start;gap:24px;display:grid}.contact-list{gap:10px;padding:22px;font-style:normal;display:grid}.contact-list a,.contact-list span{min-height:40px;color:var(--muted);align-items:center;gap:10px;font-weight:900;display:flex}.contact-list a:hover{color:var(--accent-strong)}.site-footer{z-index:65;max-width:min(520px,45vw);color:var(--muted);flex-wrap:wrap;gap:8px 14px;font-size:.88rem;display:flex;position:fixed;bottom:20px;left:clamp(18px,3vw,36px)}.site-footer p{margin:0}.site-footer a{color:var(--accent-strong);font-weight:900}.reveal{opacity:0;transition:opacity .52s,transform .52s;transform:translate(24px)}.reveal.is-visible{opacity:1;transform:translate(0)}@media (width<=1120px){.icon-button.nav-toggle{display:inline-grid}.nav-links{border:1px solid var(--line);box-shadow:var(--shadow);background:#fff;border-radius:8px;flex-direction:column;align-items:stretch;padding:12px;display:none;position:absolute;top:72px;left:16px;right:16px}.nav-links.is-open{display:flex}.nav-links a{justify-content:flex-start}.hero-content{grid-template-columns:1fr;align-items:start}.portrait-card,.portrait-card img{min-height:360px}.contact-layout{grid-template-columns:1fr;align-items:start}.timeline,.skills-grid,.education-grid{grid-template-columns:1fr}h1{font-size:4.1rem}.section-heading h2{font-size:2.45rem}}@media (width<=760px){.hero-section,.page-section{flex-basis:calc(100vw - 28px);height:calc(100dvh - 172px)}.hero-content,.page-section{padding:22px}h1{font-size:3.05rem}.hero-role{font-size:1.45rem}.section-heading h2{font-size:2rem}.about-metrics{grid-template-columns:1fr}.hero-meta span,.button,.hero-socials a{width:100%}.hero-actions,.hero-socials,.contact-actions{align-items:stretch}.timeline-item{grid-template-columns:1fr}.timeline-icon{display:none}.project-card{flex-basis:calc(100vw - 76px)}.card-shape{width:62px;height:88px}.card-shape.two{left:82px}.card-shape.three{left:130px}.diagram-step b,.site-footer{display:none}}@media (width<=430px){.brand-mark span{display:none}.portrait-card,.portrait-card img{min-height:320px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}.reveal{opacity:1;transform:none}}#projects{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#0f766e7a transparent;align-items:start;overflow:hidden auto}#projects::-webkit-scrollbar{width:10px;display:block}#projects::-webkit-scrollbar-thumb{background:#0f766e7a padding-box content-box;border:2px solid #0000;border-radius:999px}#projects #projects .project-grid{grid-template-columns:repeat(3,minmax(0,1fr));max-height:none;padding-bottom:128px;overflow:visible}#projects .project-card{min-height:0}#projects .highlight-list{display:block}#projects .project-card:nth-child(n),#projects .skill-group:nth-child(n){display:grid}.education-heading{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:16px;margin-bottom:18px;display:grid}.school-badge{aspect-ratio:1;color:#fff;border-radius:8px;place-items:center;width:78px;font-size:1.32rem;font-weight:950;line-height:1;transition:transform .22s,box-shadow .22s,filter .22s;display:grid;transform:translateZ(0);box-shadow:0 16px 34px #10172324}.school-badge span{transform:translateY(-1px)}.school-badge:before{content:"";pointer-events:none;border:1px solid #ffffff6b;border-radius:6px;position:absolute;inset:9px}.education-item:hover .school-badge{filter:saturate(1.08);transform:translateY(-3px)translateZ(0);box-shadow:0 22px 44px #1017232e}.waterloo-badge{background:linear-gradient(135deg,#050505 0 24%,#f2c300 25% 52%,#d8a300 53% 70%,#050505 71% 100%);position:relative}.mcmaster-badge{background:linear-gradient(145deg,#7a003c 0 68%,#fdbf57 69% 100%);position:relative}@media (width<=1120px){#projects .project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=760px){#projects .project-grid{grid-template-columns:1fr;max-height:none}#projects .project-card:nth-child(n){display:grid}#projects .project-visual{display:block}.education-heading{grid-template-columns:58px minmax(0,1fr);gap:12px}.school-badge{width:58px;font-size:1rem}}.optimizer-track{background:linear-gradient(90deg, #c8d7e6, var(--accent), var(--blue));border-radius:999px;height:8px;position:absolute;top:70px;left:30px;right:30px}.optimizer-dot{aspect-ratio:1;background:var(--accent);border:4px solid #fff;border-radius:8px;width:28px;position:absolute;top:60px;box-shadow:0 14px 24px #10172329}.optimizer-dot.one{left:34px}.optimizer-dot.two{background:var(--gold);left:48%}.optimizer-dot.three{background:var(--blue);right:34px}.optimizer-gain{color:#fff;background:var(--ink);border-radius:8px;align-items:center;min-height:38px;padding:0 12px;font-weight:900;display:inline-flex;position:absolute;bottom:30px;right:32px}.school-logo{object-fit:contain;object-position:center;max-width:100%;display:block}.waterloo-logo{aspect-ratio:1;width:96px;height:96px}.mcmaster-logo{width:156px;height:auto;max-height:96px}@media (width<=760px){.education-heading{grid-template-columns:1fr;justify-items:start;gap:14px}.waterloo-logo{width:72px;height:72px}.mcmaster-logo{width:min(148px,78vw);max-height:78px}}html,body,#root{height:auto;min-height:100%;overflow:hidden auto}body{overflow:hidden auto}#root{min-height:100dvh}.site-main{width:100%;padding-top:72px}.site-main>.hero-section,.site-main>.page-section{scroll-snap-align:unset;scroll-snap-stop:unset;width:100%;height:auto;min-height:auto;box-shadow:none;background:#ffffffb8;border:0;border-radius:0;flex:none;margin:0;padding:clamp(38px,5vw,68px) clamp(18px,4vw,58px);scroll-margin-top:82px;overflow:visible}.site-main>.hero-section{background:linear-gradient(120deg, #fffffff5, #e9f5f2db), var(--surface);align-items:start;min-height:auto;padding-top:clamp(22px,3vw,40px);padding-bottom:clamp(34px,4vw,58px);display:grid}.site-main>.page-section:nth-of-type(odd){background:#e9f5f2b8}.site-main>.page-section:nth-of-type(2n){background:#fff3e7b3}.site-main>.page-section>*{z-index:1;width:min(1220px,100%);margin-left:auto;margin-right:auto;position:relative}.site-main>.hero-section:before,.site-main>.page-section:before{z-index:0}.hero-content{align-items:start;width:min(1220px,100%);min-height:0;margin:0 auto;padding:0}.hero-copy{align-content:start;gap:clamp(14px,2vw,18px);padding-top:clamp(4px,1vw,12px)}.hero-intro{max-width:780px}.hero-visual{align-content:start;min-height:0}.portrait-card,.portrait-card img{min-height:clamp(440px,60vh,660px)}.about-copy{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(20px,3vw,34px);display:grid}.about-copy .section-lead{max-width:none;margin-bottom:0}.timeline,.project-grid,.skills-grid{max-height:none;overflow:visible}.project-grid{scroll-snap-type:none;grid-template-columns:repeat(auto-fit,minmax(min(100%,330px),1fr));gap:18px;padding:0;display:grid}.project-card{scroll-snap-align:unset;flex:none;min-width:0}.highlight-list{display:block}.project-details{max-height:none;overflow:visible}.architecture-diagram{display:grid}.skills-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr))}#projects{overscroll-behavior:auto;scrollbar-width:auto;overflow:visible}#projects .project-grid{max-height:none;padding-bottom:0}.site-footer{z-index:auto;pointer-events:auto;max-width:min(1220px,100% - clamp(36px,8vw,116px));margin:0 auto;padding:20px 0 36px;position:static}@media (width<=1120px){.hero-content{grid-template-columns:minmax(0,1fr) minmax(260px,.78fr)}}@media (width<=760px){.site-main{padding-top:72px}.site-main>.hero-section,.site-main>.page-section{padding:34px 16px}.site-main>.hero-section{min-height:auto;padding-top:22px;padding-bottom:30px}.hero-content,.about-copy,.about-metrics,.timeline,.project-grid,.skills-grid,.education-grid,.contact-layout{grid-template-columns:1fr}.hero-copy{order:0}.hero-visual{order:1}.portrait-card,.portrait-card img{min-height:360px}.hero-meta span,.button,.hero-socials a{width:100%}.hero-actions,.hero-socials,.contact-actions{align-items:stretch}.project-card:nth-child(n),.skill-group:nth-child(n),.about-metrics article:nth-child(n){display:grid}}.skills-heading{margin-bottom:18px}.section-heading h2.eyebrow{margin:0;font-size:.78rem;line-height:1.2}.skill-tag{gap:7px;padding:0 9px}.skill-icon{color:currentColor;flex:none;width:17px;height:17px}@media (width<=760px){.resume-viewer{height:78vh;min-height:520px}.resume-actions .button,.resume-actions .text-link{justify-content:center;width:100%}}
