.landing-shell{--landing-bg:#fff;--landing-ink:#0a0a0a;--landing-muted:#626262;--landing-tile:#ececec;--landing-line:#1a1a1a;--landing-surface-muted:#f7f7f7;--landing-radius:1rem;--motion-fast:.16s;--motion-standard:.24s;--motion-expressive:.42s;--ease-standard:cubic-bezier(.22, 1, .36, 1);--ease-expressive:cubic-bezier(.16, 1, .3, 1);background:var(--landing-bg);min-height:100svh;color:var(--landing-ink);overflow:hidden}.landing-shell button,.landing-shell input{font:inherit}.landing-shell button,.landing-shell a{-webkit-tap-highlight-color:transparent}.landing-shell :focus-visible{outline:2px solid var(--landing-ink);outline-offset:4px}.visually-hidden{clip:rect(0 0 0 0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.landing-main{justify-items:center;width:min(100% - 3rem,75rem);margin-inline:auto;padding-top:clamp(4rem,8.5vw,7.75rem);padding-bottom:clamp(4rem,8vw,7rem);display:grid}.landing-intro{place-items:center;width:100%;min-height:12.5rem;display:grid;position:relative}.photo-strip{--photo-gap:1.25rem;--photo-loop-offset:.625rem;z-index:0;inset-block:0;pointer-events:none;width:100vw;position:absolute;left:50%;overflow:visible;transform:translate(-50%)}.photo-strip:after{content:"";z-index:1;background:linear-gradient(90deg,#0000 14%,#ffffffb8 25%,#fffffff2 34% 66%,#ffffffb8 75%,#0000 86%);position:absolute;inset:0}.photo-strip__track{z-index:0;gap:var(--photo-gap);will-change:transform;width:max-content;height:100%;animation:88s linear infinite photo-strip-drift;display:flex;position:relative}.photo-strip__track:hover,.photo-strip__track:focus-within{animation-play-state:paused}.photo-strip__group{align-items:center;gap:var(--photo-gap);height:100%;margin:0;padding:0;list-style:none;display:flex}.photo-strip__tile{--photo-y:0rem;--photo-rotate:0deg;--photo-x:.3rem;--photo-float:.5rem;--photo-wobble:.85deg;width:auto;height:calc(100% - 2.5rem);aspect-ratio:var(--photo-aspect,1.35);background:var(--landing-bg);transform:translateY(var(--photo-y)) rotate(var(--photo-rotate));animation:photo-tile-jiggle var(--photo-speed,6s) ease-in-out infinite;animation-delay:var(--photo-delay,0s);transform-origin:50%;pointer-events:auto;border-radius:1rem;flex:none;overflow:hidden}.photo-strip__tile img{object-fit:cover;object-position:var(--photo-focus,50% 50%);width:100%;height:100%;transition:transform var(--motion-standard) var(--ease-standard);user-select:none;display:block}.photo-strip__tile:hover,.photo-strip__tile:focus-visible{z-index:2}.photo-strip__tile:hover img,.photo-strip__tile:focus-visible img{transform:scale(1.025)}.photo-strip__tile:nth-child(6n+1){--photo-y:-.4rem;--photo-rotate:-1.2deg;--photo-x:.36rem;--photo-float:.55rem;--photo-speed:5.4s;--photo-delay:-2.1s}.photo-strip__tile:nth-child(6n+2){--photo-y:.35rem;--photo-rotate:.85deg;--photo-x:.25rem;--photo-float:.45rem;--photo-wobble:.7deg;--photo-speed:6.2s;--photo-delay:-5.4s}.photo-strip__tile:nth-child(6n+3){--photo-y:-.2rem;--photo-rotate:-.65deg;--photo-x:.4rem;--photo-float:.6rem;--photo-wobble:1deg;--photo-speed:5.8s;--photo-delay:-3.6s}.photo-strip__tile:nth-child(6n+4){--photo-y:.45rem;--photo-rotate:1.15deg;--photo-x:.3rem;--photo-float:.5rem;--photo-wobble:.8deg;--photo-speed:6.7s;--photo-delay:-7.2s}.photo-strip__tile:nth-child(6n+5){--photo-y:-.3rem;--photo-rotate:.55deg;--photo-x:.34rem;--photo-float:.55rem;--photo-wobble:.9deg;--photo-speed:5.2s;--photo-delay:-4.8s}.photo-strip__tile:nth-child(6n){--photo-y:.25rem;--photo-rotate:-.95deg;--photo-x:.28rem;--photo-float:.48rem;--photo-wobble:.75deg;--photo-speed:6.4s;--photo-delay:-6.3s}.landing-intro__copy{z-index:2;width:min(100% - 3rem,39rem);color:var(--landing-ink);text-align:center;letter-spacing:-.035em;background:0 0;padding:0;font-size:clamp(1.05rem,2vw,1.38rem);line-height:1.35;position:relative}.landing-intro__copy h1,.landing-intro__copy p{font:inherit;margin:0;display:inline}.landing-intro__copy h1{font-weight:800}.landing-intro__copy h1:after{content:" "}.landing-intro__copy p{font-weight:400}.landing-intro__copy p strong{font-weight:600}@keyframes photo-strip-drift{to{transform:translate3d(calc(-50% - var(--photo-loop-offset)), 0, 0)}}@keyframes photo-tile-jiggle{0%,to{transform:translate3d(0, var(--photo-y), 0) rotate(var(--photo-rotate))}25%{transform:translate3d(var(--photo-x), calc(var(--photo-y) - var(--photo-float)), 0) rotate(calc(var(--photo-rotate) + var(--photo-wobble))) scale(1.008)}50%{transform:translate3d(calc(0rem - var(--photo-x)), calc(var(--photo-y) + var(--photo-float)), 0) rotate(calc(var(--photo-rotate) - var(--photo-wobble))) scale(.996)}75%{transform:translate3d(var(--photo-x), var(--photo-y), 0) rotate(calc(var(--photo-rotate) + var(--photo-wobble))) scale(1.005)}}.rag-question{text-align:center;width:min(100%,44rem);margin-top:clamp(4rem,7vw,6rem)}.rag-question__surface{border-radius:calc(var(--landing-radius) + .2rem);transition:border-color var(--motion-standard) var(--ease-standard), background-color var(--motion-standard) var(--ease-standard), box-shadow var(--motion-standard) var(--ease-standard);background:0 0;border:1px solid #0000}.rag-question[data-ask-state=pending] .rag-question__surface,.rag-question[data-ask-state=answered] .rag-question__surface,.rag-question[data-ask-state=error] .rag-question__surface{background:var(--landing-surface-muted);border-color:#d8d8d8;box-shadow:0 .8rem 2.4rem #0000000d}.rag-question__form{grid-template-columns:minmax(0,1fr) 10.5rem;gap:1.25rem;display:grid;position:relative}.rag-mascot{--mascot-typing-travel-x:0px;--mascot-travel-x:8rem;--mascot-travel-y:0rem;--mascot-out-x:4.4rem;--mascot-out-y:-3rem;--mascot-return-x:3.84rem;--mascot-return-y:-2.25rem;z-index:2;pointer-events:auto;touch-action:manipulation;transform-origin:50% 100%;will-change:transform;width:3.1rem;height:2.3rem;position:absolute;bottom:calc(100% - .15rem);left:calc(100% - 14.75rem)}.rag-mascot:before{content:"";position:absolute;inset:-.35rem}.rag-mascot__speech{z-index:3;border:1px solid var(--landing-ink);background:var(--landing-bg);width:max-content;max-width:min(16rem,72vw);box-shadow:none;text-align:left;opacity:0;visibility:hidden;pointer-events:none;transform-origin:0 100%;transition:opacity var(--motion-standard) var(--ease-standard), transform var(--motion-expressive) var(--ease-expressive), visibility 0s linear var(--motion-standard);border-radius:.9rem;padding:.62rem .78rem;font-size:.78rem;line-height:1.35;position:absolute;bottom:calc(100% + 2.2rem);left:calc(100% - 14.5rem);right:auto;transform:translateY(.35rem)scale(.94)}.rag-mascot__speech:after{content:"";z-index:2;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 12'%3E%3Cpath d='M0 0h20L10 12Z' fill='white'/%3E%3Cpath d='M.5.5 10 11.5 19.5.5' fill='none' stroke='black' stroke-width='1' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") 50%/100% 100% no-repeat;border:0;width:1.25rem;height:.72rem;position:absolute;bottom:-.701rem;left:.67rem;right:auto}.rag-mascot__speech[data-visible=true]{opacity:1;visibility:visible;transition-delay:0s;transform:translateY(0)scale(1)}.rag-mascot__figure{transform-origin:50% 100%;will-change:transform;width:100%;height:100%;animation:3.6s cubic-bezier(.45,0,.55,1) infinite rag-mascot-bob;display:block;overflow:visible}.rag-mascot__silhouette{transform-box:fill-box;transform-origin:50% 100%;will-change:transform;animation:5.6s cubic-bezier(.37,0,.23,1) infinite rag-mascot-silhouette-idle}.rag-mascot__outline{fill:var(--landing-bg);stroke:var(--landing-ink);stroke-width:2.35px;stroke-linecap:round;stroke-linejoin:round}.rag-mascot__eye{fill:var(--landing-ink);transform-box:fill-box;transform-origin:50%;transition:transform .16s ease-out}.rag-mascot__gaze{--mascot-gaze-x:0px;--mascot-gaze-y:0px;transform:translate(var(--mascot-gaze-x), var(--mascot-gaze-y));transform-box:fill-box;transform-origin:50%;will-change:transform;transition:transform .14s ease-out}[data-mascot-state=typing] .rag-mascot{animation:13.2s cubic-bezier(.45,0,.55,1) infinite rag-mascot-typing-glide}[data-mascot-state=typing] .rag-mascot__eyes{animation:13.2s ease-in-out infinite rag-mascot-eyes-glance}[data-mascot-state=typing] .rag-mascot__silhouette{animation:3.3s cubic-bezier(.37,0,.23,1) infinite rag-mascot-silhouette-curious}[data-mascot-pat=active] .rag-mascot__silhouette{animation:.72s cubic-bezier(.22,1,.36,1) both rag-mascot-silhouette-pat}[data-mascot-pat=active] .rag-mascot__eye{transition:none;animation:.62s cubic-bezier(.22,1,.36,1) both rag-mascot-eye-pat}[data-mascot-pat=active] .rag-mascot__eye:nth-child(2){animation-delay:24ms}[data-mascot-state=jumping] .rag-mascot{animation:1.05s cubic-bezier(.52,.02,.25,1) both rag-mascot-submit-jump}[data-mascot-state=jumping] .rag-mascot__figure{animation:none}[data-mascot-state=jumping] .rag-mascot__silhouette{animation:1.05s cubic-bezier(.52,.02,.25,1) both rag-mascot-silhouette-jump}[data-mascot-state=success] .rag-mascot__silhouette{animation:rag-mascot-success .7s var(--ease-standard) both}[data-mascot-state=error] .rag-mascot__silhouette{animation:rag-mascot-error .52s var(--ease-standard) both}@keyframes rag-mascot-silhouette-idle{0%,72%,to{transform:translateY(0)scale(1)}80%{transform:translateY(-.8px)scale(.985,1.025)}88%{transform:translateY(.2px)scale(1.018,.97)}95%{transform:translateY(-.35px)scale(.995,1.01)}}@keyframes rag-mascot-bob{0%,to{transform:translateY(0)scaleY(.98)}50%{transform:translateY(-5px)scaleY(1.02)}}@keyframes rag-mascot-typing-glide{0%,to{transform:translate(0,0)rotate(-.6deg)}8%{transform:translate3d(calc((0px - var(--mascot-typing-travel-x)) * .08), -.2rem, 0) rotate(-1.8deg)}18%{transform:translate3d(calc((0px - var(--mascot-typing-travel-x)) * .22), -.08rem, 0) rotate(.8deg)}31%{transform:translate3d(calc((0px - var(--mascot-typing-travel-x)) * .54), -.24rem, 0) rotate(-1.2deg)}43%{transform:translate3d(calc((0px - var(--mascot-typing-travel-x)) * .84), -.1rem, 0) rotate(1deg)}50%{transform:translate3d(calc(0px - var(--mascot-typing-travel-x)), -.22rem, 0) rotate(-.7deg)}58%{transform:translate3d(calc((0px - var(--mascot-typing-travel-x)) * .88), -.07rem, 0) rotate(1.5deg)}70%{transform:translate3d(calc((0px - var(--mascot-typing-travel-x)) * .6), -.23rem, 0) rotate(-1deg)}83%{transform:translate3d(calc((0px - var(--mascot-typing-travel-x)) * .28), -.08rem, 0) rotate(1.2deg)}93%{transform:translate3d(calc((0px - var(--mascot-typing-travel-x)) * .08), -.2rem, 0) rotate(-1.3deg)}}@keyframes rag-mascot-silhouette-curious{0%,to{transform:translateY(0)scale(1)}18%{transform:translateY(.7px)scale(1.045,.92)}34%{transform:translateY(-.9px)scale(.975,1.075)}64%{transform:translateY(-.25px)scale(.992,1.025)}}@keyframes rag-mascot-silhouette-pat{0%,to{transform:translateY(0)scale(1)}18%{transform:translateY(.4px)scale(1.035,.94)}35%{transform:translateY(1.4px)scale(1.09,.82)}56%{transform:translateY(-.8px)scale(.965,1.075)}76%{transform:translateY(.25px)scale(1.025,.965)}}@keyframes rag-mascot-eye-pat{0%,24%,to{transform:scaleY(1)}34%,50%{transform:translateY(.6px)scaleY(.08)}68%{transform:scaleY(1.08)}}@keyframes rag-mascot-eyes-glance{0%,45%{transform:translate(-1.4px)}50%{transform:translate(0)}55%,95%{transform:translate(1.4px)}to{transform:translate(0)}}@keyframes rag-mascot-submit-jump{0%{transform:translate(0,0)rotate(0)}10%{transform:translateY(.08rem)rotate(-1deg)}35%{transform:translate3d(var(--mascot-out-x), var(--mascot-out-y), 0) rotate(8deg)}52%{transform:translate3d(var(--mascot-travel-x), var(--mascot-travel-y), 0) rotate(0deg)}61%{transform:translate3d(var(--mascot-travel-x), calc(var(--mascot-travel-y) - .18rem), 0) rotate(-2deg)}70%{transform:translate3d(var(--mascot-travel-x), var(--mascot-travel-y), 0) rotate(0deg)}84%{transform:translate3d(var(--mascot-return-x), var(--mascot-return-y), 0) rotate(-6deg)}to{transform:translate(0,0)rotate(0)}}@keyframes rag-mascot-silhouette-jump{0%,to{transform:translateY(0)scale(1)}9%{transform:translateY(.6px)scale(1.09,.86)}18%{transform:translateY(-1px)scale(.91,1.12)}35%{transform:translateY(-.4px)scale(.96,1.055)}48%{transform:translateY(.4px)scale(1.035,.94)}52%{transform:translateY(1.2px)scale(1.16,.78)}61%{transform:translateY(-.6px)scale(.94,1.09)}70%{transform:translateY(0)scale(1)}82%{transform:translateY(-.7px)scale(.92,1.08)}}@keyframes rag-mascot-success{0%,to{transform:translateY(0)scale(1)}38%{transform:translateY(-.24rem)scale(1.06,.94)}68%{transform:translateY(.06rem)scale(.98,1.02)}}@keyframes rag-mascot-error{0%,to{transform:translate(0)scale(1)}30%{transform:translate(-.18rem)scale(.98,1.02)}58%{transform:translate(.16rem)scale(1.01,.99)}78%{transform:translate(-.06rem)scale(1)}}.rag-question__form input,.rag-question__form button,.landing-button{border:1px solid var(--landing-line);border-radius:.85rem;min-height:3.25rem}.rag-question__form input{background:var(--landing-bg);width:100%;color:var(--landing-ink);padding:.65rem 1rem}.rag-question__form button{border-color:var(--landing-ink);background:var(--landing-ink);color:var(--landing-bg);cursor:pointer;padding-inline:1.2rem}.rag-question__form button:disabled{cursor:wait;opacity:.68}.rag-question__response-actions button{min-height:2.75rem;color:var(--landing-ink);cursor:pointer;background:0 0;border:0;font-size:.78rem}.rag-question__response-actions [data-rag-reset]{color:var(--landing-muted)}.rag-question__response{opacity:0;height:0;transition:opacity var(--motion-fast) var(--ease-standard);align-content:start;justify-items:center;padding-inline:1rem;display:grid;overflow:hidden}.rag-question[data-ask-state=pending] .rag-question__response,.rag-question[data-ask-state=error] .rag-question__response{opacity:1;align-content:center;height:20rem;padding-block:1.1rem}.rag-question[data-ask-state=answered] .rag-question__response{opacity:1;height:20rem;padding-block:1rem 1.25rem;overflow-y:auto}.rag-question__status{color:var(--landing-muted);margin:0;font-size:.8rem}.rag-question__response article{text-align:left;width:100%;transition:opacity var(--motion-fast) var(--ease-standard);background:0 0;border:0;border-top:1px solid #d8d8d8;border-radius:0;padding:1.15rem .4rem .25rem}.rag-question__response article p{white-space:pre-line;margin:0}.landing-shell .rag-question__journey{width:fit-content;color:var(--landing-muted);font:inherit;text-align:center;cursor:pointer;background:0 0;border:0;margin:.85rem auto 0;padding:0;font-size:.68rem;line-height:1.5;display:block}.landing-shell .rag-question__journey span{text-underline-offset:.16em;text-decoration:underline 1px}.rag-question__response-actions{justify-content:center;gap:1rem;display:flex}.rag-question__typing-link{color:var(--landing-ink);margin:.8rem 0 0;font-size:.76rem}.rag-question__typing-link a{color:inherit;text-decoration:none}.rag-question__typing-link a span:last-child{text-underline-offset:.16em;text-decoration:underline 1px}.github-contributions{--contribution-cell:.68rem;--contribution-gap:.22rem;border-block:1px solid #d7d7d7;align-content:start;gap:.85rem;width:min(100%,44rem);min-height:12.5rem;margin-top:clamp(1.75rem,4vw,3rem);padding:1rem 0;display:grid}.github-contributions__header,.github-contributions__footer{color:var(--landing-muted);justify-content:space-between;align-items:center;gap:1rem;padding-inline:.2rem;font-size:.72rem;display:flex}.github-contributions__header h2{color:var(--landing-ink);margin:0;font-size:.85rem}.github-contributions__header a{color:inherit;text-underline-offset:.16em}.github-contributions__scroll{overscroll-behavior-inline:contain;scrollbar-width:thin;width:100%;overflow-x:auto}.github-contributions__canvas{width:calc((var(--contribution-weeks,53) * var(--contribution-cell)) + ((var(--contribution-weeks,53) - 1) * var(--contribution-gap)));gap:.45rem;min-width:100%;display:grid}.github-contributions__months,.github-contributions__weeks{grid-template-columns:repeat(var(--contribution-weeks,53), var(--contribution-cell));column-gap:var(--contribution-gap);display:grid}.github-contributions__months{min-height:.9rem;color:var(--landing-muted);font-size:.62rem}.github-contributions__months span{white-space:nowrap;overflow:hidden}.github-contributions__weeks{grid-template-rows:repeat(7, var(--contribution-cell));row-gap:var(--contribution-gap)}.github-contributions__week{grid-template-rows:repeat(7, var(--contribution-cell));row-gap:var(--contribution-gap);display:grid}[data-contribution-day],.github-contributions__legend i{width:var(--contribution-cell);height:var(--contribution-cell);background:#ededed;border-radius:.18rem;display:block}[data-level="1"]{background:#9be9a8}[data-level="2"]{background:#40c463}[data-level="3"]{background:#30a14e}[data-level="4"]{background:#216e39}.github-contributions__legend{align-items:center;gap:.3rem;display:flex}.github-contributions[data-state=loading] .github-contributions__scroll,.github-contributions[data-state=loading] .github-contributions__legend,.github-contributions[data-state=unavailable] .github-contributions__scroll,.github-contributions[data-state=unavailable] .github-contributions__legend{visibility:hidden}.github-contributions[data-state=unavailable] [data-contributions-total]{color:var(--landing-muted);font-size:.7rem}.github-contributions[data-state=unavailable] [data-contributions-total]:after{content:"GitHub activity is unavailable right now.";font-size:.7rem}.github-contributions[data-state=unavailable] [data-contributions-total]{font-size:0}.profile-links{width:min(100%,28rem);margin-top:clamp(2.5rem,6vw,5rem)}.profile-links__facts{gap:.9rem;margin:0;padding:0;font-size:clamp(.92rem,1.7vw,1.08rem);list-style:none;display:grid}.profile-links__facts li{grid-template-columns:1.65rem minmax(0,1fr);align-items:center;gap:.8rem;display:grid}.profile-links__facts svg{stroke-width:1.7px;width:1.5rem;height:1.5rem}.profile-links__facts a{overflow-wrap:anywhere;text-underline-offset:.18em;width:fit-content}.profile-links__actions{gap:.85rem;width:min(100%,26rem);margin:2.75rem auto 0;display:grid}.resume-choice{width:100%;margin-inline:auto;position:relative}.resume-choice.is-expanded{padding-right:3rem}.landing-button.resume-choice__trigger{width:min(100%,12.75rem);margin-inline:auto;display:flex}.resume-choice.is-expanded .resume-choice__trigger{border-radius:.75rem;width:2.35rem;height:100%;padding:0;font-size:1.15rem;position:absolute;top:0;right:0}.resume-choice__trigger.is-bubbling{animation:resume-bubble var(--motion-expressive) var(--ease-standard) both}.resume-choice__options{grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem;display:grid}.resume-choice__options[hidden]{display:none}.resume-choice.is-expanded .resume-choice__option:first-child{animation:resume-split-left var(--motion-expressive) var(--ease-expressive) both}.resume-choice.is-expanded .resume-choice__option:last-child{animation:resume-split-right var(--motion-expressive) var(--ease-expressive) both}.portfolio-dialog{width:min(74rem,100% - 2rem);max-width:none;max-height:calc(100dvh - 2rem);color:var(--landing-ink);background:0 0;border:0;padding:0}.portfolio-dialog::backdrop{backdrop-filter:blur(4px);background:#0a0a0a61}.portfolio-dialog__surface{--portfolio-surface-padding:clamp(1.25rem, 4vw, 2.5rem);border:1px solid var(--landing-ink);background:var(--landing-bg);border-radius:1.15rem;grid-template-rows:auto minmax(0,1fr);max-height:calc(100dvh - 2rem);padding:0;display:grid;overflow:hidden}.portfolio-dialog[open] .portfolio-dialog__surface{animation:portfolio-dialog-enter .32s var(--ease-expressive) both}.portfolio-dialog__header{z-index:2;padding:var(--portfolio-surface-padding);background:#fff;justify-content:space-between;align-items:flex-start;gap:2rem;margin:0;display:flex;position:relative;box-shadow:0 1px #e2e2e2}.portfolio-dialog__body{min-height:0;padding:clamp(1.5rem, 4vw, 2.5rem) var(--portfolio-surface-padding) var(--portfolio-surface-padding);overflow-y:auto}.portfolio-dialog__header p{color:#666;letter-spacing:.12em;text-transform:uppercase;margin:0 0 .35rem;font-size:.72rem}.portfolio-dialog__header h2{letter-spacing:-.045em;margin:0;font-size:clamp(1.8rem,5vw,3.2rem);line-height:1}.portfolio-dialog__header button{border:1px solid var(--landing-ink);width:2.5rem;height:2.5rem;color:inherit;font:inherit;cursor:pointer;background:0 0;border-radius:50%;flex:none;padding:0;font-size:1.4rem}.portfolio-dialog__list{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:1fr;align-items:stretch;gap:clamp(1rem,2.5vw,1.5rem);margin:0;padding:0;list-style:none;display:grid}.portfolio-dialog__list>li{z-index:0;min-width:0;position:relative}.portfolio-dialog__list>li:hover,.portfolio-dialog__list>li:focus-within{z-index:2}.portfolio-project{--project-tilt:-.18deg;min-width:0;height:100%;color:inherit;transform:rotate(var(--project-tilt));transform-origin:50%;background:#fff;border:1px solid #c5c5c5;border-radius:1rem;grid-template-rows:auto auto 1fr auto;gap:.9rem;padding:.7rem;display:grid}.portfolio-dialog__list>li:nth-child(2n) .portfolio-project{--project-tilt:.18deg}.portfolio-dialog__list>li:nth-child(3n) .portfolio-project{--project-tilt:.08deg}.portfolio-project__media{aspect-ratio:16/10;background:#ededed;border:1px solid #d2d2d2;border-radius:.72rem;min-height:0;overflow:hidden}.portfolio-project__media img{object-fit:cover;object-position:top center;width:100%;height:100%;display:block}.portfolio-project__media-placeholder{color:#777;text-align:center;background:linear-gradient(135deg,#fff9,#0000 45%),#ededed;place-content:center;gap:.65rem;display:grid}.portfolio-project__media-placeholder svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px;width:2.25rem;margin-inline:auto}.portfolio-project__media-placeholder span{letter-spacing:.08em;text-transform:uppercase;font-size:.7rem}.portfolio-project__intro{align-content:start;gap:.55rem;padding-inline:.15rem;display:grid}.portfolio-project__intro h3{letter-spacing:-.02em;margin:0;font-size:clamp(1rem,2vw,1.22rem);line-height:1.25}.portfolio-project__meta{justify-content:space-between;align-items:center;gap:.75rem;min-height:2.25rem;display:flex}.portfolio-project__category{color:#555;letter-spacing:.035em;border:1px solid #aaa;border-radius:999px;width:fit-content;padding:.2rem .48rem;font-size:.62rem;font-weight:600;line-height:1.2}.portfolio-project__story{flex-direction:column;gap:.8rem;min-width:0;padding-inline:.15rem;display:flex}.portfolio-project__story>p{color:#464646;margin:0;font-size:.8rem;line-height:1.5}.portfolio-project__facts{height:var(--portfolio-project-facts-height,auto);border-top:1px solid #d2d2d2;grid-template-columns:minmax(5.5rem,.55fr) minmax(0,1.45fr);align-content:start;gap:.85rem;margin:0;padding:.8rem .15rem 0;display:grid}.portfolio-project__facts>div{align-content:start;gap:.45rem;display:grid}.portfolio-project__facts dt{color:#777;letter-spacing:.1em;text-transform:uppercase;font-size:.64rem}.portfolio-project__facts dd{gap:.45rem;margin:0;font-size:.82rem;display:grid}.portfolio-project__roles{color:#555;gap:.3rem;font-size:.72rem;line-height:1.45;display:grid}.portfolio-project__tags{height:var(--portfolio-project-tags-height,auto);flex-wrap:wrap;align-content:flex-start;align-items:flex-start;gap:.45rem;margin:auto 0 0;padding:0;list-style:none;display:flex}.portfolio-project__tags li{color:#555;border:1px solid #bdbdbd;border-radius:999px;padding:.24rem .48rem;font-size:.64rem}.portfolio-project__links{flex-wrap:wrap;gap:.45rem;display:flex;position:relative}.portfolio-project__links a{width:2.25rem;height:2.25rem;color:inherit;background:#f1f1ef;border:0;border-radius:.5rem;justify-content:center;align-items:center;text-decoration:none;display:inline-flex;position:relative}.portfolio-project__links>a>svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:1.15rem;height:1.15rem}.portfolio-project__link--repository>svg path:first-child{fill:currentColor;stroke:none}.portfolio-project__link-preview{z-index:5;opacity:0;visibility:hidden;transform-origin:calc(100% - 1.4rem) 100%;width:12rem;transition:opacity var(--motion-fast) var(--ease-standard), transform var(--motion-standard) var(--ease-expressive), visibility 0s linear var(--motion-standard);pointer-events:none;background:#fff;border:1px solid #bdbdbd;border-radius:.25rem;padding:.42rem .42rem .65rem;position:absolute;bottom:calc(100% + .65rem);right:-.35rem;transform:translateY(.35rem)rotate(-1.5deg)scale(.97);box-shadow:0 .7rem 1.5rem #00000024}.portfolio-project__link-preview:after{content:attr(data-preview-label);color:#333;text-align:center;text-overflow:ellipsis;white-space:nowrap;margin-top:.48rem;font-size:.68rem;line-height:1;display:block;overflow:hidden}.portfolio-project__link-preview-media{aspect-ratio:16/9;color:#777;background:linear-gradient(135deg,#ffffffad,#0000 48%),#ebebeb;border:1px solid #d5d5d5;place-content:center;gap:.35rem;display:grid;overflow:hidden}.portfolio-project__link-preview-media:after{content:attr(data-project-title)}.portfolio-project__link-preview-media svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px;width:2rem;height:2rem}.portfolio-project__links a:hover .portfolio-project__link-preview,.portfolio-project__links a:focus-visible .portfolio-project__link-preview{opacity:1;visibility:visible;transition-delay:0s;transform:translateY(0)rotate(-1.5deg)scale(1)}.portfolio-dialog__header button:focus-visible,.portfolio-project__links a:focus-visible{outline:2px solid var(--landing-ink);outline-offset:3px}.portfolio-project__links a:hover{background:#e7e7e4}.profile-links__actions>.landing-button{width:min(100%,12.75rem);margin-inline:auto}.landing-button{cursor:pointer;justify-content:center;align-items:center;padding:.65rem 1rem;text-decoration:none;display:inline-flex}.landing-button--dark{border-color:var(--landing-ink);background:var(--landing-ink);color:var(--landing-bg)}.landing-button--dark:disabled{cursor:not-allowed}.landing-button--light{background:var(--landing-bg);color:var(--landing-ink)}@keyframes resume-bubble{0%{border-radius:.85rem;transform:scale(1)}30%{border-radius:999px;transform:scale(.86,1.12)}58%{border-radius:1.35rem;transform:scale(1.08,.92)}80%{border-radius:1rem;transform:scale(.97,1.04)}to{border-radius:.85rem;transform:scale(1)}}@keyframes resume-split-left{0%{opacity:0;transform:translate(52%)scale(.72)}68%{opacity:1;transform:translate(-.25rem)scale(1.025)}to{opacity:1;transform:translate(0)scale(1)}}@keyframes resume-split-right{0%{opacity:0;transform:translate(-52%)scale(.72)}68%{opacity:1;transform:translate(.25rem)scale(1.025)}to{opacity:1;transform:translate(0)scale(1)}}@keyframes portfolio-dialog-enter{0%{opacity:0;transform:translateY(.75rem)scale(.985)}to{opacity:1;transform:translateY(0)scale(1)}}@media (width<=620px){.landing-main{width:min(100% - 1.5rem,75rem);padding-top:3.8rem}.landing-intro{min-height:15rem}.photo-strip{--photo-gap:.75rem;--photo-loop-offset:.375rem;inset-block:.5rem}.photo-strip:after{background:linear-gradient(90deg,#ffffff73 0%,#ffffffeb 12% 88%,#ffffff73 100%)}.photo-strip__track{animation-duration:44s}.photo-strip__tile{width:auto}.landing-intro__copy{width:min(100% - 1.5rem,21rem);font-size:1rem}.rag-question{margin-top:3.25rem}.rag-question__form{grid-template-columns:minmax(0,1fr);gap:.75rem}.rag-mascot{--mascot-travel-x:0rem;--mascot-travel-y:5rem;--mascot-out-x:0rem;--mascot-out-y:-.75rem;--mascot-return-x:0rem;--mascot-return-y:-.3rem;left:calc(100% - 3.35rem);scale:.8}.rag-mascot__speech{transform-origin:100% 100%;max-width:min(15rem,100vw - 3rem);bottom:calc(100% + 1.9rem);left:auto;right:.8rem}.rag-mascot__speech:after{left:auto;right:.67rem}.rag-question__response{min-height:0}.rag-question[data-ask-state=pending] .rag-question__response,.rag-question[data-ask-state=error] .rag-question__response,.rag-question[data-ask-state=answered] .rag-question__response{height:min(30rem,62svh)}.profile-links{margin-top:2.5rem;padding-inline:.5rem}.portfolio-dialog{width:100%;max-height:calc(100dvh - .5rem);margin:0;inset:auto 0 0}.portfolio-dialog__surface{border-bottom:0;border-left:0;border-right:0;border-radius:1.2rem 1.2rem 0 0;max-height:calc(100dvh - .5rem)}.portfolio-dialog__body{padding:1rem}.portfolio-dialog__list{grid-template-columns:minmax(0,1fr);grid-auto-rows:auto}.portfolio-project{--project-tilt:0deg;grid-template-rows:auto;height:auto;padding:.6rem}.portfolio-project__intro h3{min-height:0}.portfolio-dialog__list>li:nth-child(2n) .portfolio-project,.portfolio-dialog__list>li:nth-child(3n) .portfolio-project{--project-tilt:0deg}}@media (prefers-reduced-motion:reduce){.photo-strip__track,.photo-strip__tile{animation:none}.rag-mascot,.rag-mascot *,.rag-mascot__speech,.resume-choice,.resume-choice__trigger,.resume-choice__option{transition:none;animation:none!important}.portfolio-dialog[open] .portfolio-dialog__surface{animation:none}.rag-question__response article{transition:opacity .01ms linear}.github-activity,.github-activity__card{transition:none!important}}.github-activity{z-index:20;top:max(1rem, env(safe-area-inset-top));color:#0a0a0a;opacity:0;pointer-events:none;width:min(22rem,100vw - 2rem);transition:opacity var(--motion-standard) var(--ease-standard);position:fixed;left:50%;transform:translate(-50%)}.github-activity__card{transition:transform var(--motion-standard) var(--ease-standard);background:#fff;border:1px solid #0a0a0a;border-radius:.85rem;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:.75rem;padding:.8rem .85rem;display:grid;box-shadow:0 .45rem 1.15rem #00000029}.github-activity__mark{fill:currentColor;width:1.15rem;height:1.15rem}.github-activity__content{overflow-wrap:anywhere;min-width:0;color:inherit;gap:.2rem;font-size:.82rem;line-height:1.35;text-decoration:none;display:grid}.github-activity__content[href]{text-underline-offset:.16em;text-decoration:underline}.github-activity__content time{color:#626262;font-size:.72rem}.github-activity__card button{width:2.25rem;height:2.25rem;color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:.35rem;padding:0;font-size:1.2rem;line-height:1}.github-activity__card button:focus-visible{outline-offset:2px;outline:2px solid #0a0a0a}.github-activity[data-state=entering],.github-activity[data-state=visible]{opacity:1;pointer-events:auto}.github-activity[data-state=hidden] .github-activity__card,.github-activity[data-state=entering] .github-activity__card,.github-activity[data-state=leaving] .github-activity__card{transform:translateY(-.65rem)}.github-activity[data-state=visible] .github-activity__card{transform:translateY(0)}
