:root{--gutter:max(40px, calc((100vw - 1200px) / 2));--frame-gap:24px;--grid-line:color-mix(in srgb, var(--text) 24%, transparent);--grid-mark:color-mix(in srgb, var(--text) 85%, transparent);--text:#5a5034;--text-h:#231d0f;--bg:#f6ecc9;--surface:#ece0b8;--bg-alt:var(--surface);--border:#dacd9f;--code-bg:var(--surface);--accent:#2d4bd8;--accent-text:#2d4bd8;--accent-strong:#2340b8;--accent-soft:#6f86e8;--accent-bg:#2d4bd814;--accent-border:#2d4bd859;--sector-bg:var(--accent-bg);--sector-text:var(--accent-strong);--social-bg:var(--surface);--shadow:#231d0f0f 0 1px 2px, #231d0f17 0 8px 24px;--sans:"Inter", system-ui, "Segoe UI", Roboto, sans-serif;--heading:"Inter", system-ui, "Segoe UI", Roboto, sans-serif;--mono:"JetBrains Mono", ui-monospace, Consolas, monospace;font:16px/1.6 var(--sans);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html{scroll-behavior:smooth}@media (width<=720px){:root{--gutter:28px;--frame-gap:14px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}:root[data-theme=dark]{--text:#9a9aa2;--text-h:#ededef;--bg:#0b0b0d;--surface:#151517;--border:#26262a;--accent:#4a66e6;--accent-text:#8da2f7;--accent-strong:#a9b8fa;--accent-soft:#6f86e8;--accent-bg:#8da2f71f;--accent-border:#8da2f766;--shadow:#0006 0 1px 2px, #00000059 0 8px 24px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.theme-transition,.theme-transition *{transition:background-color .2s,color .2s,border-color .2s!important}#root{text-align:left;flex-direction:column;min-height:100svh;display:flex}body{margin:0}h1,h2{font-family:var(--heading);color:var(--text-h);font-weight:500}h1{letter-spacing:-.03em;margin:0 0 24px;font-size:clamp(44px,7vw,88px);font-weight:600;line-height:1.02}h2{letter-spacing:-.02em;margin:0 0 48px;font-size:clamp(31px,4vw,49px);font-weight:600;line-height:1.1}p{margin:0}code,.counter{font-family:var(--mono);color:var(--text-h);border-radius:4px;display:inline-flex}code{background:var(--code-bg);padding:4px 8px;font-size:15px;line-height:135%}html.lenis,html.lenis body{height:auto}.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}.lenis [data-lenis-prevent],.lenis [data-lenis-prevent-wheel],.lenis [data-lenis-prevent-touch],.lenis [data-lenis-prevent-vertical],.lenis [data-lenis-prevent-horizontal]{overscroll-behavior:contain}.lenis.lenis-smooth iframe{pointer-events:none}.lenis.lenis-autoToggle{transition-behavior:allow-discrete;transition-property:overflow;transition-duration:1ms}#root>nav{z-index:10;height:64px;padding-inline:var(--gutter);box-sizing:border-box;background:color-mix(in srgb, var(--bg) 82%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);align-items:center;gap:24px;display:flex;position:sticky;top:0}.nav-brand{color:var(--text-h);letter-spacing:-.01em;flex-shrink:0;font-weight:600;text-decoration:none}.nav-list{scrollbar-width:none;gap:4px;margin:0 0 0 auto;padding:0;list-style:none;display:flex;overflow-x:auto}.nav-list a{color:var(--text);white-space:nowrap;border-radius:8px;padding:8px 12px;font-size:14px;text-decoration:none;transition:background .2s,color .2s;display:inline-block}.nav-list a:hover,.nav-list a:focus-visible{background:var(--surface);color:var(--text-h)}.theme-toggle{border:1px solid var(--border);width:44px;height:44px;color:var(--text);cursor:pointer;background:0 0;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;transition:background .2s,color .2s;display:inline-flex}.theme-toggle:hover{background:var(--surface);color:var(--text-h)}.theme-toggle:focus-visible,a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (width<=720px){.nav-brand{display:none}#root>nav{gap:8px}.nav-list{margin-left:0}}:root{--x1:6px;--x2:calc(6px + (100% - 12px) / 3);--x3:calc(6px + (100% - 12px) * 2 / 3);--x4:calc(100% - 6px)}@media (width<=720px){:root{--x2:var(--x1);--x3:var(--x1)}}body:before{content:"";top:0;bottom:0;left:calc(var(--gutter) - var(--frame-gap) - 6px);right:calc(var(--gutter) - var(--frame-gap) - 6px);z-index:-1;pointer-events:none;--grid-c:var(--grid-line);background:linear-gradient(to right, transparent 0px var(--x1), var(--grid-c) var(--x1) calc(var(--x1) + 1px), transparent calc(var(--x1) + 1px) var(--x2), var(--grid-c) var(--x2) calc(var(--x2) + 1px), transparent calc(var(--x2) + 1px) var(--x3), var(--grid-c) var(--x3) calc(var(--x3) + 1px), transparent calc(var(--x3) + 1px) var(--x4), var(--grid-c) var(--x4) calc(var(--x4) + 1px), transparent calc(var(--x4) + 1px));position:fixed}section{padding:clamp(64px, 9vw, 128px) var(--gutter);border-top:1px solid var(--grid-line);position:relative}section:not(#intro):before{content:"";top:-7px;left:calc(var(--gutter) - var(--frame-gap) - 6px);right:calc(var(--gutter) - var(--frame-gap) - 6px);pointer-events:none;--grid-c:var(--grid-mark);background:linear-gradient(to right, transparent 0px var(--x1), var(--grid-c) var(--x1) calc(var(--x1) + 1px), transparent calc(var(--x1) + 1px) var(--x2), var(--grid-c) var(--x2) calc(var(--x2) + 1px), transparent calc(var(--x2) + 1px) var(--x3), var(--grid-c) var(--x3) calc(var(--x3) + 1px), transparent calc(var(--x3) + 1px) var(--x4), var(--grid-c) var(--x4) calc(var(--x4) + 1px), transparent calc(var(--x4) + 1px)) 0 0 / 100% 13px no-repeat, linear-gradient(to right, transparent 0px calc(var(--x1) - 6px), var(--grid-c) calc(var(--x1) - 6px) calc(var(--x1) + 7px), transparent calc(var(--x1) + 7px) calc(var(--x2) - 6px), var(--grid-c) calc(var(--x2) - 6px) calc(var(--x2) + 7px), transparent calc(var(--x2) + 7px) calc(var(--x3) - 6px), var(--grid-c) calc(var(--x3) - 6px) calc(var(--x3) + 7px), transparent calc(var(--x3) + 7px) calc(var(--x4) - 6px), var(--grid-c) calc(var(--x4) - 6px) calc(var(--x4) + 7px), transparent calc(var(--x4) + 7px)) 0 6px / 100% 1px no-repeat;height:13px;position:absolute}#intro,#experience,#skills,#education,#sdlc-process,#projects,#contact{scroll-margin-top:64px}.reveal{opacity:0;transition:opacity .6s,transform .6s;transform:translateY(24px)}.reveal-visible{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transition:none;transform:none}}#intro{box-sizing:border-box;border-top:none;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);align-items:center;gap:64px;min-height:min(100svh - 64px,760px);display:grid}@media (width<=960px){#intro{grid-template-columns:1fr;gap:48px;min-height:0}}.role-line{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--accent-text);margin:0 0 24px;font-size:14px}.summary{max-width:600px;font-size:20px;line-height:1.6}.hero-actions{flex-wrap:wrap;gap:12px;margin-top:40px;display:flex}.hero-cta{box-sizing:border-box;background:var(--accent);color:#fff;border:1px solid var(--accent);border-radius:8px;align-items:center;min-height:48px;padding:0 24px;font-size:16px;font-weight:500;text-decoration:none;transition:transform .2s,box-shadow .2s;display:inline-flex}.hero-cta:hover{box-shadow:var(--shadow);transform:translateY(-2px)}.hero-cta-secondary{color:var(--text-h);border-color:var(--border);background:0 0}.stats-strip{background:var(--border);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:16px;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;margin:0;display:grid;overflow:hidden}.stat{background:var(--surface);margin:0;padding:32px 24px}.stat-value{letter-spacing:-.02em;color:var(--text-h);margin:0;font-size:clamp(31px,4vw,49px);font-weight:600;line-height:1.1;display:block}.stat-label{margin:8px 0 0;font-size:14px;line-height:1.4}.sector-badge{border:1px solid var(--accent-border);color:var(--accent-text);font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;border-radius:999px;padding:4px 12px;font-size:12px;font-weight:600;display:inline-block}.skill-logo{opacity:.9;flex-shrink:0}.stack-chips,.project-stack{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.stack-chips li,.project-stack li{color:var(--text-h);background:var(--bg);border:1px solid var(--border);border-radius:8px;align-items:center;gap:8px;padding:6px 12px;font-size:14px;display:inline-flex}.metric-row{flex-wrap:wrap;gap:12px;margin:24px 0 0;padding:0;list-style:none;display:flex}.metric-chip{border:1px solid var(--accent-border);background:var(--accent-bg);border-radius:8px;align-items:baseline;gap:8px;padding:8px 12px;display:flex}.metric-value{color:var(--accent-text);font-size:16px;font-weight:600}.metric-label{color:var(--text);font-size:14px}.dates{margin:4px 0 0;font-size:14px}.experience-body h3,.internship-header h3,.education-entry h3,.project-details h3,.skill-row h3{color:var(--text-h);letter-spacing:-.01em;margin:0;font-size:20px;font-weight:600;line-height:1.25}.experience-list{margin:0;padding:0;list-style:none}.experience-entry{border-top:1px solid var(--border);grid-template-columns:minmax(0,3fr) minmax(0,9fr);gap:48px;padding:48px 0;display:grid}.experience-entry:last-child{padding-bottom:0}.experience-meta .dates{margin:0 0 4px}.experience-meta .sector-badge{margin-top:16px}.experience-body h3{margin-bottom:16px;font-size:25px}.experience-body .company{color:var(--text);margin-top:4px;font-size:16px;font-weight:400;display:block}.experience-body .company a{color:var(--accent-text);text-decoration:underline;-webkit-text-decoration-color:var(--accent-border);text-decoration-color:var(--accent-border);text-underline-offset:3px;transition:text-decoration-color .2s}.experience-body .company a:hover{-webkit-text-decoration-color:var(--accent-text);text-decoration-color:var(--accent-text)}.experience-body .stack-chips{margin-bottom:24px}.highlights,.new-skills ul{margin:0;padding-left:20px}.highlights li,.new-skills li{margin-bottom:8px;line-height:1.6}.new-skills{margin-top:24px}.new-skills-label{color:var(--text-h);margin-bottom:8px;font-size:14px;font-weight:500}@media (width<=800px){.experience-entry{grid-template-columns:1fr;gap:16px;padding:32px 0}}.domains-row{flex-wrap:wrap;align-items:center;gap:12px 16px;margin-bottom:48px;display:flex}.domains-label{color:var(--text);font-size:14px}.domains-list{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.skill-rows{border-bottom:1px solid var(--border)}.skill-row{border-top:1px solid var(--border);grid-template-columns:minmax(0,3fr) minmax(0,9fr);gap:48px;padding:40px 0;display:grid}@media (width<=800px){.skill-row{grid-template-columns:1fr;gap:24px}}.skill-row h3{align-items:baseline;gap:12px;display:flex}.skill-count{font-family:var(--mono);color:var(--text);font-size:12px;font-weight:400}.skill-tiles{grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:12px;margin:0;padding:0;list-style:none;display:grid}.skill-tiles li{box-sizing:border-box;text-align:center;min-height:96px;color:var(--text-h);background:var(--surface);border:1px solid var(--border);border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:16px 8px;font-size:14px;line-height:1.3;transition:transform .2s,border-color .2s;display:flex}.skill-tiles li:hover{border-color:var(--accent-border);transform:translateY(-2px)}.skill-tiles .skill-logo{width:28px;height:28px;color:var(--text);transition:color .2s}.skill-tiles li:hover .skill-logo{color:var(--accent-text)}.internships-heading{margin-top:96px}.education-list,.internship-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin:0;padding:0;list-style:none;display:grid}@media (width<=800px){.education-list,.internship-list{grid-template-columns:1fr}}.education-entry,.internship-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:32px}.education-entry-header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.education-entry h3{margin-bottom:8px}.education-entry .dates{margin:4px 0 0}.grade-badge{flex-shrink:0}.internship-header{margin-bottom:16px}.internship-header .company{color:var(--text);margin-top:4px;font-size:16px;font-weight:400;display:block}.sdlc-intro{max-width:640px;margin:-24px 0 48px;font-size:18px}.stack{--stack-top:88px;--stack-step:12px;position:relative}.stack-card{top:calc(var(--stack-top) + var(--i,0) * var(--stack-step));box-sizing:border-box;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);transform-origin:top;border-radius:24px;margin:0 0 24px;padding:48px}@media (prefers-reduced-motion:no-preference) and (width>=641px) and (height>=701px){.stack-card{margin-bottom:10vh;position:sticky}}.phase{grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:48px;display:grid}@media (width<=800px){.phase{grid-template-columns:1fr;gap:24px}}.phase-number{font-family:var(--mono);color:var(--accent-text);margin-bottom:16px;font-size:14px;display:block}.phase-head h3{letter-spacing:-.02em;color:var(--text-h);margin:0 0 16px;font-size:31px;font-weight:600;line-height:1.15}.phase-steps{flex-direction:column;gap:24px;margin:0;padding:0;list-style:none;display:flex}.phase-steps li{border-top:1px solid var(--border);padding-top:24px}.phase-steps li:first-child{border-top:none;padding-top:0}.phase-steps h4{color:var(--text-h);margin:0 0 8px;font-size:18px;font-weight:600}.phase-steps code{font-size:.85em}@media (width<=640px){.stack-card{border-radius:16px;padding:24px}}.browser-chrome{border-bottom:1px solid var(--border);align-items:center;gap:6px;padding:12px 16px;display:flex}.browser-dot{background:var(--border);border-radius:50%;width:10px;height:10px}.site-stack{border-top:1px solid var(--border);margin-top:64px;padding-top:48px}.site-stack h3{color:var(--text-h);letter-spacing:-.01em;margin:0 0 32px;font-size:25px;font-weight:600}.site-stack-groups{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:32px;display:grid}.site-stack-label{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text);margin-bottom:12px;font-size:12px}.project-card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:24px;grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:center;gap:48px;padding:32px;display:grid}@media (width<=800px){.project-card{grid-template-columns:1fr;gap:32px}}.browser-frame{border:1px solid var(--border);background:var(--bg);border-radius:12px;overflow:hidden}.browser-body{background:var(--accent-bg);display:flex}.browser-preview{aspect-ratio:8/5;width:100%;height:auto;display:block}.project-details h3{margin-bottom:16px;font-size:25px}.project-details p,.project-stack{margin-bottom:24px}.project-repo-link{min-height:44px;color:var(--accent-text);align-items:center;gap:8px;font-weight:500;text-decoration:none;display:inline-flex}.project-repo-link:hover{text-decoration:underline}.contact-links{flex-wrap:wrap;gap:16px;margin:0;padding:0;list-style:none;display:flex}.contact-links a{color:var(--text-h);box-sizing:border-box;background:var(--surface);border:1px solid var(--border);border-radius:8px;align-items:center;gap:8px;min-height:48px;padding:0 20px;font-size:16px;text-decoration:none;transition:transform .2s,border-color .2s;display:inline-flex}.contact-links a:hover{border-color:var(--accent-border);transform:translateY(-2px)}.contact-email-item{background:var(--surface);border:1px solid var(--border);border-radius:8px;align-items:stretch;transition:transform .2s,border-color .2s;display:inline-flex;overflow:hidden}.contact-email-item:hover{border-color:var(--accent-border);transform:translateY(-2px)}.contact-email-item a{background:0 0;border:none;border-radius:0;padding:0 12px 0 20px}.contact-email-item a:hover{transform:none}.copy-email-btn{border:none;border-left:1px solid var(--border);min-height:46px;color:var(--text);font:inherit;cursor:pointer;background:0 0;align-items:center;gap:6px;padding:0 16px 0 12px;font-size:14px;transition:color .2s,background .2s;display:inline-flex}.copy-email-btn:hover{color:var(--accent-text);background:var(--accent-bg)}.copy-email-btn:focus-visible{outline-offset:-2px}
