.app-shell{position:relative;min-height:100vh}.page-glow{position:fixed;inset:auto;border-radius:999px;filter:blur(90px);opacity:.55;pointer-events:none;z-index:0}.page-glow-one{top:-6rem;left:-4rem;width:22rem;height:22rem;background:var(--glow-green)}.page-glow-two{right:-5rem;top:18rem;width:20rem;height:20rem;background:var(--glow-warm)}.page-grid{position:fixed;inset:0;pointer-events:none;z-index:0;background-image:linear-gradient(var(--grid-color) 1px,transparent 1px),linear-gradient(90deg,var(--grid-color) 1px,transparent 1px);background-size:4.5rem 4.5rem;-webkit-mask-image:linear-gradient(to bottom,var(--grid-mask),transparent 82%);mask-image:linear-gradient(to bottom,var(--grid-mask),transparent 82%)}.container{width:min(1120px,calc(100% - 2rem));margin:0 auto;position:relative;z-index:1}.site-header{position:sticky;top:0;z-index:30;transition:background-color .22s ease,border-color .22s ease,box-shadow .22s ease,backdrop-filter .22s ease}.site-header-scrolled{background:var(--header-bg);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--border-soft);box-shadow:var(--shadow-header)}.header-inner{display:flex;align-items:center;justify-content:space-between;min-height:5rem;gap:1rem}.header-controls{display:flex;align-items:center;gap:.75rem}.brand{border:0;background:transparent;padding:0;color:var(--text-strong);font-size:1rem;font-weight:700;letter-spacing:-.02em;cursor:pointer}.site-nav{display:flex;align-items:center;gap:.4rem;margin-left:auto}.nav-link{border:0;background:transparent;color:var(--text-muted);font-size:.96rem;font-weight:600;padding:.75rem .95rem;border-radius:999px;cursor:pointer;transition:color .18s ease,background-color .18s ease,transform .18s ease}.nav-link:hover,.nav-link:focus-visible{color:var(--text-strong);background:var(--nav-hover);transform:translateY(-1px)}.nav-link-active{color:var(--accent);background:var(--nav-active)}.nav-resume{margin-left:.25rem}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:2.9rem;height:2.9rem;padding:0;border:1px solid var(--border-strong);border-radius:999px;background:var(--surface-button);color:var(--text-strong);cursor:pointer;box-shadow:var(--shadow-soft);transition:transform .18s ease,background-color .18s ease,border-color .18s ease,box-shadow .18s ease,color .18s ease}.theme-toggle:hover,.theme-toggle:focus-visible{transform:translateY(-1px);border-color:var(--border-hover);box-shadow:var(--shadow-medium)}.theme-toggle-icon{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%;color:var(--text-strong);line-height:1}.theme-toggle-icon svg{width:1.2rem;height:1.2rem}.menu-toggle{display:none;position:relative;width:2.9rem;height:2.9rem;border:1px solid var(--border-strong);border-radius:999px;background:var(--surface-button);cursor:pointer;box-shadow:var(--shadow-soft)}.menu-toggle span{position:absolute;left:.85rem;right:.85rem;height:2px;border-radius:999px;background:var(--text-strong);transition:transform .18s ease,top .18s ease,opacity .18s ease}.menu-toggle span:nth-child(1){top:1rem}.menu-toggle span:nth-child(2){top:1.42rem}.menu-toggle span:nth-child(3){top:1.84rem}.menu-toggle-open span:nth-child(1){top:1.42rem;transform:rotate(45deg)}.menu-toggle-open span:nth-child(2){opacity:0}.menu-toggle-open span:nth-child(3){top:1.42rem;transform:rotate(-45deg)}.hero-section{padding:5.5rem 0 2.5rem}.hero-layout{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(320px,.85fr);gap:2rem;align-items:start}.hero-copy,.hero-panel,.panel-card,.metric-card,.strength-card,.experience-card,.project-card,.skill-card,.info-card,.contact-card{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.hero-copy{padding:1rem 0}.status-pill,.section-eyebrow,.panel-label,.project-note,.contact-label{display:inline-flex;align-items:center;gap:.5rem;color:var(--accent);font-family:var(--font-mono);font-size:.78rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.status-pill{padding:.65rem 1rem;border:1px solid var(--border-strong);border-radius:999px;background:var(--surface-pill);box-shadow:var(--shadow-medium)}.hero-kicker{margin-top:1.4rem;color:var(--text-soft);font-size:.95rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.hero-copy h1{margin:1rem 0 1.3rem;max-width:11ch;font-size:clamp(3rem,8vw,5.5rem);line-height:.96;letter-spacing:-.05em}.hero-summary{max-width:42rem;font-size:1.06rem;color:var(--text-soft)}.hero-actions,.contact-actions,.social-links,.tag-list{display:flex;flex-wrap:wrap;gap:.85rem}.hero-actions{margin-top:2rem}.button{display:inline-flex;align-items:center;justify-content:center;min-height:3rem;padding:.85rem 1.2rem;border-radius:999px;border:1px solid transparent;text-decoration:none;font-size:.96rem;font-weight:700;transition:transform .18s ease,box-shadow .18s ease,background-color .18s ease,color .18s ease,border-color .18s ease}.button:hover,.button:focus-visible{transform:translateY(-2px)}.button-primary{background:var(--accent);color:var(--bg);box-shadow:var(--shadow-accent)}.button-primary:hover,.button-primary:focus-visible{box-shadow:var(--shadow-accent-hover)}.button-secondary,.button-ghost{background:var(--surface-button);border-color:var(--border-strong);color:var(--text-strong);box-shadow:var(--shadow-medium)}.hero-links{margin-top:1.5rem}.social-link{display:inline-flex;align-items:center;justify-content:center;width:2.9rem;height:2.9rem;border:1px solid var(--border-strong);border-radius:999px;background:var(--surface-button);color:var(--text-muted);text-decoration:none;box-shadow:var(--shadow-soft);transition:transform .18s ease,color .18s ease,border-color .18s ease,background-color .18s ease,box-shadow .18s ease}.social-link svg{width:1.18rem;height:1.18rem}.social-link:hover,.social-link:focus-visible{color:var(--accent);border-color:var(--border-hover);transform:translateY(-2px);box-shadow:var(--shadow-medium)}.hero-panel{display:grid;gap:1rem}.panel-card,.metric-card,.strength-card,.experience-card,.project-card,.skill-card,.info-card,.contact-card{border:1px solid var(--border-soft);border-radius:1.6rem;background:var(--surface);box-shadow:var(--shadow-card)}.panel-card{padding:1.45rem}.panel-card-primary{background:linear-gradient(180deg,var(--surface-strong),var(--surface-soft))}.panel-stack{display:grid;gap:1rem}.panel-title{display:block;margin-bottom:.28rem;color:var(--text-muted);font-size:.82rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.panel-value,.panel-link{color:var(--text-strong);font-size:.98rem;font-weight:600;text-decoration:none}.metrics-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;margin-top:2rem}.metric-card{padding:1.5rem 1.25rem;min-height:10.75rem;display:flex;flex-direction:column;justify-content:space-between}.metric-card strong{display:block;margin-bottom:.65rem;color:var(--text-strong);font-size:clamp(1.9rem,3vw,2.4rem);line-height:1;letter-spacing:-.04em}.metric-copy{display:grid;gap:.45rem}.metric-card span{color:var(--text-soft);font-size:1rem;line-height:1.55}.metric-card small{color:var(--text-muted);font-size:.82rem;line-height:1.5}.section{padding:5.5rem 0}.section-last{padding-bottom:6.5rem}.section-layout{display:grid;gap:2rem}.about-layout{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);align-items:start}.section-heading h2{max-width:14ch;margin:.7rem 0 1rem;font-size:clamp(2rem,5vw,3.4rem);line-height:1.02;letter-spacing:-.045em}.section-heading p,.about-content p,.experience-summary,.project-card p,.info-card p,.contact-card p{color:var(--text-soft)}.section-heading p{max-width:38rem}.about-content{display:grid;gap:1.15rem}.strength-list{display:grid;gap:.95rem;margin-top:1rem}.strength-card{display:grid;grid-template-columns:auto 1fr;gap:.9rem;align-items:start;padding:1.1rem 1.2rem}.strength-marker{width:.75rem;height:.75rem;margin-top:.45rem;border-radius:999px;background:linear-gradient(135deg,var(--gradient-soft),var(--gradient-warm))}.experience-list{display:grid;gap:1rem;margin-top:2rem}.experience-card{display:grid;grid-template-columns:minmax(170px,.34fr) minmax(0,1fr);gap:1.2rem;padding:1.5rem;transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease}.experience-card:hover{transform:translateY(-4px);border-color:var(--border-hover);box-shadow:var(--shadow-hover)}.experience-meta{display:flex;flex-direction:column;gap:.35rem;color:var(--text-muted);font-size:.87rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.experience-header h3,.project-card h3,.skill-card h3,.info-card h3{margin-bottom:.3rem;font-size:1.35rem;line-height:1.15;letter-spacing:-.03em}.experience-header p{color:var(--accent);font-weight:700}.experience-summary{margin:.85rem 0 1rem}.experience-card ul,.simple-list{padding-left:1.1rem;color:var(--text-soft)}.experience-card li+li,.simple-list li+li{margin-top:.55rem}.projects-grid,.skills-grid,.split-grid{display:grid;gap:1rem;margin-top:2rem}.projects-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.project-card,.skill-card,.info-card{padding:1.55rem;transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease}.project-card:hover,.skill-card:hover,.info-card:hover{transform:translateY(-4px);border-color:var(--border-hover);box-shadow:var(--shadow-hover)}.project-card p{margin-bottom:1rem}.tag{padding:.62rem .9rem;border:1px solid var(--border-strong);border-radius:999px;background:linear-gradient(180deg,var(--surface-tag),transparent);color:var(--text-strong);font-family:var(--font-mono);font-size:.78rem;font-weight:600;box-shadow:inset 0 1px #ffffff0a}.skill-card,.info-card{position:relative;overflow:hidden}.skill-card{display:flex;flex-direction:column;min-height:clamp(13.5rem,18vw,16rem)}.skill-card:before,.info-card:before{content:"";position:absolute;inset:0 0 auto;height:1px;background:linear-gradient(90deg,transparent,var(--accent),transparent);opacity:.45}.skill-card-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.15rem}.skill-card .tag-list{margin-top:auto}.skill-card h3,.info-card h3{margin-bottom:0}.skill-count{flex-shrink:0;padding:.35rem .7rem;border:1px solid var(--border-soft);border-radius:999px;background:var(--accent-soft);color:var(--accent);font-family:var(--font-mono);font-size:.72rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.skills-grid,.split-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.skills-grid>.reveal{height:100%}.info-card{min-height:100%}.skill-card{display:flex;flex-direction:column;height:100%;min-height:15.5rem}.info-card-education{display:flex;flex-direction:column;justify-content:space-between;background:radial-gradient(circle at top right,var(--accent-soft),transparent 42%),var(--surface)}.info-card-education h3{max-width:16ch;margin-top:.5rem}.info-card-education p{margin-top:.55rem}.info-card-highlights{background:radial-gradient(circle at top left,rgba(215,170,131,.08),transparent 36%),var(--surface)}.simple-list{list-style:none;padding-left:0;margin-top:1.05rem}.simple-list li{position:relative;padding-left:1.35rem;line-height:1.7}.simple-list li:before{content:"";position:absolute;left:0;top:.72rem;width:.5rem;height:.5rem;border-radius:999px;background:linear-gradient(135deg,var(--gradient-soft),var(--gradient-warm));box-shadow:0 0 0 4px #86b2a714}.info-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-top:1.4rem;padding-top:1rem;border-top:1px solid var(--border-soft);color:var(--text-muted)}.info-row strong{color:var(--text-strong);font-size:1.05rem;letter-spacing:-.02em}.contact-shell{display:grid;gap:2rem}.contact-card{padding:1.5rem}.contact-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.contact-grid a,.contact-grid p{margin-top:.35rem;color:var(--text-strong);font-size:1rem;font-weight:600;text-decoration:none}.contact-actions{margin-top:1.5rem}.site-footer{padding:0 0 2.5rem}.footer-inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-top:1.5rem;border-top:1px solid var(--border-soft)}.footer-inner p{color:var(--text-muted);font-size:.92rem}.reveal{opacity:0;transform:translateY(26px);transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1)}.reveal-visible{opacity:1;transform:translateY(0)}@media(max-width:960px){.hero-layout,.about-layout,.projects-grid,.skills-grid,.split-grid,.contact-grid,.experience-card{grid-template-columns:1fr}.metrics-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.experience-meta{flex-direction:row;flex-wrap:wrap}.footer-inner{flex-direction:column;align-items:flex-start}}@media(max-width:760px){.menu-toggle{display:inline-flex;align-items:center;justify-content:center}.site-nav{position:absolute;top:calc(100% + .75rem);left:1rem;right:1rem;display:grid;gap:.35rem;padding:.85rem;border:1px solid var(--border-soft);border-radius:1.3rem;background:var(--bg-elevated);box-shadow:var(--shadow-hover);margin-left:0;opacity:0;pointer-events:none;transform:translateY(-8px);transition:opacity .18s ease,transform .18s ease}.site-nav-open{opacity:1;pointer-events:auto;transform:translateY(0)}.nav-link,.nav-resume{width:100%;justify-content:flex-start}.hero-section{padding-top:4rem}.hero-copy h1{max-width:none}.metrics-grid,.contact-grid{grid-template-columns:1fr}}@media(max-width:560px){.container{width:min(1120px,calc(100% - 1.2rem))}.section,.section-last{padding:4.25rem 0}.hero-section{padding-bottom:1rem}.status-pill{width:100%;justify-content:center;text-align:center}.hero-actions,.contact-actions{flex-direction:column}.button{width:100%}.panel-card,.metric-card,.project-card,.skill-card,.info-card,.contact-card,.experience-card{border-radius:1.35rem}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal,.menu-toggle span,.site-nav,.nav-link,.button,.experience-card,.project-card,.skill-card,.info-card{transition:none}.reveal{opacity:1;transform:none}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.resize{resize:both}}:root{color-scheme:light;--bg:#f8f5ef;--bg-elevated:#fffdf9;--text-strong:#1f2d2a;--text-soft:#546763;--text-muted:#6f807b;--accent:#3f6f67;--accent-soft:#d6e8e0;--warm-accent:#c89470;--gradient-soft:#7aa89d;--gradient-warm:#d5ae8b;--surface:#fffc;--surface-strong:#ffffffeb;--surface-soft:#f4faf7e0;--surface-button:#ffffffb8;--surface-pill:#ffffffad;--surface-tag:#f5f8f6f2;--header-bg:#f8f5efbf;--nav-hover:#fffc;--nav-active:#b7d7c947;--border-soft:#4b645d1f;--border-strong:#4b645d24;--border-hover:#4b645d2e;--shadow-soft:0 10px 24px #2e3a360a;--shadow-medium:0 12px 30px #2e3a360d;--shadow-card:0 18px 45px #2e3a360f;--shadow-hover:0 22px 50px #2e3a3614;--shadow-header:0 14px 40px #2e3a360d;--shadow-accent:0 16px 28px #3f6f672e;--shadow-accent-hover:0 20px 34px #3f6f673d;--grid-color:#3b58500d;--grid-mask:#00000038;--glow-green:#b7d7c999;--glow-warm:#e9cdb88c;--selection:#3f6f672e;--scrollbar-track:#f1ece4;--scrollbar-thumb:#c8d6d1;--bg-gradient:radial-gradient(circle at top left, #d6e8e0d9, transparent 32%), radial-gradient(circle at 85% 10%, #e9cdb88c, transparent 28%), linear-gradient(180deg, #f8f5ef 0%, #f7f3ed 100%);--font-sans:"Manrope", sans-serif;--font-mono:"IBM Plex Mono", monospace}:root[data-theme=dark]{color-scheme:dark;--bg:#101715;--bg-elevated:#16201d;--text-strong:#edf4f1;--text-soft:#afc2bb;--text-muted:#8da098;--accent:#86b2a7;--accent-soft:#86b2a72e;--warm-accent:#d7aa83;--gradient-soft:#86b2a7;--gradient-warm:#d7aa83;--surface:#131c19cc;--surface-strong:#18231ff5;--surface-soft:#1c2925eb;--surface-button:#15201ce0;--surface-pill:#182521cc;--surface-tag:#182420f0;--header-bg:#101715c7;--nav-hover:#1a2723eb;--nav-active:#86b2a729;--border-soft:#86b2a729;--border-strong:#86b2a733;--border-hover:#86b2a747;--shadow-soft:0 12px 28px #0000002e;--shadow-medium:0 14px 32px #00000038;--shadow-card:0 22px 48px #0000003d;--shadow-hover:0 26px 56px #00000047;--shadow-header:0 16px 42px #0000003d;--shadow-accent:0 16px 28px #86b2a729;--shadow-accent-hover:0 20px 34px #86b2a733;--grid-color:#8da09814;--grid-mask:#0000006b;--glow-green:#5f857c57;--glow-warm:#9d6c4938;--selection:#86b2a738;--scrollbar-track:#13201c;--scrollbar-thumb:#365148;--bg-gradient:radial-gradient(circle at top left, #38534b5c, transparent 30%), radial-gradient(circle at 85% 10%, #7a573c2e, transparent 26%), linear-gradient(180deg, #101715 0%, #0c1110 100%)}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg-gradient);min-width:320px;color:var(--text-strong);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;line-height:1.6;transition:background-color .22s,color .22s,background .22s;overflow-x:hidden}a{color:inherit}button,input,textarea,select{font:inherit}button{color:inherit}img{max-width:100%;display:block}h1,h2,h3,h4,h5,h6,p,ul{margin:0}#root{min-height:100vh}::selection{background:var(--selection);color:var(--text-strong)}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background:var(--scrollbar-track)}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border:2px solid var(--scrollbar-track);border-radius:999px}
