:root{--bg:#f7f7f4;--bg-soft:#f0f0ec;--surface:#12121009;--surface-hover:#12121012;--border:#1212101a;--border-strong:#12121033;--indigo:#5b4de0;--violet:#7c52d6;--mint:#0f8f82;--amber:#b45309;--text:#17171a;--text-muted:#4a4e55;--text-faint:#7c8189;--text-secondary:#33363d;--font-display:"Space Grotesk", system-ui, sans-serif;--font-body:"Inter", system-ui, sans-serif;--radius:16px}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font-body);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;overscroll-behavior:none;margin:0}button{font-family:inherit}.app{touch-action:pan-y;background:var(--bg);width:100%;height:100dvh;position:relative;overflow:hidden}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.deck,.slide{position:absolute;inset:0}.slide{overflow:hidden}.slide-content{z-index:1;flex-direction:column;justify-content:safe center;max-width:1040px;height:100%;margin:0 auto;padding:clamp(5rem,12vh,8rem) clamp(1.5rem,5vw,3rem) 7rem;display:flex;position:relative}.slide-scroll{overflow-anchor:none;scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;overflow-y:auto}.slide-compact{padding-top:clamp(3.5rem,8vh,5.5rem);padding-bottom:clamp(3rem,7vh,5rem)}.slide-scroll::-webkit-scrollbar{width:6px}.slide-scroll::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:3px}.slide-label{letter-spacing:.22em;text-transform:uppercase;color:var(--mint);margin-bottom:clamp(.75rem,2vh,1.25rem);font-size:.72rem;font-weight:600;display:block}.slide-title{font-family:var(--font-display);letter-spacing:-.02em;margin:0 0 clamp(1rem,2.2vh,1.5rem);font-size:clamp(1.6rem,4.5vw,2.75rem);font-weight:700;line-height:1.15}.grad-text{color:var(--indigo)}.intro{max-width:880px}.intro-name{font-family:var(--font-display);letter-spacing:-.03em;margin:0;font-size:clamp(2.8rem,9vw,6.25rem);font-weight:700;line-height:1.02}.intro-headline{font-family:var(--font-display);color:var(--text);margin:clamp(1rem,3vh,1.75rem) 0 .5rem;font-size:clamp(1.25rem,3.5vw,2rem);font-weight:500}.intro-role{color:var(--text-muted);margin:0;font-size:clamp(.95rem,2vw,1.1rem)}.intro-hint{flex-wrap:wrap;align-items:center;gap:1.25rem;margin-top:clamp(1.75rem,5vh,3rem);display:flex}.btn-text{color:var(--text-muted);border-bottom:1px solid #0000;padding:.5rem .25rem;font-size:.95rem;font-weight:500;text-decoration:none;transition:color .2s,border-color .2s}.btn-text:hover{color:var(--text);border-color:var(--border-strong)}.scroll-cue{color:var(--text-faint);letter-spacing:.08em;cursor:pointer;background:0 0;border:none;margin-top:clamp(1.5rem,4vh,2.5rem);padding:.5rem .25rem;font-size:.85rem;transition:color .2s;display:inline-block}.scroll-cue:hover{color:var(--mint)}@media (prefers-reduced-motion:no-preference){.scroll-cue{animation:2.4s ease-in-out infinite cue-bob}}@keyframes cue-bob{0%,to{transform:translateY(0)}50%{transform:translateY(4px)}}.about-paragraphs{flex-direction:column;gap:1rem;max-width:720px;display:flex}.about-text{color:var(--text-secondary);margin:0;font-size:clamp(.95rem,1.8vw,1.08rem);line-height:1.58}.metric-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;width:100%;max-width:720px;margin-top:28px;display:grid}.metric-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;justify-content:center;align-items:flex-start;min-width:0;min-height:120px;padding:24px 28px;transition:background .2s,border-color .2s;display:flex}.metric-card:hover{background:var(--surface-hover);border-color:var(--border-strong)}.metric-card:focus-visible{outline:2px solid var(--mint);outline-offset:3px}.metric-value{font-family:var(--font-display);color:var(--indigo);margin:0;font-size:clamp(1.6rem,3vw,2rem);font-weight:700;line-height:1}.metric-label{color:var(--text-muted);margin:14px 0 0;font-size:.82rem;line-height:1.35}.timeline{flex-direction:column;gap:.9rem;max-width:860px;display:flex}.job{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:1.05rem 1.35rem 1.15rem;transition:background .2s,border-color .2s}.job:hover{background:var(--surface-hover);border-color:var(--border-strong)}.job:focus-visible{outline:2px solid var(--mint);outline-offset:3px}.job-head{align-items:flex-start;gap:.9rem;margin-bottom:.55rem;display:flex}.job-logo{background:#fff;border-radius:10px;flex:none;place-items:center;width:40px;height:40px;padding:5px;display:grid}.job-logo-img{object-fit:contain;border-radius:5px;width:100%;height:100%}.job-meta{flex:1}.job-period{letter-spacing:.09em;text-transform:uppercase;color:var(--text-faint);margin:0;font-size:.72rem;font-weight:500}.job-title{font-family:var(--font-display);color:var(--text);margin:.15rem 0 0;font-size:1.05rem;font-weight:700}.job-company{color:var(--text-muted);margin:.15rem 0 0;font-size:.9rem;font-weight:500}.job-location{color:var(--text-faint);font-weight:400}.job-bullets{flex-direction:column;gap:.3rem;margin:0;padding-left:1.1rem;display:flex}.job-bullets li{color:var(--text-muted);font-size:.88rem;line-height:1.55}.job-bullets li::marker{color:color-mix(in srgb, var(--text) 35%, transparent)}.earlier{max-width:860px;margin-top:1.5rem}.earlier-title{font-family:var(--font-display);letter-spacing:.04em;color:var(--text);margin:0 0 .4rem;font-size:.95rem;font-weight:700}.earlier-row{border-top:1px solid var(--border);grid-template-columns:280px 1fr;gap:1.25rem;padding:.65rem .1rem;display:grid}.earlier-name{color:var(--text);margin:0;font-size:.87rem;font-weight:600;line-height:1.45}.earlier-period{letter-spacing:.06em;color:var(--text-faint);margin:.1rem 0 0;font-size:.74rem}.earlier-text{color:var(--text-muted);margin:0;font-size:.86rem;line-height:1.5}.career-link{color:var(--text-muted);border-bottom:1px solid #0000;margin-top:1.4rem;font-size:.9rem;text-decoration:none;transition:color .2s,border-color .2s;display:inline-block}.career-link:hover{color:var(--text);border-color:var(--border-strong)}.research-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:.55rem;max-width:860px;padding:1.15rem 1.5rem;display:flex}.research-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.research-title{font-family:var(--font-display);margin:0;font-size:clamp(1.15rem,2.2vw,1.45rem);font-weight:700}.research-subtitle{color:var(--text-muted);margin:.1rem 0 0;font-size:.85rem}.research-status{border:1px solid var(--border-strong);color:var(--text-muted);letter-spacing:.12em;text-transform:uppercase;border-radius:999px;flex:none;padding:.2rem .7rem;font-size:.66rem;font-weight:700}.research-description{color:var(--text-secondary);margin:0;font-size:.92rem;line-height:1.45}.research-support{color:var(--text-muted);margin:0;font-size:.82rem;line-height:1.5}.research-link{width:fit-content;color:var(--indigo);border-bottom:1px solid #0000;font-size:.88rem;font-weight:600;text-decoration:none;transition:color .2s,border-color .2s;display:inline-block}.research-link:hover{color:var(--violet);border-color:var(--violet)}.research-link:focus-visible{outline:2px solid var(--mint);outline-offset:3px;border-radius:4px}.edu-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem;max-width:860px;margin-top:.5rem;display:grid}.edu-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:.4rem;min-width:0;padding:.95rem 1.2rem;display:flex}.edu-head{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.edu-title{font-family:var(--font-display);margin:0;font-size:1.05rem;font-weight:700}.edu-period{color:var(--text-faint);white-space:nowrap;flex:none;margin:.15rem 0 0;font-size:.8rem}.edu-degree{color:var(--indigo);margin:0;font-size:.9rem;font-weight:600;line-height:1.4}.edu-focus{color:var(--text-muted);margin:0;font-size:.86rem;line-height:1.4}.edu-focus-label{color:var(--text-faint)}.edu-text{color:var(--text-muted);margin:0;font-size:.9rem;line-height:1.5}.edu-thesis-wrap{border-top:1px dashed var(--border-strong);align-items:flex-start;height:5.2em;margin-top:auto;padding-top:.6rem;display:flex;overflow:visible}.edu-thesis{color:var(--text-muted);margin:0;font-size:.86rem;line-height:1.5}.steps-flow{align-items:stretch;max-width:980px;display:flex}.step-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;flex:1 1 0;gap:.6rem;min-width:0;padding:1.4rem;transition:background .2s,border-color .2s;display:flex}.step-card:hover{background:var(--surface-hover);border-color:var(--border-strong)}.step-card:focus-visible{outline:2px solid var(--mint);outline-offset:3px}.step-card-emphasis{border-color:color-mix(in srgb, var(--indigo) 45%, transparent);background:color-mix(in srgb, var(--indigo) 5%, transparent)}.step-card-emphasis:hover{border-color:color-mix(in srgb, var(--indigo) 60%, transparent)}.flow-sep{flex-direction:column;flex:none;justify-content:center;align-items:center;gap:.45rem;width:1.25rem;display:flex}.flow-seg{border-radius:1px;width:100%;height:2px;display:block}.steps-flow .flow-sep:first-of-type .flow-seg,.steps-flow .flow-sep:nth-of-type(2) .flow-seg{background:var(--mint)}.step-num{font-family:var(--font-display);letter-spacing:.14em;color:var(--indigo);margin:0;font-size:.8rem;font-weight:700}.step-title{font-family:var(--font-display);margin:0;font-size:1.1rem;font-weight:700;line-height:1.3}.step-text{color:var(--text-secondary);min-height:8.4em;margin:0;font-size:.88rem;line-height:1.55}.step-footer{border-top:1px solid var(--border);margin-top:auto;padding-top:.7rem}.step-terms{color:var(--text-faint);margin:0;font-size:.76rem;line-height:1.45}.slide:has(.steps-flow) .slide-title{margin-bottom:1.1rem}.work-footer{color:var(--text-faint);margin:1.5rem 0 0;font-size:.82rem;line-height:1.5}.work-explainer{border-top:1px solid var(--border);max-width:980px;margin-top:2rem;padding-top:1.5rem}.work-explainer-heading{font-family:var(--font-display);color:var(--text);margin:0 0 .6rem;font-size:1.05rem;font-weight:700}.work-explainer-text{max-width:640px;color:var(--text-secondary);margin:0 0 .8rem;font-size:.9rem;line-height:1.6}.work-explainer-text:last-of-type{margin-bottom:1.1rem}.process-row{color:var(--text);flex-wrap:wrap;align-items:center;gap:.5rem .85rem;margin:0;font-size:.88rem;font-weight:600;display:flex}.process-arrow{color:var(--indigo);margin-left:.85rem;font-weight:700}.process-loop{color:var(--mint);margin-left:.85rem;font-size:1rem;font-weight:700}.gallery-intro{max-width:560px;color:var(--text-muted);margin:-.75rem 0 1.5rem;font-size:.95rem;line-height:1.6}.gallery-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;max-width:980px;display:grid}.gallery-link{aspect-ratio:3/2;border:1px solid var(--border);cursor:zoom-in;background:0 0;border-radius:14px;width:100%;padding:0;display:block;overflow:hidden}.gallery-photo{object-fit:cover;object-position:center;width:100%;height:100%;transition:transform .35s,filter .35s;display:block}.gallery-link:hover .gallery-photo{filter:brightness(.92);transform:scale(1.04)}.gallery-link:focus-visible{outline:2px solid var(--mint);outline-offset:3px}@media (width>=768px) and (width<=1023px){.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.gallery-more{margin-top:1.5rem}.availability-row{border:1px solid var(--border);background:var(--surface);border-radius:14px;flex:none;justify-content:space-between;align-items:center;gap:1.5rem;max-width:980px;min-height:84px;margin-bottom:2rem;padding:.9rem 1.25rem;display:flex}.availability-text{flex-direction:column;gap:.2rem;display:flex}.availability-primary{color:var(--text);margin:0;font-size:.95rem;font-weight:600}.availability-secondary{color:var(--text-muted);margin:0;font-size:.85rem}.availability-cta{border-color:var(--border-strong);flex:none;transition:color .2s,border-color .2s,background .2s}.availability-cta:hover{color:var(--mint);border-color:var(--mint);background:var(--surface-hover)}.availability-cta:focus-visible{outline:2px solid var(--mint);outline-offset:3px}.lightbox{z-index:100;background:#05070cf0;place-items:center;display:grid;position:fixed;inset:0}.lightbox-img{object-fit:contain;border-radius:12px;max-width:88vw;max-height:82vh;box-shadow:0 24px 80px #0009}.lightbox-btn{border:1px solid var(--border);background:var(--surface);width:48px;height:48px;color:var(--text);cursor:pointer;border-radius:50%;place-items:center;transition:background .2s,border-color .2s;display:grid;position:absolute}.lightbox-btn:hover{background:var(--surface-hover);border-color:var(--border-strong)}.lightbox-close{top:1.25rem;right:1.25rem}.lightbox-prev{top:50%;left:1.25rem;transform:translateY(-50%)}.lightbox-next{top:50%;right:1.25rem;transform:translateY(-50%)}.lightbox-count{color:var(--text-muted);letter-spacing:.08em;font-size:.85rem;position:absolute;bottom:1.25rem;left:50%;transform:translate(-50%)}.slide:has(.contact-grid) .slide-label{margin-bottom:24px}.contact-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);align-items:center;gap:3rem;max-width:960px;display:grid}.contact-intro{flex-direction:column;gap:1rem;display:flex}.contact-heading{max-width:460px;margin:0;font-size:clamp(1.5rem,3.5vw,2.2rem)}.contact-intro-text{max-width:420px;color:var(--text-secondary);margin:0;font-size:1rem;line-height:1.6}.contact-intro-text+.contact-intro-text{margin-top:-.5rem}.contact-panel{border:1px solid var(--border);background:var(--surface);border-radius:18px;padding:1.5rem}.contact-action-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;display:grid}.contact-action{border:1px solid var(--border);min-height:46px;color:var(--text);background:#ffffff05;border-radius:10px;align-items:center;gap:.6rem;padding:.7rem .85rem;font-size:.88rem;font-weight:500;text-decoration:none;transition:background .2s,border-color .2s,color .2s;display:flex}.contact-action:hover{background:var(--surface-hover);border-color:color-mix(in srgb, var(--indigo) 55%, transparent)}.contact-action:focus-visible{outline:2px solid var(--mint);outline-offset:3px;border-color:color-mix(in srgb, var(--indigo) 55%, transparent)}.contact-action-icon{width:17px;color:var(--text-muted);flex:none;justify-content:center;display:inline-flex}.contact-action-indicator{color:var(--text-faint);margin-left:auto;display:inline-flex}@media (width<=1023px){.contact-grid{grid-template-columns:1fr;gap:2rem}}@media (width<=767px){.contact-panel{padding:1.25rem}.contact-action-grid{grid-template-columns:1fr}.contact-action{width:100%;min-height:46px}}.btn-restart{color:var(--text-faint);cursor:pointer;background:0 0;border:none;margin-top:1rem;padding:.5rem 0;font-size:.9rem;transition:color .2s}.btn-restart:hover{color:var(--text)}.btn{cursor:pointer;border:1px solid #0000;border-radius:999px;align-items:center;gap:.5rem;padding:.8rem 1.4rem;font-size:.95rem;font-weight:600;text-decoration:none;transition:transform .15s,box-shadow .2s,background .2s,border-color .2s;display:inline-flex}.btn-primary{color:#fff;background:var(--indigo);box-shadow:0 6px 24px color-mix(in srgb, var(--indigo) 25%, transparent)}.btn-primary:hover{box-shadow:0 10px 32px color-mix(in srgb, var(--indigo) 30%, transparent);transform:translateY(-1px)}.btn-ghost{background:var(--surface);border-color:var(--border);color:var(--text)}.btn-ghost:hover{background:var(--surface-hover);border-color:var(--border-strong)}.nav{z-index:20;pointer-events:none;position:absolute;inset:0}.nav-progress{background:var(--border);height:3px;position:absolute;top:0;left:0;right:0}.nav-progress-fill{background:var(--mint);height:100%;transition:width .45s cubic-bezier(.22,1,.36,1)}.nav-counter{font-family:var(--font-display);color:var(--text);letter-spacing:.05em;font-size:.85rem;font-weight:500;position:absolute;top:1.15rem;left:1.5rem}.nav-counter span{color:var(--text-faint)}.nav-dots{pointer-events:auto;gap:.5rem;display:flex;position:absolute;bottom:2.25rem;left:50%;transform:translate(-50%)}.dot{background:color-mix(in srgb, var(--text) 14%, transparent);cursor:pointer;border:none;border-radius:999px;width:8px;height:8px;padding:0;transition:width .25s,background .25s}.dot-active{background:var(--mint);width:24px}.nav-buttons{pointer-events:auto;gap:.6rem;display:flex;position:absolute;bottom:1.5rem;right:1.5rem}.nav-btn{border:1px solid var(--border);background:var(--surface);width:48px;height:48px;color:var(--text);cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:50%;place-items:center;transition:background .2s,border-color .2s,transform .15s;display:grid}.nav-btn:hover:not(:disabled){background:var(--surface-hover);border-color:var(--border-strong)}.nav-btn:active:not(:disabled){transform:scale(.94)}.nav-btn:disabled{opacity:.3;cursor:default}.nav-btn-next{background:var(--indigo);border-color:#0000}.nav-btn-next:hover:not(:disabled){background:var(--indigo);filter:brightness(1.08)}:focus-visible{outline:2px solid var(--mint);outline-offset:3px;border-radius:4px}@media (width<=767px){.slide-content{padding:5.5rem 1.25rem 6.5rem}.metric-grid{grid-template-columns:1fr;gap:14px}.metric-card{min-height:0}.job{padding:1rem 1.15rem}.earlier-row{grid-template-columns:1fr;gap:.3rem}.edu-cards{grid-template-columns:1fr}.steps-flow{flex-direction:column}.step-card{flex:none}.flow-sep{flex-direction:column;width:auto;height:1.25rem}.flow-sep .flow-seg{width:2px;height:100%}.steps-flow .flow-sep:first-of-type .flow-seg,.steps-flow .flow-sep:nth-of-type(2) .flow-seg{background:var(--mint)}.flow-sep svg{transform:rotate(90deg)}.research-card{padding:1.4rem 1.25rem}.research-head{flex-direction:column}.gallery-grid{grid-template-columns:1fr}.availability-row{flex-direction:column;align-items:stretch;gap:.9rem}.availability-text{display:none}.availability-cta{justify-content:center;width:100%;min-height:44px}.process-row{flex-direction:column;align-items:flex-start;gap:.65rem;font-size:.95rem}.process-stage{flex-direction:column;align-items:flex-start;display:flex}.process-arrow{transform-origin:50%;margin:0 0 .4rem;font-size:1rem;line-height:1;display:inline-block;transform:rotate(90deg)}.process-loop{margin-top:.25rem;margin-left:0}.lightbox-prev{left:.75rem}.lightbox-next{right:.75rem}.nav-counter{top:.9rem;left:1.25rem}.nav-buttons{justify-content:space-between;bottom:1.1rem;left:1.25rem;right:1.25rem}.nav-btn{width:52px;height:52px}.nav-dots{pointer-events:none;gap:.45rem;bottom:1.9rem}.dot{background:color-mix(in srgb, var(--text) 25%, transparent);width:6px;height:6px}.dot-active{background:var(--mint);width:18px}}@media print{.app{background:#fff;height:auto;overflow:visible}.deck{position:static}.slide{break-inside:avoid;padding:0;position:static;overflow:visible}.slide-content{max-width:none;height:auto;padding:.5in}.slide-label,.nav,.intro-hint,.btn,.btn-restart{display:none!important}.intro-name{color:#000;font-size:36pt}.intro-headline,.intro-role{color:#444}.slide-title,.stat-value,.job-title,.step-title,.research-title,.edu-title{color:#000}.about-text,.job-bullets li,.step-text,.step-terms,.research-description,.research-support,.edu-text,.edu-thesis,.stat-label,.job-location,.work-footer{color:#333}.grad-text{color:#000;background:0 0;-webkit-background-clip:initial;background-clip:initial}.stat,.job,.metric-card,.research-card,.step-card,.edu-card{background:#fff;border:1px solid #ccc}}
