:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--background:#f4f0e8;--background-accent:#ec0f3329;--surface:#fffc;--surface-strong:#fffdf8;--text:#181614;--muted:#655d56;--line:#1816141a;--accent:#ec0f33;--accent-strong:#c8102e;--button-text:#fff;--shell-width-px:1300px;--shell-width:min(var(--shell-width-px), calc(100% - 2rem));--announcement-bar-height:0px;--theme-transition-duration:.18s;--theme-transition-easing:ease;--hero-wash:#ffffffad;--hero-grid-line:#ec0f331a;--hero-grid-opacity:.34;--hero-node-line:#4f443e;--hero-node-line-opacity:.3;--hero-node-line-width:1.15;--hero-node-line-highlight-opacity:.28;--hero-node-line-highlight-radius:280;--hero-node-line-highlight-width:.65;--hero-side-fade:#f4f0e8f5;--hero-title-shadow:#4e1c181f;font-family:Segoe UI,sans-serif}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--background:#121315;--background-accent:#ec0f3333;--surface:#181b1fd1;--surface-strong:#181b1f;--text:#f4efe8;--muted:#b4aca3;--line:#ffffff1a;--accent:#ff2242;--accent-strong:#ff4f6d;--button-text:#160b0d;--hero-wash:#ffffff0a;--hero-grid-line:#ff22421f;--hero-grid-opacity:.22;--hero-node-line:#f4efe8;--hero-node-line-opacity:.26;--hero-node-line-width:1.1;--hero-node-line-highlight-opacity:.34;--hero-node-line-highlight-radius:300;--hero-node-line-highlight-width:.75;--hero-side-fade:#121315fa;--hero-title-shadow:#0000006b}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:radial-gradient(circle at top left, var(--background-accent), transparent 30%), var(--background);min-width:320px;min-height:100vh;color:var(--text);transition:background-color var(--theme-transition-duration) var(--theme-transition-easing), color var(--theme-transition-duration) var(--theme-transition-easing);margin:0}a{color:inherit;text-decoration:none}button{font:inherit}#root{min-height:100vh}.root{background:var(--background);min-height:100vh;transition:background-color var(--theme-transition-duration) var(--theme-transition-easing)}.site-shell{width:var(--shell-width);padding:calc(5rem + var(--announcement-bar-height)) 0 4rem;background:var(--background);transition:background-color var(--theme-transition-duration) var(--theme-transition-easing);margin:0 auto}.page-content{gap:1.25rem;display:grid}.site-navbar{top:calc(1rem + var(--announcement-bar-height));z-index:1000;width:var(--shell-width);border:1px solid var(--line);background:color-mix(in srgb, var(--surface) 88%, var(--background));-webkit-backdrop-filter:blur(20px)saturate(145%);min-height:62px;transition:top .28s cubic-bezier(.4, 0, .2, 1), background-color var(--theme-transition-duration) var(--theme-transition-easing), border-color var(--theme-transition-duration) var(--theme-transition-easing), color var(--theme-transition-duration) var(--theme-transition-easing), box-shadow var(--theme-transition-duration) var(--theme-transition-easing);border-radius:31px;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:.75rem;padding:.45rem .55rem .45rem 1.25rem;display:grid;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 16px 42px #0000001a}.brand{letter-spacing:.08em;text-transform:uppercase;min-height:2.75rem;color:var(--accent);transition:color var(--theme-transition-duration) var(--theme-transition-easing);align-items:center;font-size:1.1rem;font-weight:700;line-height:1;display:inline-flex}.nav{color:var(--muted);transition:color var(--theme-transition-duration) var(--theme-transition-easing);display:contents}.nav-links{grid-column:2;justify-self:center;align-items:center;gap:.25rem;display:flex}.nav-link{min-height:2.55rem;color:inherit;cursor:pointer;transition:background-color var(--theme-transition-duration) var(--theme-transition-easing), color var(--theme-transition-duration) var(--theme-transition-easing);background:0 0;border:0;border-radius:999px;justify-content:center;align-items:center;padding:.65rem .9rem;font-size:.95rem;font-weight:650;line-height:1;display:inline-flex}.nav-link:hover,.nav-link:focus-visible{background:var(--background-accent);color:var(--accent);outline:none}.nav-theme{grid-column:3;justify-self:end}.hero{width:100%;min-height:100vh;box-shadow:none;background:linear-gradient(120deg, var(--hero-wash), transparent 42%), linear-gradient(180deg, transparent 0%, var(--background) 100%);-webkit-backdrop-filter:none;backdrop-filter:none;isolation:isolate;transition:background var(--theme-transition-duration) var(--theme-transition-easing);border:none;border-radius:0;align-items:center;margin-bottom:-1px;display:flex;position:relative;overflow:hidden}.hero-background,.hero-background-canvas,.hero-background-grid,.hero-background-vignette{position:absolute;inset:0}.hero-background{z-index:0;pointer-events:none;overflow:hidden}.hero-background-canvas{width:100%;height:100%;display:block}.hero-background-grid{opacity:var(--hero-grid-opacity);background-image:linear-gradient(var(--hero-grid-line) 1px, transparent 1px), linear-gradient(90deg, var(--hero-grid-line) 1px, transparent 1px);transition:opacity var(--theme-transition-duration) var(--theme-transition-easing);background-size:72px 72px;-webkit-mask-image:linear-gradient(#0000,#000 18% 70%,#0000);mask-image:linear-gradient(#0000,#000 18% 70%,#0000)}.hero-background-vignette{background:linear-gradient(90deg, var(--hero-side-fade) 0%, transparent 18%, transparent 82%, var(--hero-side-fade) 100%), linear-gradient(180deg, transparent 0%, transparent 52%, var(--background) 94%);transition:background var(--theme-transition-duration) var(--theme-transition-easing)}.hero-inner{z-index:2;width:min(var(--shell-width-px), calc(100% - 3rem));padding:calc(5rem + var(--announcement-bar-height)) 0 6rem;justify-content:center;align-items:center;margin:0 auto;display:flex;position:relative}.hero-copy{text-align:center;border-radius:28px;flex-direction:column;align-items:center;gap:1.25rem;max-width:48rem;padding:1.25rem;display:flex}.hero h1{letter-spacing:-.025em;font-kerning:normal;text-shadow:0 18px 60px var(--hero-title-shadow);margin:0;font-size:clamp(4rem,10vw,8rem);line-height:.92}.hero-subtitle{max-width:38rem;color:var(--muted);letter-spacing:-.01em;transition:color var(--theme-transition-duration) var(--theme-transition-easing);margin:15px;font-size:clamp(1rem,2vw,1.3rem);font-weight:500;line-height:1.5}.lede{max-width:42rem;color:var(--muted);transition:color var(--theme-transition-duration) var(--theme-transition-easing);margin:0;font-size:1.05rem;line-height:1.7}.hero-actions{flex-wrap:wrap;justify-content:center;gap:.9rem;margin-top:30px;padding-top:.5rem;display:flex}.hero-card{border:1px solid var(--line);background:var(--surface);-webkit-backdrop-filter:blur(12px);transition:background-color var(--theme-transition-duration) var(--theme-transition-easing), border-color var(--theme-transition-duration) var(--theme-transition-easing), box-shadow var(--theme-transition-duration) var(--theme-transition-easing);border-radius:24px;flex-direction:column;gap:1.5rem;padding:2rem;display:flex}.hero-divider{border:none;border-top:1px solid var(--line);transition:border-color var(--theme-transition-duration) var(--theme-transition-easing);margin:0}.open-badge{background:var(--background-accent);color:var(--accent);width:fit-content;transition:background-color var(--theme-transition-duration) var(--theme-transition-easing), color var(--theme-transition-duration) var(--theme-transition-easing);border-radius:999px;align-items:center;gap:.4rem;padding:.35rem .85rem;font-size:.8rem;font-weight:600;display:inline-flex}.pulse-dot{background:var(--accent);border-radius:50%;flex-shrink:0;width:7px;height:7px;animation:2s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}.open-tag{color:var(--muted);transition:color var(--theme-transition-duration) var(--theme-transition-easing);margin:.75rem 0 0;font-size:.82rem;line-height:1.6}.scroll-hint{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);z-index:3;cursor:pointer;transition:color var(--theme-transition-duration) var(--theme-transition-easing);background:0 0;border:none;flex-direction:column;align-items:center;gap:.5rem;padding:0;font-size:.72rem;font-weight:500;display:flex;position:absolute;bottom:2rem;left:50%;transform:translate(-50%)}.scroll-arrow{background-color:var(--line);background-image:linear-gradient(var(--accent), var(--accent));contain:paint;width:3px;height:32px;transition:background-color var(--theme-transition-duration) var(--theme-transition-easing), background-image var(--theme-transition-duration) var(--theme-transition-easing);will-change:background-position;background-position:0 -32px;background-repeat:no-repeat;background-size:100% 100%;border-radius:2px;flex:none;animation:1.8s ease-in-out infinite drop;display:block;position:relative}@keyframes drop{0%{background-position:0 -32px}60%,to{background-position:0 64px}}.panel{border:1px solid var(--line);background:var(--surface);-webkit-backdrop-filter:blur(16px);transition:background-color var(--theme-transition-duration) var(--theme-transition-easing), border-color var(--theme-transition-duration) var(--theme-transition-easing), box-shadow var(--theme-transition-duration) var(--theme-transition-easing);border-radius:28px;padding:1.5rem;box-shadow:0 20px 40px #00000014}.section-grid,.cta-panel{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:1.5rem;display:grid}.section-heading{margin-bottom:1rem}.section-grid h2,.section-heading h2,.cta-panel h2{margin:0}.section-body{color:var(--muted);transition:color var(--theme-transition-duration) var(--theme-transition-easing);line-height:1.7}.contact-panel{grid-template-columns:minmax(0,.95fr) minmax(22rem,1.05fr);align-items:stretch;gap:1.5rem;display:grid}.contact-intro{flex-direction:column;justify-content:center;min-width:0;display:flex}.contact-intro h2{max-width:36rem;margin:0}.contact-intro p:not(.section-label){max-width:34rem;color:var(--muted);transition:color var(--theme-transition-duration) var(--theme-transition-easing);margin:1rem 0 0;line-height:1.7}.contact-links{grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem;display:grid}.contact-link{border:1px solid var(--line);background:var(--surface-strong);min-height:5.25rem;transition:transform .18s ease, background-color var(--theme-transition-duration) var(--theme-transition-easing), border-color var(--theme-transition-duration) var(--theme-transition-easing), color var(--theme-transition-duration) var(--theme-transition-easing), box-shadow var(--theme-transition-duration) var(--theme-transition-easing);border-radius:18px;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.85rem;padding:1rem;display:grid}.contact-link:hover,.contact-link:focus-visible{border-color:var(--accent);color:var(--accent);outline:none;transform:translateY(-2px);box-shadow:0 10px 28px #0000001a}.contact-link-icon{background:var(--background-accent);width:2.65rem;height:2.65rem;color:var(--accent);transition:background-color var(--theme-transition-duration) var(--theme-transition-easing), color var(--theme-transition-duration) var(--theme-transition-easing);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:1.35rem;display:inline-flex}.contact-link-copy{gap:.18rem;min-width:0;display:grid}.contact-link-copy span{color:var(--muted);letter-spacing:.1em;text-transform:uppercase;transition:color var(--theme-transition-duration) var(--theme-transition-easing);font-size:.78rem;font-weight:700}.contact-link:hover .contact-link-copy span,.contact-link:focus-visible .contact-link-copy span{color:var(--accent-strong)}.contact-link-copy strong{overflow-wrap:anywhere;color:var(--text);transition:color var(--theme-transition-duration) var(--theme-transition-easing);font-size:.98rem;line-height:1.35}.contact-link:hover .contact-link-copy strong,.contact-link:focus-visible .contact-link-copy strong{color:var(--accent)}.eyebrow,.section-label{color:var(--accent-strong);letter-spacing:.14em;text-transform:uppercase;transition:color var(--theme-transition-duration) var(--theme-transition-easing);margin:0 0 1rem;font-size:.85rem;font-weight:700}.eyebrow{margin-bottom:.25rem}.button{cursor:pointer;min-height:3rem;transition:transform .18s ease, background-color var(--theme-transition-duration) var(--theme-transition-easing), border-color var(--theme-transition-duration) var(--theme-transition-easing), color var(--theme-transition-duration) var(--theme-transition-easing), box-shadow var(--theme-transition-duration) var(--theme-transition-easing);border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;padding:.8rem 1.2rem;font-weight:600;display:inline-flex}.button:hover{transform:translateY(-1px)}.button-primary{background:var(--accent);color:var(--button-text)}.button-secondary{border-color:var(--line);color:var(--text);background:0 0}.button-ghost{border-color:var(--line);background:var(--surface-strong);color:var(--text)}.theme-toggle{min-width:3rem;padding:.7rem}.theme-toggle-icon{transition:color var(--theme-transition-duration) var(--theme-transition-easing);font-size:1rem;line-height:1}.feature-grid{gap:1rem;display:grid}.feature-card{border:1px solid var(--line);background:var(--surface-strong);transition:background-color var(--theme-transition-duration) var(--theme-transition-easing), border-color var(--theme-transition-duration) var(--theme-transition-easing), box-shadow var(--theme-transition-duration) var(--theme-transition-easing);border-radius:20px;padding:1.25rem;position:relative}.feature-card h3{letter-spacing:-.03em;margin:0 0 .75rem;font-size:1.2rem}.feature-card p{color:var(--muted);transition:color var(--theme-transition-duration) var(--theme-transition-easing);line-height:1.7}.github-icon{color:inherit;opacity:.7;transition:opacity .2s ease, color var(--theme-transition-duration) var(--theme-transition-easing);font-size:1.25rem;position:absolute;top:12px;right:12px}.github-icon:hover{opacity:1}.hamburger{border:1px solid var(--line);background:var(--surface-strong);width:2.75rem;height:2.75rem;color:var(--text);cursor:pointer;z-index:1001;transition:background-color var(--theme-transition-duration) var(--theme-transition-easing), border-color var(--theme-transition-duration) var(--theme-transition-easing), color var(--theme-transition-duration) var(--theme-transition-easing);border-radius:50%;justify-content:center;justify-self:end;align-items:center;padding:0;display:none}.hamburger:hover,.hamburger:focus-visible{border-color:var(--accent);color:var(--accent);outline:none}.hamburger-icon,.hamburger-icon:before,.hamburger-icon:after{background:currentColor;border-radius:2px;width:22px;height:2px;transition:transform .22s,opacity .22s;display:block}.hamburger-icon{position:relative}.hamburger-icon:before,.hamburger-icon:after{content:"";position:absolute;left:0}.hamburger-icon:before{top:-6px}.hamburger-icon:after{top:6px}.hamburger-icon.open{background:0 0}.hamburger-icon.open:before{transform:translateY(6px)rotate(45deg)}.hamburger-icon.open:after{transform:translateY(-6px)rotate(-45deg)}@media (width<=860px){.section-grid,.cta-panel,.contact-panel,.feature-grid,.coursework-header,.coursework-grid{grid-template-columns:1fr}}@media (width<=800px){.hero-card{display:none}}@media (width<=720px){.site-navbar{width:min(calc(100% - 1rem), var(--shell-width-px));border-radius:29px;grid-template-columns:minmax(0,1fr) auto;gap:.45rem .75rem;min-height:58px;padding:.42rem .45rem .42rem 1rem}.site-navbar.nav-expanded{border-radius:24px;box-shadow:0 18px 48px #00000029}.brand{letter-spacing:.075em;min-width:0;font-size:clamp(.98rem,4.2vw,1.1rem)}.hamburger{display:flex}.nav{opacity:0;pointer-events:none;visibility:hidden;width:100%;max-height:0;transition:max-height .26s ease, margin-top .22s ease, padding .22s ease, border-color var(--theme-transition-duration) var(--theme-transition-easing), opacity .18s ease;border-top:1px solid #0000;flex-direction:column;grid-column:1/-1;justify-self:stretch;align-items:stretch;gap:.35rem;margin-top:0;padding:0;display:flex;overflow:hidden}.nav.nav-open{border-top-color:var(--line);opacity:1;pointer-events:auto;visibility:visible;max-height:21rem;margin-top:.45rem;padding:.75rem 0 .25rem}.nav-links{flex-direction:column;grid-column:auto;align-items:stretch;gap:.35rem;width:100%;display:flex}.nav-link,.nav-links>a{text-align:left;width:100%;min-height:2.8rem;color:var(--text);border-radius:14px;justify-content:flex-start;padding:.8rem .85rem;font-size:1rem}.nav-theme{grid-column:auto;justify-self:stretch;margin-left:0;padding-top:.35rem}.nav-theme .button{border-radius:14px;justify-content:center;width:100%}.hero h1{font-size:clamp(3rem,13vw,4.5rem)}.contact-links{grid-template-columns:1fr}}.announcement-bar{z-index:1100;background:var(--accent);height:2.5rem;color:var(--button-text);letter-spacing:.06em;opacity:1;justify-content:center;align-items:center;gap:.6rem;font-size:.82rem;font-weight:600;transition:height .28s cubic-bezier(.4,0,.2,1),opacity .2s;display:flex;position:fixed;top:0;left:0;right:0;overflow:hidden}.announcement-bar.hidden{opacity:0;height:0}.announcement-bar-icon{font-size:.9rem;line-height:1}.announcement-bar-close{width:1.5rem;height:1.5rem;color:var(--button-text);cursor:pointer;opacity:.7;transition:opacity .15s ease, background-color .15s ease, color var(--theme-transition-duration) var(--theme-transition-easing);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:.7rem;display:flex;position:absolute;top:50%;right:1rem;transform:translateY(-50%)}.announcement-bar-close:hover{opacity:1;background:#fff3}.coursework-panel{gap:1.5rem;display:grid}.coursework-header{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);align-items:end;gap:1.5rem;display:grid}.coursework-summary{max-width:34rem}.coursework-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.coursework-card{border:1px solid var(--line);background:var(--surface-strong);transition:background-color var(--theme-transition-duration) var(--theme-transition-easing), border-color var(--theme-transition-duration) var(--theme-transition-easing), box-shadow var(--theme-transition-duration) var(--theme-transition-easing);border-radius:18px;padding:1.1rem 1.15rem}.coursework-card-top{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.9rem;display:flex}.coursework-code{letter-spacing:.08em;text-transform:uppercase;color:var(--accent-strong);transition:color var(--theme-transition-duration) var(--theme-transition-easing);font-size:.8rem;font-weight:700}.coursework-area{background:var(--background-accent);color:var(--accent);letter-spacing:.04em;transition:background-color var(--theme-transition-duration) var(--theme-transition-easing), color var(--theme-transition-duration) var(--theme-transition-easing);border-radius:999px;padding:.28rem .65rem;font-size:.75rem;font-weight:700}.coursework-card h3{margin:0;font-size:1rem;line-height:1.45}.coursework-link{transition:color var(--theme-transition-duration) var(--theme-transition-easing)}.coursework-link:hover{color:var(--accent)}.skills-list li{margin:0 5px 5px}.skills-filter-bar{flex-wrap:wrap;gap:.6rem;margin-bottom:2rem;display:flex}.skills-filter-pill{border:1px solid var(--line);color:var(--text);cursor:pointer;transition:background-color var(--theme-transition-duration) var(--theme-transition-easing), border-color var(--theme-transition-duration) var(--theme-transition-easing), color var(--theme-transition-duration) var(--theme-transition-easing);background:0 0;border-radius:999px;padding:.4rem 1.1rem;font-size:.85rem;font-weight:600}.skills-filter-pill:hover:not(.active){border-color:var(--accent);color:var(--accent)}.skills-filter-pill.active{background:var(--accent);color:var(--button-text);border-color:#0000}.skills-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:1rem;display:grid}.skills-card{border:1px solid var(--line);background:var(--surface-strong);transition:transform .18s ease, background-color var(--theme-transition-duration) var(--theme-transition-easing), border-color var(--theme-transition-duration) var(--theme-transition-easing), box-shadow var(--theme-transition-duration) var(--theme-transition-easing);cursor:default;transform-origin:50%;will-change:transform, opacity;border-radius:16px;flex-direction:column;justify-content:center;align-items:center;gap:.75rem;padding:1.5rem 1rem;display:flex}.skills-card:hover{border-color:var(--accent);transform:translateY(-3px);box-shadow:0 8px 24px #0000001f}.skills-card i{font-size:2.8rem;line-height:1}.skills-card span{color:var(--muted);text-align:center;transition:color var(--theme-transition-duration) var(--theme-transition-easing);font-size:.82rem;font-weight:600;line-height:1.3}
