html{box-sizing:border-box;min-height:100%;font-family:Raleway,sans-serif;color:#ebeef1;font-weight:300;background:#000}*,*:before,*:after{box-sizing:inherit}body{margin:0;min-height:100vh;min-height:100svh;background:linear-gradient(#0003,#00000075),url(./city-of-london-1920-DhP9nYvh.jpg) center/cover no-repeat;scrollbar-width:none}::-webkit-scrollbar{width:0;background:transparent}a{color:inherit;text-decoration:none}p,h1{margin:0}.site-shell{min-height:100vh;min-height:100svh;display:flex;align-items:center;justify-content:center;padding:32px}@supports (min-height: 100dvh){body,.site-shell{min-height:100dvh}}.hero{width:min(100%,960px);display:flex;justify-content:center}.hero__panel{--wobble-rotate-x: 0deg;--wobble-rotate-y: 0deg;position:relative;width:fit-content;max-width:min(100%,32rem);display:flex;flex-direction:column;align-items:flex-start;gap:22px;padding:24px 34px 22px;text-align:left;--light-x: 50%;--light-y: 50%;background:linear-gradient(180deg,#221a153d,#0f0e106b);border:1px solid rgba(255,236,214,.14);box-shadow:0 18px 40px -22px #00000047,0 8px 22px -18px #0000002e,inset 0 1px #fff4e508;-webkit-backdrop-filter:blur(8px) saturate(1.02);backdrop-filter:blur(8px) saturate(1.02);clip-path:polygon(0 0,100% 0,100% calc(100% - 28px),calc(100% - 28px) 100%,0 100%);cursor:pointer;transform-origin:center center;transform-style:preserve-3d;will-change:transform}.hero__panel:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,rgba(255,246,232,.045) 0%,rgba(255,243,226,.014) 18%,transparent 46%),radial-gradient(circle at var(--light-x) var(--light-y),rgba(255,240,220,.055) 0%,rgba(255,240,220,.02) 8%,transparent 18%),radial-gradient(120% 90% at 18% 0%,rgba(255,194,132,.045) 0%,transparent 44%);clip-path:inherit;pointer-events:none;background-blend-mode:screen;opacity:.62;transition:opacity .6s ease,background-position .18s ease}.hero__panel:after{content:"";position:absolute;top:1px;right:1px;bottom:1px;left:1px;border:1px solid rgba(255,244,230,.045);clip-path:polygon(0 0,100% 0,100% calc(100% - 27px),calc(100% - 27px) 100%,0 100%);pointer-events:none}.hero__panel:before,.hero__panel:after{z-index:0}.hero__panel>*{position:relative;z-index:1}.hero__panel--light-on:before{opacity:.74}.hero__panel--wobble{animation:hero-wobble-3d 1.04s linear}.hero__header{display:grid;gap:8px}.hero__header h1{font-size:clamp(2rem,5vw,3.2rem);line-height:.96;letter-spacing:.02em;font-weight:300}.hero__subtitle{font-size:clamp(.9rem,1.8vw,1.08rem);line-height:1.45;color:#cfc7bc;font-weight:300}.social-links{display:flex;align-items:center;justify-content:flex-start;gap:10px}.social-links__item{width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.1);border-radius:10px;background-color:#ffffff08;background-size:22px;background-position:center;background-repeat:no-repeat;opacity:.78;transition:transform .16s ease,opacity .16s ease,border-color .16s ease,background-color .16s ease}.social-links__item:hover,.social-links__item:focus-visible{opacity:1;transform:translateY(-1px);border-color:#ffffff2e;background-color:#ffffff0f}.social-links__item:focus-visible{outline:2px solid rgba(255,232,208,.28);outline-offset:3px}.social-links__item--github{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NDkxMSwgMjAxMy8xMC8yOS0xMTo0NzoxNiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzlFQkFERkU4NkJCMTFFM0FBNTJFRTMzNTJEMUJDNDYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzlFQkFERkQ4NkJCMTFFM0FBNTJFRTMzNTJEMUJDNDYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkU1MTc4QTJFOTlBMDExRTI5QTE1QkMxMDQ2QTg5MDREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU1MTc4QTJGOTlBMDExRTI5QTE1QkMxMDQ2QTg5MDREIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Kk5lQwAABYxJREFUeNrkm29oVXUYx3+7bM3V1FnbqlltrtXWtYRa1nqxooY5E7EhKWGuaTDBagol9SIMDCKICASj+cISw/DPi16ZBakrUBnoC7nNoTMWy6I1c+LmVq6t78N9jpyu555znt855+536IHPi939/jzP95zznN+/kzc1NaUitirwJJgPasF94DZQDG7hMqNgBFwEZ5kU+AH0R+lcXgQCJMBT4EXwLKgM2N7P4FvwJegCk6YKUA5eB23grogu2C/gc7AN/GGKABTsZtAOZqjc2DjYAT5kUfSNBNCkAGwGo1PTZ6PsQ4FuHLp3QD3YDR5QZtgZsAac1ElYokcGbATHDApesS/kUwf7GEkOKAK7wAvKbNsPXgZjYQowG3wNnlDxsONgCbgchgAU/GHwiIqXUT5o8hLBKwfcDA7FMHgrUR/iGLQEoGTyBWhQ8bUGjiFPR4A3QIuKv7VwLKIcQMnue5Dv0fjT/IwtAM3g+RyMBmkU+BXf3qc5Rx3xqDPBE7LjfkaCheCcj1HYKYe6JeBt8GcEo75L3HaJQ7+nfNQ/x7H9p67TFX4L1Pi4EocdfhsGH4BPwVbwqu0xGwI/8vT2N/77Gv+vAJSCO3n6PJ//Vjz72w62cPtORnfAwx7+1nBsW93ugGow7vOKtPkYa9eDl0Clxji9kuvW+yjb5tPncY7xet3MhjoFt2RzgIlU2DQL/O6017W/Be4BawXJqMCgTH+ToOxajvWG1+AmYVBlBglQKrxwmzIFoB9XCzt91CABpL6sti62JcBiXtKS2GMGCSD1pZxjvi7AKmED9PraYJAAG2yvVL+2yi7AImHl90C3QQJ03/B+97ZF1lCYVlN6BBV/BffykNQkoyF4H5grqJOkO6BR2NF2A4O35gifCOs0JjTW9vYaPPPbJ11LJAFqBRVoDf68wQLQI3BBUL424XPiY1lvDOb/ZwRla0iAOYIKv8dAgEFB2VtJgJmCChMxEEAyHigmAQoFFWbFQIDZgrKF0p2hmTEQQOQjCTAmKD8vBgJUCcqOkQBXBBXosEORwcEXKdmBjCskwICgQr5h0+BMW6i8V7LtNkAC9As7WWqwAM8Jy/cnhBMhspVKvq2eC0uwbxLrSWhMa+dpdJQLW6mRpLtpOlyuMcL7CTwErhoSPG2ApjQEuD3BQ0fp0ZJqlT6pZYpt0wieYh60nuWDGp2+At4xIPgt7IvU0jHzBkFdgD27HWDGNGyGFHHfulaXuTN0IkBjZ8EykJeDwKmPFtAXwN8TTltjrVkKfwcawXJW3G3v8DTYCKoiCLwGvAl6QthpbnU6J5jP2f1uh1Wgxbbxwv0qvT/vtZRGA6wuzs50+Pkb8JdgQtPMq1VJld7bnxtSzhjgJD5hzwEW611OZK6xlSvzeYbAsl3Cx4PK7ozodOl6t93hfJByqbzOVnYh+MdHhxfBLI1bnuoMhRx8imPMKgDR5LG/nrSVfddHpx8HeO4/ClmApsw+snXsdk7gYMat+r5Hp0sDCLAkxOA7nfrI1nGxx2tmQUb5x8FuzgvD4Dw4wNm2MIAA1SEF38cx+RaAeBCMZGlwb44GOyUhBD/CsTj24TatpddXq3L+RIVmXnE4QzjJMaSylvBxFdqzKHsVrDD8Dmj36sOvIx0unewHDRENg4MI0BH2FyP0RcZOlzW3Ib7VLvPqDK0z1PEq7bDmLVwCLgnr0AhvnUp/0eJp0k9m6HO4fUp2nGZODgUY5PzUJVlHkxg1TEfnjxqY8I6yb12SSjqLm7T9/Ax4TaW/+JxuIx862KcL4toBk1QFT1omXZLRHQHaL3Npl/r8jH3QjiGsbJ3kGd/fDo6WBWi31KG9a9xXMgzfw35tVfCR9l52dk8Ibe7htnq57YowfY7i4+lYWUL9z+1fAQYACqstE4NCc18AAAAASUVORK5CYII=);background-size:24px}.social-links__item--linkedin{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACsAAAAiCAYAAADGUiAIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGRTJBMTUwQTFDNzgxMUUyQjkxNEY3RUNEMkY1ODRBRCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGRTJBMTUwQjFDNzgxMUUyQjkxNEY3RUNEMkY1ODRBRCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZFMkExNTA4MUM3ODExRTJCOTE0RjdFQ0QyRjU4NEFEIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkZFMkExNTA5MUM3ODExRTJCOTE0RjdFQ0QyRjU4NEFEIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+pklCxAAAAVxJREFUeNpi+P//vwAQT/g/cGAB1A0MhDDDADsU2cEEHcv4H+zkQQEYCSlgYhg8QIGgb4Z8yH769GkVEAsxAgGIBvEHhXfQU/rHjx9PYlMHEqdxJiOYwbCF7B4c/toz0AFLSgZ7MBgd64JDbcqgS7PQdLsSiAWhaVUQxKdDxTC8KgUWatsILObeAqm7SEICfHx8ajRLBoTUYSvWgPgvEKfiKPZASWkapcmAWo5thaVxfADkmQF3LCkAT+VCVqVAa9BNrkaqZjBQckAqpz8AcRU/P/9ZNGV7BzSDQR3aRmw7YzAkA+fB1DYgGQDLV7NB6VhgNKnQvIrDlgZBjW5s6YxYeVLMGtDqlkpAF4h1kPhXgPgyyyB26HIkscjBGrIwh4Ic+AqIxWB8JobBDcSQK5HB7tjlyOX3YCwNcKXZK4O1p4C1NBgd66Jl22DhIHAHcW6ADuQuGAqDyQABBgDEQeePMIM7IgAAAABJRU5ErkJggg==);background-size:20px}@keyframes ripple-expand{0%{transform:scale(0);opacity:.25}to{transform:scale(1);opacity:0}}.ripple{position:absolute;border-radius:50%;background:#ffffff2e;pointer-events:none;animation:ripple-expand .6s ease-out forwards}@keyframes hero-idle-wobble{0%,50%,to{transform:perspective(1200px) rotateX(0) rotateY(0)}6.25%{transform:perspective(1200px) rotateX(2.48deg) rotateY(1.88deg)}12.5%{transform:perspective(1200px) rotateX(3.5deg) rotateY(3.47deg)}18.75%{transform:perspective(1200px) rotateX(2.48deg) rotateY(4.53deg)}25%{transform:perspective(1200px) rotateX(0) rotateY(4.9deg)}31.25%{transform:perspective(1200px) rotateX(-2.48deg) rotateY(4.53deg)}37.5%{transform:perspective(1200px) rotateX(-3.5deg) rotateY(3.47deg)}43.75%{transform:perspective(1200px) rotateX(-2.48deg) rotateY(1.88deg)}56.25%{transform:perspective(1200px) rotateX(2.48deg) rotateY(-1.88deg)}62.5%{transform:perspective(1200px) rotateX(3.5deg) rotateY(-3.47deg)}68.75%{transform:perspective(1200px) rotateX(2.48deg) rotateY(-4.53deg)}75%{transform:perspective(1200px) rotateX(0) rotateY(-4.9deg)}81.25%{transform:perspective(1200px) rotateX(-2.48deg) rotateY(-4.53deg)}87.5%{transform:perspective(1200px) rotateX(-3.5deg) rotateY(-3.47deg)}93.75%{transform:perspective(1200px) rotateX(-2.48deg) rotateY(-1.88deg)}}.hero__panel--idle{animation:hero-idle-wobble 8s linear infinite}@keyframes hero-wobble-3d{0%{transform:perspective(1200px) rotateX(0) rotateY(0)}16%{transform:perspective(1200px) rotateX(var(--wobble-rotate-x)) rotateY(var(--wobble-rotate-y))}34%{transform:perspective(1200px) rotateX(calc(var(--wobble-rotate-x) * -.62)) rotateY(calc(var(--wobble-rotate-y) * -.62))}52%{transform:perspective(1200px) rotateX(calc(var(--wobble-rotate-x) * .38)) rotateY(calc(var(--wobble-rotate-y) * .38))}70%{transform:perspective(1200px) rotateX(calc(var(--wobble-rotate-x) * -.22)) rotateY(calc(var(--wobble-rotate-y) * -.22))}84%{transform:perspective(1200px) rotateX(calc(var(--wobble-rotate-x) * .12)) rotateY(calc(var(--wobble-rotate-y) * .12));box-shadow:0 23px 58px #0000004a}to{transform:perspective(1200px) rotateX(0) rotateY(0)}}@media(prefers-reduced-motion:reduce){.social-links__item{transition:none}.hero__panel--wobble,.hero__panel--idle{animation:none}}@media screen and (min-width:760px){.hero__header h1,.hero__subtitle{white-space:nowrap}}@media screen and (max-width:640px){.site-shell{padding:20px}.hero__panel{width:fit-content;max-width:min(100%,28rem);gap:18px;padding:22px 24px 20px;clip-path:polygon(0 0,100% 0,100% calc(100% - 22px),calc(100% - 22px) 100%,0 100%)}.social-links{gap:8px}.social-links__item{width:40px;height:40px}}
