@import"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&family=Space+Grotesk:wght@400;500;600;700&display=swap";:root{--bg: #030303;--fg: #f2f2f2;--muted: #9a9a9a;--line: rgba(255, 255, 255, .16);--mono: "JetBrains Mono", ui-monospace, monospace;--sans: "Space Grotesk", system-ui, sans-serif;--pan: 2.4s;--curve: cubic-bezier(.65, 0, .35, 1);color-scheme:dark;font-family:var(--sans);color:var(--fg);background:var(--bg)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg)}body.locked{overflow:hidden}a{color:inherit;text-decoration:none}.terrain{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0}.terrain canvas{display:block}.shade{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:none;background:radial-gradient(ellipse 70% 55% at 50% 45%,transparent 0%,rgba(3,3,3,.55) 100%),linear-gradient(90deg,rgba(3,3,3,.75) 0%,rgba(3,3,3,.35) 40%,transparent 65%),linear-gradient(180deg,rgba(3,3,3,.85) 0%,transparent 30%)}.welcome{position:fixed;top:0;right:0;bottom:0;left:0;z-index:5;display:grid;place-items:center;pointer-events:none;transition:transform var(--pan) var(--curve),opacity 1.4s ease,filter 1.4s ease}.welcome-word{margin:0;font-size:clamp(64px,14vw,210px);font-weight:600;letter-spacing:-.05em}.welcome-word span{display:inline-block;opacity:0;transform:translateY(40%);filter:blur(10px);animation:rise .9s cubic-bezier(.2,.8,.2,1) forwards}@keyframes rise{to{opacity:1;transform:none;filter:blur(0)}}.stage-main .welcome{transform:translate(-60vw);opacity:0;filter:blur(8px)}.topbar{position:fixed;top:0;left:0;right:0;z-index:10;display:flex;justify-content:space-between;align-items:center;padding:24px clamp(16px,5vw,64px);font-family:var(--mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;background:linear-gradient(180deg,#030303eb,#03030399 65%,#03030300);opacity:0;transition:opacity 1s ease 1.6s}.stage-main .topbar{opacity:1}section{scroll-margin-top:80px}.mark{font-family:var(--sans);font-weight:700;font-size:18px;letter-spacing:-.02em;border:1px solid var(--fg);padding:4px 8px}.topbar nav{display:flex;gap:28px}.topbar nav a{color:var(--muted);transition:color .2s}.topbar nav a:hover{color:var(--fg)}main{position:relative;z-index:4}.hero{min-height:100svh;display:flex;align-items:center;padding:0 clamp(16px,7vw,120px);position:relative}.hero-inner>*{opacity:0;transform:translate(40vw);transition:transform var(--pan) var(--curve),opacity 1.6s ease}.stage-main .hero-inner>*{opacity:1;transform:none}.stage-main .hero-inner>:nth-child(1){transition-delay:.15s}.stage-main .hero-inner>:nth-child(2){transition-delay:.05s}.stage-main .hero-inner>:nth-child(3){transition-delay:.3s}.kicker{display:flex;align-items:center;gap:12px;margin:0 0 20px;font-family:var(--mono);font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.dot{width:7px;height:7px;border-radius:50%;background:var(--fg);box-shadow:0 0 12px #fff;animation:pulse 2.4s ease-in-out infinite}@keyframes pulse{50%{opacity:.35}}.name{margin:0;font-size:clamp(56px,11vw,168px);line-height:.92;font-weight:600;letter-spacing:-.055em}.blurb{max-width:480px;margin:28px 0 0;font-size:17px;line-height:1.7;color:#c4c4c4}.interests{padding:120px clamp(16px,7vw,120px) 160px;display:grid;gap:110px}.label{display:flex;align-items:baseline;gap:16px;margin:0 0 32px;font-size:clamp(36px,5vw,64px);font-weight:500;letter-spacing:-.04em}.label span{font-family:var(--mono);font-size:13px;letter-spacing:.1em;color:var(--muted)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}.card{position:relative;padding:28px 24px 30px;border:1px solid var(--line);background:#0303038c;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);transition:transform .8s cubic-bezier(.2,.8,.2,1),opacity .8s ease,border-color .25s,background .25s}.card:hover{border-color:#fff9;background:#0c0c0cb3}.card .idx{font-family:var(--mono);font-size:11px;color:var(--muted);letter-spacing:.1em}.card h4{margin:40px 0 10px;font-size:22px;font-weight:500;letter-spacing:-.02em}.card p{margin:0;font-size:14px;line-height:1.65;color:#a8a8a8}.reveal{opacity:0;transform:translateY(30px)}.reveal.in{opacity:1;transform:none}@media(max-width:640px){.blurb{font-size:15px}.interests{gap:80px;padding-top:80px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.welcome-word span{opacity:1;transform:none;filter:none}}.topbar nav a.active{color:var(--fg)}.resume-page{min-height:100svh;padding:110px clamp(16px,5vw,64px) 40px;max-width:1028px;margin:0 auto;display:flex;flex-direction:column;gap:24px}.resume-bar{display:flex;justify-content:space-between;align-items:end;flex-wrap:wrap;gap:16px}.resume-bar .label{margin:0}.resume-actions{display:flex;gap:10px}.btn{font-family:var(--mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;border:1px solid var(--fg);padding:12px 18px;background:#03030399;transition:background .2s,color .2s}.btn:hover,.btn.solid{background:var(--fg);color:var(--bg)}.btn.solid:hover{background:transparent;color:var(--fg)}.resume-sheet{display:block;width:100%;background:#fff;border-radius:6px;overflow:hidden;box-shadow:0 30px 80px #0009,0 0 0 6px #ffffff0a;animation:frame-in 1s cubic-bezier(.2,.8,.2,1) both .3s;transition:transform .3s ease,box-shadow .3s ease}.resume-sheet:hover{transform:translateY(-3px);box-shadow:0 36px 90px #000000b3,0 0 0 6px #ffffff14}.resume-sheet img{display:block;width:100%;height:auto}@keyframes frame-in{0%{opacity:0;transform:translateY(30px) scale(.98)}}.exploring-page{padding:110px clamp(16px,5vw,64px) 120px;max-width:1200px;margin:0 auto}.exploring-page .label{margin-bottom:12px}.exploring-intro{margin:0 0 56px;max-width:520px;font-size:16px;line-height:1.7;color:#b4b4b4}.places{display:grid;gap:64px}.place{display:grid;grid-template-columns:minmax(220px,1fr) 2.2fr;gap:32px;align-items:start;padding-top:28px;border-top:1px solid var(--line);transition:transform .8s cubic-bezier(.2,.8,.2,1),opacity .8s ease}.place-meta{margin:0;font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.place h4{margin:14px 0 12px;font-size:26px;font-weight:500;letter-spacing:-.02em}.place-text{margin:0;font-size:15px;line-height:1.7;color:#b4b4b4;max-width:380px}.place-info,.place-photos{min-width:0}.place-photos{display:grid;gap:10px;grid-template-columns:repeat(3,1fr)}.place-photos.n2{grid-template-columns:repeat(2,1fr)}.place-photos button{padding:0;border:1px solid var(--line);background:#111;cursor:zoom-in;aspect-ratio:3 / 4;overflow:hidden;display:block}.place-photos.n2 button{aspect-ratio:4 / 3}.place-photos img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s cubic-bezier(.2,.8,.2,1),filter .4s;filter:saturate(.92)}.place-photos button:hover img{transform:scale(1.04);filter:none}.place-photos button:focus-visible{outline:2px solid var(--fg);outline-offset:2px}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;background:#000000eb;cursor:zoom-out;animation:fade-in .25s ease}.lightbox img{display:block;width:auto;height:auto;max-width:calc(100vw - 32px);max-height:calc(100vh - 96px);max-height:calc(100dvh - 96px);object-fit:contain;box-shadow:0 20px 60px #0009}.lightbox-close{position:absolute;top:16px;right:20px;background:none;border:0;color:var(--fg);font-size:36px;line-height:1;cursor:pointer}@keyframes fade-in{0%{opacity:0}}@media(max-width:800px){.place{grid-template-columns:1fr;gap:20px}.place-text{max-width:560px}}@media(max-width:560px){.place-photos{grid-template-columns:repeat(2,1fr)}.place-photos.n3 button:first-child{grid-column:span 2;aspect-ratio:4 / 3}}.subpage{padding:110px clamp(16px,5vw,64px) 120px;max-width:1200px;margin:0 auto}.subpage>.label{margin-bottom:48px}.skill-groups{display:grid;gap:44px}.skill-group{transition:transform .8s cubic-bezier(.2,.8,.2,1),opacity .8s ease}.skill-group h3{display:flex;align-items:baseline;gap:12px;margin:0 0 16px;font-size:22px;font-weight:500;letter-spacing:-.02em}.skill-group h3 span{font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--muted)}.chips{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}.chips li{padding:8px 14px;border:1px solid var(--line);background:#0303038c;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);font-size:14px;color:#d0d0d0;transition:border-color .2s,color .2s}.chips li:hover{border-color:#fff9;color:var(--fg)}.projects{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(320px,100%),1fr));gap:16px}.project{display:flex;flex-direction:column}.project:hover{transform:translateY(-3px)}.project h4{margin-top:32px}.project-sub{margin:0 0 18px!important;font-family:var(--mono);font-size:11px!important;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)!important}.project ul{margin:0 0 24px;padding-left:18px;display:grid;gap:10px;font-size:14px;line-height:1.6;color:#b0b0b0}.project-link{margin-top:auto;align-self:flex-start;font-family:var(--mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;border-bottom:1px solid var(--muted);padding-bottom:3px;transition:border-color .2s}.project:hover .project-link{border-color:var(--fg)}.menu-btn{display:none}@media(max-width:960px){.topbar{padding:18px 16px}.menu-btn{display:grid;place-content:center;gap:6px;width:40px;height:40px;padding:0;position:relative;z-index:2;background:none;border:1px solid var(--line);cursor:pointer}.menu-btn span{display:block;width:18px;height:1.5px;background:var(--fg);transition:transform .3s ease}.menu-open .menu-btn span:first-child{transform:translateY(3.75px) rotate(45deg)}.menu-open .menu-btn span:last-child{transform:translateY(-3.75px) rotate(-45deg)}.topbar nav{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1;flex-direction:column;justify-content:center;gap:6px;padding:80px 24px 40px;background:#030303f7;font-family:var(--sans);font-size:clamp(28px,8vw,44px);letter-spacing:-.02em;text-transform:none;opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s}.topbar nav a{padding:6px 0}.menu-open nav{opacity:1;visibility:visible}.mark{position:relative;z-index:2}}@media(max-width:480px){.resume-page,.exploring-page,.subpage{padding-top:96px}.resume-actions{width:100%}.resume-actions .btn{flex:1;text-align:center}.card{padding:24px 20px 26px}.card h4{margin-top:28px}.place h4{font-size:22px}.chips li{font-size:13px;padding:7px 12px}.lightbox-close{top:10px;right:14px}}
