#root{min-height:100svh}:root{--linen:#f1ead8;--clay:#d5c7ad;--sage:#8a8e75;--sprout:#bec5a4;--bark:#68604d;--ink:#3f3b31;--paper:#fffaf0;--soft-shadow:0 18px 50px #68604d2e}*{box-sizing:border-box}html{scroll-behavior:smooth;scrollbar-width:none}html::-webkit-scrollbar{display:none}body::-webkit-scrollbar{display:none}body{background:radial-gradient(circle at 12% 14%, #bec5a480, transparent 28%), radial-gradient(circle at 86% 8%, #d5c7ad94, transparent 26%), linear-gradient(135deg, var(--linen), #fffaf0 45%, #f6efe0);color:var(--ink);-ms-overflow-style:none;margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;overflow-x:hidden}body:before{z-index:-1;pointer-events:none;content:"";transform:translateY(var(--page-drift,0));background-color:#0000;background-image:linear-gradient(#68604d0d 1px,#0000 1px),linear-gradient(90deg,#68604d0d 1px,#0000 1px);background-position:0 0,0 0;background-repeat:repeat,repeat;background-size:54px 54px;background-attachment:scroll,scroll;background-origin:padding-box,padding-box;background-clip:border-box,border-box;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#0000,#000 18% 82%,#0000);mask-image:linear-gradient(#0000,#000 18% 82%,#0000)}@supports (animation-timeline:view()){.scroll-scene{animation:linear both scene-drift;animation-timeline:view();animation-range:entry exit 112%}.float-layer{animation:linear both float-drift;animation-timeline:view();animation-range:entry exit}.float-layer.slow{animation-name:float-drift-slow}}@keyframes scene-drift{0%{opacity:1;transform:translateY(0)scale(1)}28%,68%{opacity:1;transform:translateY(0)scale(1)}to{opacity:.36;transform:translateY(-54px)scale(.99)}}@keyframes float-drift{0%{transform:translateY(34px)}to{transform:translateY(-34px)}}@keyframes float-drift-slow{0%{transform:translateY(14px)}to{transform:translateY(-22px)}}[data-reveal]{opacity:1;transition:opacity .45s,transform .45s;transform:translateY(0)}[data-reveal].is-visible{opacity:1;transform:translateY(0)}button,a{font:inherit}a{color:inherit}main{width:min(1180px,100% - 32px);margin:0 auto}.topbar{z-index:10;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#fffaf0db;border:1px solid #68604d2e;border-radius:8px;justify-content:space-between;align-items:center;gap:18px;margin:14px auto 38px;padding:10px 12px;display:flex;position:sticky;top:14px;box-shadow:0 10px 30px #68604d14}.brand,.nav-links a,.button,.back-button,.detail-links a,.detail-links span{color:var(--bark);background:#f1ead8b8;border:1px solid #68604d2e;border-radius:8px;text-decoration:none}.brand{cursor:pointer;align-items:center;padding:9px 12px;display:inline-flex}.nav-links{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.nav-links a{padding:8px 11px;transition:background .22s,border-color .22s,color .22s,box-shadow .22s,transform .22s}.nav-links a:hover,.nav-links a:focus-visible{background:linear-gradient(135deg, #bec5a4f2, #8a8e75c7), var(--sprout);color:#fffaf0;border-color:#8a8e756b;outline:none;transform:translateY(-2px);box-shadow:0 10px 24px #8a8e7547}.hero-section{grid-template-columns:minmax(260px,.86fr) minmax(320px,1.2fr);align-items:start;gap:44px;min-height:calc(100svh - 120px);padding:18px 0 72px;display:grid}.portrait-card{background:linear-gradient(160deg, var(--clay), var(--linen));width:min(100%,410px);box-shadow:var(--soft-shadow);border:1px solid #68604d2e;border-radius:8px;margin:0 auto;padding:24px;position:relative;transform:translateY(-46px)}.portrait-frame{background:#fffaf0b3;border:2px solid #68604d4d;border-radius:8px;place-items:center;min-height:440px;display:grid;overflow:hidden}.portrait-frame img{object-fit:cover;object-position:center;width:100%;height:100%;min-height:440px}.intro-copy{gap:14px;padding-top:0;display:grid}.eyebrow{color:var(--sage);letter-spacing:.12em;text-transform:uppercase;margin:0;font-size:.78rem;font-weight:900}h1,h2,h3,p{margin-top:0}h1{color:var(--bark);margin-bottom:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(3rem,7vw,6.7rem);line-height:.94}.hero-headline{--hero-type-duration:1.55s;--hero-rest-delay:1.7s;font-size:clamp(2.85rem,6.2vw,5.85rem);line-height:.9}.hero-type-name{white-space:nowrap;vertical-align:bottom;max-width:0;animation:hero-name-type var(--hero-type-duration) steps(13, end) .12s both;padding-bottom:.08em;display:inline-block;position:relative;overflow:hidden}.hero-type-name:after{background:var(--bark);content:"";width:.055em;animation:hero-type-caret .72s steps(1, end) 0s 3, hero-caret-hide 10ms linear var(--hero-rest-delay) forwards;position:absolute;top:.08em;bottom:.05em;right:0}.hero-headline-rest{opacity:0;animation:hero-rest-fade .7s ease var(--hero-rest-delay) forwards}@keyframes hero-name-type{0%{max-width:0}to{max-width:15ch}}@keyframes hero-type-caret{0%,to{opacity:1}50%{opacity:0}}@keyframes hero-caret-hide{to{opacity:0}}@keyframes hero-rest-fade{0%{opacity:0;filter:blur(5px)}to{opacity:1;filter:blur()}}.bounce-in-phrase{opacity:0;transform-origin:0;display:inline-block;transform:translateY(-115vh)scale(.98)}.pixel-curious,.pixel-builder{color:#0000;opacity:0;filter:none;text-shadow:.08em 0 #68604df2,-.08em 0 #8a8e75b8,0 .08em #d5c7add9;isolation:isolate;animation:1.35s steps(8,end) 2.05s both curious-pixel-fade;display:inline-block;position:relative;transform:translateY(12px)scale(.9)}.pixel-builder{animation-delay:3s}.pixel-curious:before,.pixel-curious:after,.pixel-builder:before,.pixel-builder:after{z-index:-1;background:var(--bark);content:"";width:.16em;height:.16em;image-rendering:pixelated;pointer-events:none;position:absolute}.pixel-curious:before,.pixel-builder:before{box-shadow:.24em .18em 0 var(--sage), .56em -.12em 0 var(--clay), .88em .3em 0 var(--bark), 1.22em -.02em 0 var(--sprout), 1.56em .24em 0 var(--clay), 1.95em -.16em 0 var(--bark), 2.32em .2em 0 var(--sage), 2.7em -.05em 0 var(--clay);animation:1.1s steps(5,end) 1.98s both curious-square-burst;top:.08em;left:.12em}.pixel-builder:before{animation-delay:2.93s}.pixel-curious:after,.pixel-builder:after{box-shadow:-.2em -.22em 0 var(--clay), -.48em .1em 0 var(--bark), -.82em -.28em 0 var(--sage), -1.12em .04em 0 var(--sprout), -1.45em -.16em 0 var(--bark), -1.82em .2em 0 var(--clay), -2.14em -.08em 0 var(--sage), -2.52em .14em 0 var(--bark);animation:1.15s steps(5,end) 2.04s reverse both curious-square-burst;bottom:.08em;right:.12em}.pixel-builder:after{animation-delay:2.99s}@keyframes curious-pixel-fade{0%{opacity:0;color:#0000;text-shadow:.22em 0 0 var(--sage), -.2em .12em 0 var(--clay), 0 -.18em 0 var(--bark);transform:translateY(16px)scale(.88)}26%{opacity:1;color:#0000;text-shadow:.16em -.08em 0 var(--sage), -.16em .08em 0 var(--clay), .08em .16em 0 var(--bark);transform:translateY(8px)scale(1.04)}52%{opacity:1;color:#68604d61;text-shadow:.08em 0 0 var(--sage), -.08em 0 0 var(--clay), 0 .08em 0 var(--bark);transform:translateY(0)scale(1)}to{opacity:1;color:var(--bark);text-shadow:none;transform:translateY(0)scale(1)}}@keyframes curious-square-burst{0%{opacity:0;transform:translateY(.24em)scale(.4)}32%{opacity:1;transform:translateY(0)scale(1.15)}72%{opacity:.9;transform:translateY(-.08em)scale(1)}to{opacity:0;transform:translateY(-.16em)scale(.85)}}.hero-section.is-visible .bounce-in-phrase{animation:1.85s cubic-bezier(.2,.82,.22,1) 2.25s both playful-drop-bounce}@keyframes playful-drop-bounce{0%{opacity:0;transform:translateY(-115vh)scale(.98)}42%{opacity:1;transform:translateY(34px)scale(1.07)}56%{transform:translateY(-24px)scale(.98)}68%{transform:translateY(16px)scale(1.04)}79%{transform:translateY(-11px)scale(.99)}88%{transform:translateY(7px)scale(1.02)}95%{transform:translateY(-4px)scale(1)}to{opacity:1;transform:translateY(0)scale(1)}}h2{color:var(--bark);margin-bottom:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(2.1rem,4vw,4.3rem);line-height:1}h3{color:var(--bark);font-family:Georgia,Times New Roman,serif;font-size:1.5rem}.intro-copy>p:not(.eyebrow),.hobby-note,.detail-hero>p:not(.eyebrow),.detail-content p,.detail-content li,.experience-item span{color:#3f3b31c7;font-size:1.06rem;line-height:1.72}.hero-actions,.detail-links{flex-wrap:wrap;gap:10px;display:flex}.social-links{gap:10px;display:flex}.portrait-social-links{justify-content:center;margin-top:16px}.social-links a{width:44px;height:44px;color:var(--bark);background:#fffaf0b8;border:1px solid #68604d2e;border-radius:8px;justify-content:center;align-items:center;font-size:1.1rem;font-weight:900;line-height:1;text-decoration:none;transition:background .22s,border-color .22s,color .22s,box-shadow .22s,transform .22s;display:inline-flex}.social-links a:hover,.social-links a:focus-visible{background:var(--sage);color:#fffaf0;border-color:#8a8e756b;outline:none;transform:translateY(-2px);box-shadow:0 10px 24px #8a8e7538}.social-links svg{fill:currentColor;width:21px;height:21px}.button,.back-button,.detail-links a,.detail-links span{justify-content:center;align-items:center;min-height:44px;padding:10px 16px;font-weight:800;display:inline-flex}.button.primary,.back-button{background:var(--sage);color:#fffaf0}.section{border-top:1px solid #68604d29;padding:76px 0}.section-heading{align-content:start;align-self:start;gap:10px;margin-bottom:28px;display:grid}.project-categories{gap:34px;display:grid}.project-category{gap:16px;display:grid}.project-category-copy{gap:8px;max-width:760px;display:grid}.project-category-copy h3{margin:0;font-size:clamp(1.45rem,2.6vw,2.3rem)}.project-category-copy p{color:#3f3b31b8;margin:0;font-size:1rem;font-weight:800;line-height:1.62}.project-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;display:grid}.flip-card{height:300px;color:var(--ink);cursor:pointer;perspective:1100px;background:0 0;border:0;border-radius:8px;padding:0;transition:opacity .75s,transform .75s,filter .45s}.flip-card:nth-child(3n+2){transition-delay:80ms}.flip-card:nth-child(3n){transition-delay:.16s}.flip-card:hover{filter:saturate(1.06)}.flip-inner{width:100%;height:100%;transform-style:preserve-3d;transition:transform .7s;display:block;position:relative}.flip-card:hover .flip-inner,.flip-card:focus-visible .flip-inner{transform:rotateY(180deg)}.card-face{backface-visibility:hidden;border:1px solid #68604d2e;border-radius:8px;flex-direction:column;justify-content:space-between;padding:22px;display:flex;position:absolute;inset:0;overflow:hidden;box-shadow:0 14px 30px #68604d1a}.card-face.front{background:var(--card-bg)}.card-face.back{background:var(--bark);color:#fffaf0;transform:rotateY(180deg)}.flip-card.sage,.detail-hero.sage{--card-bg:var(--sprout)}.flip-card.moss,.detail-hero.moss{--card-bg:var(--sage)}.flip-card.linen,.detail-hero.linen{--card-bg:var(--linen)}.flip-card.clay,.detail-hero.clay{--card-bg:var(--clay)}.flip-card.bark,.detail-hero.bark{--card-bg:#d0c7ad}.project-kind,.stack-line,.card-face small{letter-spacing:.08em;text-transform:uppercase;font-size:.78rem;font-weight:900}.card-face strong{color:var(--bark);font-family:Georgia,Times New Roman,serif;font-size:2rem;line-height:1}.card-face.back span{font-size:1.08rem;font-weight:800;line-height:1.45}.split{grid-template-columns:.6fr 1.4fr;gap:28px;display:grid}.experience-list{gap:14px;display:grid}.experience-item{text-align:left;background:#fffaf0b8;border:1px solid #68604d2e;border-radius:8px;width:100%;padding:22px}.experience-item:nth-child(2){transition-delay:80ms}.experience-item:nth-child(3){transition-delay:.16s}.experience-item p{color:var(--sage);margin-bottom:6px;font-weight:900}.experience-item h3{margin-bottom:8px}.experience-item small{color:#68604db8;letter-spacing:.04em;text-transform:uppercase;margin-bottom:10px;font-weight:900;display:block}.experience-item.is-clickable{cursor:pointer;transition:opacity .75s,transform .75s,border-color .25s,box-shadow .25s,background .25s}.experience-item.is-clickable:hover,.experience-item.is-clickable:focus-visible{box-shadow:var(--soft-shadow);background:#fffaf0f0;border-color:#68604d57;outline:none;transform:translateY(-4px)}.experience-item:disabled{cursor:default}.skills-section{gap:28px;display:grid}.skills-note{color:#3f3b31b8;max-width:560px;margin:0;font-weight:800;line-height:1.6}.skills-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;display:grid}.skill-panel{background:linear-gradient(145deg,#fffaf0db,#bec5a442),#fffaf0b8;border:1px solid #68604d2e;border-radius:8px;gap:18px;min-height:360px;padding:20px;display:grid;position:relative;overflow:hidden;box-shadow:0 14px 32px #68604d1a}.skill-panel:before{content:"";background:#d5c7ad61;border:1px solid #68604d29;border-radius:50%;width:88px;height:88px;position:absolute;top:-34px;right:-18px}.skill-panel:nth-child(2){background:linear-gradient(145deg,#fffaf0db,#d5c7ad5c),#fffaf0b8;transition-delay:80ms}.skill-panel:nth-child(3){background:linear-gradient(145deg,#fffaf0e0,#8a8e7538),#fffaf0b8;transition-delay:.16s}.skill-panel:nth-child(4){background:linear-gradient(145deg,#fffaf0e0,#bec5a457),#fffaf0b8;transition-delay:.24s}.skill-panel h3{margin:0;padding-right:34px;font-size:1.55rem;line-height:1.05;position:relative}.skill-stack{gap:15px;display:grid;position:relative}.skill-meter{gap:8px;display:grid}.skill-meter-top{color:var(--bark);justify-content:space-between;align-items:center;gap:10px;font-size:.86rem;font-weight:900;display:flex}.skill-meter-top span{min-width:0}.skill-meter-top strong{color:var(--sage);font-size:.78rem}.skill-track{background:linear-gradient(90deg,#fffaf0cc,#f1ead8d1),#fffaf0b3;border:1px solid #68604d29;border-radius:999px;height:13px;position:relative;overflow:hidden}.skill-track span{border-radius:inherit;background:linear-gradient(90deg, var(--sage), var(--sprout) 58%, var(--clay)), var(--sage);height:100%;display:block;box-shadow:0 0 18px #8a8e753d}.hobbies-section{grid-template-columns:.8fr 1.2fr;align-items:center;gap:30px;padding-bottom:100px;display:grid}.hobby-cloud{flex-wrap:wrap;gap:12px;display:flex}.hobby-cloud span,.tag-list span,.tag-list a{min-height:42px;color:var(--bark);background:#bec5a46b;border:1px solid #68604d2e;border-radius:8px;align-items:center;padding:9px 14px;font-weight:800;text-decoration:none;display:inline-flex}.tag-list a{transition:background .22s,border-color .22s,box-shadow .22s,transform .22s}.tag-list a:hover,.tag-list a:focus-visible{background:#bec5a49e;border-color:#68604d57;outline:none;transform:translateY(-2px);box-shadow:0 10px 20px #68604d1f}.hobby-cloud span:nth-child(2n){transition-delay:80ms}.hobby-cloud span:nth-child(3n){transition-delay:.14s}.detail-page{padding:24px 0 90px}.detail-page [data-reveal]{opacity:1;transform:none}.back-button{cursor:pointer;margin-bottom:18px}.detail-hero{background:var(--card-bg);box-shadow:var(--soft-shadow);border:1px solid #68604d2e;border-radius:8px;gap:18px;padding:clamp(28px,6vw,64px);display:grid}.experience-detail-hero{background:linear-gradient(145deg, var(--sprout), var(--linen))}.experience-detail-hero>span{color:var(--bark);letter-spacing:.08em;text-transform:uppercase;font-size:.92rem;font-weight:900}.experience-detail-content{grid-template-columns:1.15fr .85fr;align-items:start}.experience-info-grid{display:contents}.experience-info-column{grid-column:1;align-content:start;gap:16px;display:grid}.experience-resilience .experience-info-stack:first-child{align-content:start;gap:48px;display:grid}.experience-overview{grid-row:span 3}.experience-detail-content:not(.has-timeline) .experience-overview{grid-area:auto/1}.experience-detail-content:not(.has-timeline) .experience-tools{grid-area:2/1}.experience-detail-content:not(.has-timeline) .experience-responsibilities{grid-area:2/2}.experience-detail-content.has-timeline .experience-overview{grid-area:auto/1}.experience-detail-content.has-timeline .experience-timeline{grid-area:1/2}.experience-detail-content.has-timeline .experience-tools{grid-column:1}.work-timeline{gap:24px;padding-left:34px;display:grid;position:relative}.work-timeline:before{background:linear-gradient(to bottom, #68604d26, var(--sage), #68604d2e);content:"";border-radius:999px;width:2px;position:absolute;top:10px;bottom:10px;left:10px;box-shadow:0 0 18px #8a8e7542}.work-timeline-item{background:linear-gradient(135deg,#fffaf0e6,#f1ead8a3),#fffaf0b3;border:1px solid #68604d29;border-radius:8px;gap:8px;padding:18px;display:grid;position:relative;box-shadow:0 12px 26px #68604d14}.timeline-node{border:3px solid var(--paper);background:var(--sage);border-radius:50%;width:22px;height:22px;position:absolute;top:22px;left:-33px;box-shadow:0 0 0 1px #68604d33,0 0 20px #8a8e7561}.work-timeline-item small{width:fit-content;color:var(--sage);letter-spacing:.08em;text-transform:uppercase;margin-bottom:8px;font-size:.72rem;font-weight:900;display:inline-flex}.work-timeline-item h3{margin-bottom:4px;font-size:1.55rem}.timeline-subtitle{font-weight:900;color:var(--bark)!important;margin-bottom:10px!important}.work-timeline-item ul{gap:8px;padding-left:18px}.detail-hero h1{max-width:900px}.detail-hero>p:not(.eyebrow){max-width:760px}.detail-links a{background:#fffaf0}.detail-links span{background:#fffaf08f}.detail-content{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;padding-top:18px;display:grid}.project-preview{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:18px;padding:16px;display:grid}.project-preview img{width:100%;box-shadow:var(--soft-shadow);background:#fffaf0c7;border:1px solid #68604d2e;border-radius:8px;justify-self:center}.detail-content.project-programming-structures{align-items:start}.detail-content.project-programming-structures article:first-child{grid-column:1}.detail-content.project-programming-structures .project-side-stack{grid-column:2;align-content:start;gap:10px;display:grid}.detail-content article{background:#fffaf0bd;border:1px solid #68604d2e;border-radius:8px;padding:24px}.detail-content article:nth-child(2){transition-delay:80ms}.detail-content article:nth-child(3){transition-delay:.16s}.detail-content article:nth-child(4){transition-delay:.24s}.detail-content h2{margin-bottom:14px;font-size:2rem}.detail-content p{margin-bottom:14px}.detail-content ul{gap:10px;margin:0;padding-left:20px;display:grid}.tag-list{flex-wrap:wrap;gap:10px;display:flex}.recommendation-link{color:var(--bark);background:#f1ead88f;border:1px solid #68604d2e;border-radius:8px;gap:4px;margin-top:16px;padding:14px 15px;text-decoration:none;transition:background .22s,border-color .22s,box-shadow .22s,transform .22s;display:grid}.recommendation-link:hover,.recommendation-link:focus-visible{background:#bec5a475;border-color:#8a8e756b;outline:none;transform:translateY(-2px);box-shadow:0 10px 24px #68604d1f}.recommendation-link strong{font-family:Georgia,Times New Roman,serif;font-size:1.16rem;line-height:1.1}.recommendation-link span{color:#3f3b31b8;font-size:.92rem;font-weight:800;line-height:1.45}.project-topic-timeline{grid-column:span 2}.topic-timeline{gap:18px;padding-left:34px;display:grid;position:relative}.topic-timeline:before{background:linear-gradient(to bottom, #68604d24, var(--sage), #68604d29);content:"";border-radius:999px;width:2px;position:absolute;top:4px;bottom:4px;left:10px}.topic-timeline-item{gap:10px;display:grid;position:relative}.topic-timeline-item h3{margin-bottom:12px;font-size:1.7rem}.airbnb-site{--airbnb-scroll:0;--airbnb-mouse-x:68%;--airbnb-mouse-y:38%;background:radial-gradient(circle at calc(50% + (var(--airbnb-scroll) * 22%)) 42%, #d5c7ad47, transparent 28%), linear-gradient(180deg, #020202 0%, #060504 48%, #11100d 100%);color:#fff7e8;width:100%;min-height:245svh;margin:0;overflow-x:clip}.airbnb-site:before{z-index:0;pointer-events:none;opacity:calc(.18 + (var(--airbnb-scroll) * .22));content:"";background-color:#0000;background-image:linear-gradient(#fffaf00a 1px,#0000 1px),linear-gradient(90deg,#fffaf009 1px,#0000 1px);background-position:0 0,0 0;background-repeat:repeat,repeat;background-size:72px 72px;background-attachment:scroll,scroll;background-origin:padding-box,padding-box;background-clip:border-box,border-box;position:fixed;inset:0}.airbnb-site:after{z-index:0;pointer-events:none;background:radial-gradient(circle at var(--airbnb-mouse-x) var(--airbnb-mouse-y), #71f5db57, #d8c6a32e 12%, #fff7e80d 24%, transparent 42%), repeating-linear-gradient(0deg, transparent 0 62px, #71f5db21 62px 64px, transparent 64px 128px), repeating-linear-gradient(90deg, transparent 0 78px, #d8c6a31f 78px 80px, transparent 80px 156px), linear-gradient(32deg, transparent 0 42%, #71f5db2e 42.3% 42.8%, transparent 43.1% 100%), linear-gradient(147deg, transparent 0 58%, #fff7e821 58.2% 58.7%, transparent 59% 100%), radial-gradient(circle, #71f5db57 0 1px, transparent 1.8px);background-position:0 0, calc(var(--airbnb-scroll) * -34px) calc(var(--airbnb-scroll) * 22px), calc(var(--airbnb-scroll) * 26px) calc(var(--airbnb-scroll) * -18px), 0 0, 0 0, 0 0;-webkit-mask-image:radial-gradient(circle at var(--airbnb-mouse-x) var(--airbnb-mouse-y), #000 0 20%, #000000b8 32%, transparent 56%);-webkit-mask-image:radial-gradient(circle at var(--airbnb-mouse-x) var(--airbnb-mouse-y), #000 0 20%, #000000b8 32%, transparent 56%);mask-image:radial-gradient(circle at var(--airbnb-mouse-x) var(--airbnb-mouse-y), #000 0 20%, #000000b8 32%, transparent 56%);opacity:calc(.26 + (var(--airbnb-scroll) * .12));content:"";background-size:auto,100% 100%,100% 100%,100% 100%,100% 100%,28px 28px;position:fixed;inset:0}.airbnb-signal-layer{z-index:0;pointer-events:none;position:fixed;inset:0;overflow:hidden}.airbnb-signal{left:var(--signal-x);top:var(--signal-y);opacity:0;mix-blend-mode:screen;will-change:transform, opacity;background:linear-gradient(90deg,#0000,#42d3ff9e,#aef0ff61,#0000);border-radius:999px;display:block;position:absolute;box-shadow:0 0 10px #42d3ff57,0 0 22px #42d3ff2e}.airbnb-signal.is-up,.airbnb-signal.is-down{width:2px;height:var(--signal-length);background:linear-gradient(#0000,#42d3ff8f,#aef0ff57,#0000)}.airbnb-signal.is-left,.airbnb-signal.is-right{width:var(--signal-length);height:2px}.airbnb-signal.is-up{transform-origin:50% 100%;animation:5s ease-out forwards airbnb-signal-up}.airbnb-signal.is-down{transform-origin:50% 0;animation:5s ease-out forwards airbnb-signal-down}.airbnb-signal.is-left{transform-origin:100%;animation:5s ease-out forwards airbnb-signal-left}.airbnb-signal.is-right{transform-origin:0;animation:5s ease-out forwards airbnb-signal-right}@keyframes airbnb-signal-up{0%{opacity:0;transform:translate(-50%,-100%)scaleY(0)}12%{opacity:.72}74%{opacity:.42;transform:translate(-50%,-100%)scaleY(1)}to{opacity:0;transform:translate(-50%,-138%)scaleY(1)}}@keyframes airbnb-signal-down{0%{opacity:0;transform:translate(-50%)scaleY(0)}12%{opacity:.72}74%{opacity:.42;transform:translate(-50%)scaleY(1)}to{opacity:0;transform:translate(-50%,38%)scaleY(1)}}@keyframes airbnb-signal-left{0%{opacity:0;transform:translate(-100%,-50%)scaleX(0)}12%{opacity:.72}74%{opacity:.42;transform:translate(-100%,-50%)scaleX(1)}to{opacity:0;transform:translate(-138%,-50%)scaleX(1)}}@keyframes airbnb-signal-right{0%{opacity:0;transform:translateY(-50%)scaleX(0)}12%{opacity:.72}74%{opacity:.42;transform:translateY(-50%)scaleX(1)}to{opacity:0;transform:translate(38%,-50%)scaleX(1)}}.airbnb-hero{z-index:1;grid-template-columns:minmax(300px,.68fr) minmax(520px,1.32fr);align-items:center;gap:28px;width:min(1260px,100% - 40px);min-height:100svh;margin:0 auto;display:grid;position:sticky;top:0}.airbnb-copy{z-index:2;max-width:470px;opacity:calc(1 - (var(--airbnb-scroll) * 2.6));transform:translateY(calc(var(--airbnb-scroll) * -96px));gap:18px;display:grid;position:relative}.airbnb-copy p,.airbnb-form-card>p{color:#d8c6a3;letter-spacing:.12em;text-transform:uppercase;margin:0;font-size:.78rem;font-weight:900}.airbnb-data-menu{top:18px;right:max(18px, env(safe-area-inset-right));z-index:4;width:fit-content;transition:opacity .18s,transform .18s,visibility .18s;position:fixed}.airbnb-data-menu button{cursor:pointer}.airbnb-data-menu.is-hidden{visibility:hidden;opacity:0;pointer-events:none;transform:translateY(-10px)}.airbnb-data-menu>button,.airbnb-data-options a,.airbnb-data-options button{color:#d8c6a3;max-width:min(280px,100vw - 36px);font:inherit;letter-spacing:.12em;text-transform:uppercase;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0303038a;border:1px solid #d8c6a32e;border-radius:8px;justify-content:space-between;align-items:center;padding:8px 10px;font-size:.78rem;font-weight:900;text-decoration:none;display:flex}.airbnb-data-menu>button{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.airbnb-data-options{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#080807db;border:1px solid #d8c6a329;border-radius:8px;gap:7px;width:min(270px,100vw - 36px);padding:8px;display:grid;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 18px 50px #0000006b}.airbnb-data-options a,.airbnb-data-options button{color:#fff7e8;cursor:pointer;text-align:left;background:#fff7e812;min-height:42px}.airbnb-data-options a:hover,.airbnb-data-options a:focus-visible,.airbnb-data-options button:hover,.airbnb-data-options button:focus-visible{background:#d8c6a32e;border-color:#d8c6a36b;outline:none}.airbnb-copy h1{color:#fff7e8;text-wrap:balance;font-size:clamp(3rem,5.8vw,5.9rem);line-height:.94}.airbnb-copy span{color:#fff7e8c2;max-width:420px;font-size:clamp(1.05rem,2vw,1.35rem);line-height:1.6}.airbnb-copy a{color:#fff7e8;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#fff7e814;border:1px solid #fff7e838;border-radius:8px;justify-content:center;align-items:center;width:fit-content;min-height:46px;padding:11px 17px;font-weight:900;text-decoration:none;display:inline-flex}.airbnb-house-stage{z-index:1;pointer-events:none;width:100vw;height:100svh;transform:translate3d(calc(2vw + (var(--airbnb-scroll) * -4vw)), calc(-3vh + (var(--airbnb-scroll) * 4vh)), 0) scale(calc(.98 - (var(--airbnb-scroll) * .05)));transform-origin:50%;will-change:transform;contain:layout paint;position:fixed;top:0;left:0}.airbnb-house-stage canvas{filter:drop-shadow(0 34px 46px #000000b8)drop-shadow(0 0 62px #d8c6a329);width:100%;height:100%;display:block}.airbnb-form-section{z-index:2;width:min(1320px,100% - 40px);min-height:100svh;opacity:calc((var(--airbnb-scroll) - .58) * 3);transform:translateY(calc((.72 - var(--airbnb-scroll)) * 140px));pointer-events:none;align-items:end;margin:-100svh auto 120svh;padding:clamp(66px,8svh,92px) 0 clamp(34px,7svh,74px);display:grid;position:sticky;top:0}.airbnb-form-section:before{pointer-events:none;background:linear-gradient(90deg, #02020200, rgba(2, 2, 2, calc(var(--airbnb-scroll) * .72)) 28%, rgba(2, 2, 2, calc(var(--airbnb-scroll) * .88)) 100%);content:"";width:min(820px,72vw);position:absolute;inset:0 0 0 auto}.airbnb-form-card{filter:drop-shadow(0 28px 48px #00000085);pointer-events:auto;background:0 0;border:0;gap:clamp(12px,1.8svh,18px);width:min(610px,100%);margin-left:auto;margin-right:clamp(8px,2vw,30px);padding:0;display:grid;position:relative}.airbnb-form-card h2{color:#fff7e8;text-shadow:0 10px 32px #000000bd;max-width:560px;font-size:clamp(2.05rem,3.8vw,4.15rem);line-height:.94}.airbnb-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(10px,1.8svh,14px);display:grid}.airbnb-fields label{color:#fff7e8b8;letter-spacing:.08em;text-transform:uppercase;gap:8px;font-size:.78rem;font-weight:900;display:grid}.airbnb-fields input,.airbnb-fields select{color:#1c1914;width:100%;min-height:clamp(42px,6.2svh,52px);font:inherit;background:#fff7e8f0;border:1px solid #fff7e833;border-radius:8px;outline:none;padding:11px 12px;font-weight:800;box-shadow:0 14px 34px #00000042}.airbnb-fields input:focus,.airbnb-fields select:focus{border-color:#d8c6a3;box-shadow:0 0 0 3px #d8c6a338}.airbnb-estimate{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:linear-gradient(145deg,#fff7e824,#fff7e80d),#08080780;border:1px solid #d8c6a33d;border-radius:8px;gap:4px;padding:clamp(14px,2.5svh,18px);display:grid;box-shadow:0 18px 46px #0000006b}.airbnb-estimate span,.airbnb-estimate small{color:#fff7e8b8;font-weight:800}.airbnb-estimate strong{color:#fff7e8;font-family:Georgia,Times New Roman,serif;font-size:clamp(2.6rem,6vw,4.85rem);line-height:.95}.airbnb-report-section{z-index:3;width:100%;padding:clamp(84px, 14vw, 160px) max(18px, env(safe-area-inset-right)) clamp(80px, 12vw, 140px);color:#fff7e8;background:linear-gradient(#fffaf009 1px,#0000 1px) 0 0/72px 72px,linear-gradient(90deg,#fffaf008 1px,#0000 1px) 0 0/72px 72px,linear-gradient(#020202f5,#090806 18%,#030303 100%);position:relative}.airbnb-site.is-report-locked .airbnb-report-section{visibility:hidden}.airbnb-report-intro{gap:14px;width:min(1080px,100% - 28px);margin:0 auto clamp(56px,8vw,92px);display:grid}.airbnb-report-intro p{color:#d8c6a3;letter-spacing:.12em;text-transform:uppercase;margin:0;font-size:.78rem;font-weight:900}.airbnb-report-intro h2{color:#fff7e8;max-width:900px;font-size:clamp(3rem,8vw,7rem);line-height:.9}.airbnb-report-intro span{color:#fff7e8b8;max-width:760px;font-weight:800;line-height:1.65}.airbnb-report-timeline{gap:clamp(34px,5vw,62px);width:min(1120px,100% - 28px);margin:0 auto;display:grid;position:relative}.airbnb-report-timeline:before{content:"";background:linear-gradient(#d8c6a357,#d8c6a3f5 18%,#71f5db6b 50%,#d8c6a3e0 82%,#d8c6a347);width:2px;position:absolute;top:0;bottom:0;left:15px;box-shadow:0 0 20px #d8c6a33d}.airbnb-report-item{grid-template-columns:32px minmax(0,1fr);gap:clamp(18px,4vw,34px);display:grid;position:relative}.airbnb-report-marker{z-index:1;background:radial-gradient(circle at 34% 28%,#fff7e8 0 14%,#ead9b6 36%,#d8c6a3 72%),#d8c6a3;border:2px solid #d8c6a3;border-radius:999px;width:32px;height:32px;animation:2.8s ease-in-out infinite airbnb-marker-breathe;position:relative;box-shadow:0 0 0 4px #d8c6a31a,0 0 26px #d8c6a38a,0 0 58px #71f5db24}.airbnb-report-marker:before,.airbnb-report-marker:after{border-radius:inherit;pointer-events:none;content:"";position:absolute;inset:-10px}.airbnb-report-marker:before{border:1px solid #d8c6a36b;animation:2.8s ease-out infinite airbnb-marker-pulse;box-shadow:0 0 22px #d8c6a357,inset 0 0 16px #fff7e81f}.airbnb-report-marker:after{filter:blur(2px);opacity:.48;background:radial-gradient(circle,#fff7e8c7,#fff7e800 68%);inset:5px}@keyframes airbnb-marker-breathe{0%,to{transform:scale(1);box-shadow:0 0 0 4px #d8c6a31a,0 0 26px #d8c6a38a,0 0 58px #71f5db24}50%{transform:scale(1.08);box-shadow:0 0 0 6px #d8c6a329,0 0 42px #d8c6a3d1,0 0 82px #71f5db4d}}@keyframes airbnb-marker-pulse{0%{opacity:.75;transform:scale(.78)}72%,to{opacity:0;transform:scale(1.82)}}.airbnb-report-content{gap:16px;padding-bottom:clamp(10px,2vw,22px);display:grid}.airbnb-report-content h3{color:#fff7e8;font-size:clamp(2rem,4.6vw,4.7rem);line-height:.92}.airbnb-report-content p{color:#fff7e8c2;max-width:900px;margin:0;font-size:clamp(1rem,1.4vw,1.18rem);font-weight:700;line-height:1.72}.airbnb-report-images{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:8px;display:grid}.airbnb-report-images img{object-fit:contain;background:#fffaf0f0;border:1px solid #d8c6a32e;border-radius:8px;width:100%;max-height:520px;padding:10px;display:block;box-shadow:0 18px 54px #00000052}.airbnb-info-page{color:#fff7e8;background:radial-gradient(circle at 78% 24%,#baac8e38,#0000 30%),linear-gradient(#020202 0%,#0b0a08 100%);width:100%;min-height:100svh;margin:0;padding:clamp(18px,4vw,48px);display:grid}.airbnb-info-page:before{pointer-events:none;content:"";background-color:#0000;background-image:linear-gradient(#fffaf00a 1px,#0000 1px),linear-gradient(90deg,#fffaf009 1px,#0000 1px);background-position:0 0,0 0;background-repeat:repeat,repeat;background-size:72px 72px;background-attachment:scroll,scroll;background-origin:padding-box,padding-box;background-clip:border-box,border-box;position:fixed;inset:0}.airbnb-info-page section{align-self:center;gap:18px;width:min(920px,100%);display:grid;position:relative}.airbnb-info-page p{color:#d8c6a3;letter-spacing:.12em;text-transform:uppercase;margin:0;font-size:.78rem;font-weight:900}.airbnb-info-page h1{color:#fff7e8;max-width:880px;font-size:clamp(3rem,7vw,7rem);line-height:.92}.airbnb-info-page span{color:#fff7e8c2;max-width:780px;font-size:clamp(1.05rem,2vw,1.28rem);line-height:1.75;display:block}.airbnb-info-page a,.airbnb-info-back{color:#fff7e8;width:fit-content;min-height:44px;font:inherit;background:#fff7e817;border:1px solid #d8c6a33d;border-radius:8px;justify-content:center;align-items:center;padding:10px 15px;font-weight:900;text-decoration:none;display:inline-flex}.airbnb-info-back{z-index:1;cursor:pointer;align-self:start;position:relative}@media (width<=1100px){.skills-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.airbnb-house-stage{transform:translate3d(calc(2vw + (var(--airbnb-scroll) * -6vw)), calc(-4vh + (var(--airbnb-scroll) * 6vh)), 0) scale(calc(.9 - (var(--airbnb-scroll) * .06)))}.airbnb-form-card{width:min(540px,100%);margin-right:0}.airbnb-form-section:before{width:min(620px,76vw)}}@media (width<=860px){main{width:min(100% - 22px,1180px)}.topbar,.hero-actions,.detail-links{flex-direction:column;align-items:stretch}.nav-links{justify-content:stretch}.nav-links a{text-align:center;flex:1}.hero-section,.split,.hobbies-section,.experience-detail-content,.detail-content,.skills-grid{grid-template-columns:1fr}.skill-panel{min-height:auto}.experience-overview{grid-row:auto}.experience-detail-content.has-timeline .experience-timeline,.experience-detail-content.has-timeline .experience-tools,.experience-detail-content:not(.has-timeline) .experience-responsibilities,.experience-detail-content:not(.has-timeline) .experience-tools{grid-area:auto}.detail-content.project-programming-structures article:first-child,.detail-content.project-programming-structures .project-side-stack{grid-column:auto}.project-preview{grid-template-columns:1fr}.work-timeline{padding-left:28px}.hero-section{min-height:auto;padding-top:28px}.portrait-frame,.portrait-frame img{min-height:330px}.portrait-card{transform:translateY(-12px)}.intro-copy{padding-top:0}.project-grid{grid-template-columns:1fr}.flip-card{height:260px}.airbnb-site{min-height:245svh}.airbnb-hero,.airbnb-form-section{width:min(100% - 24px,1180px)}.airbnb-hero{grid-template-columns:1fr;align-items:start;padding-top:18svh}.airbnb-copy{max-width:96%}.airbnb-house-stage{transform:translate3d(calc(1vw + (var(--airbnb-scroll) * -4vw)), calc(-2vh + (var(--airbnb-scroll) * 8vh)), 0) scale(calc(.78 - (var(--airbnb-scroll) * .06)))}.airbnb-form-section:before{background:linear-gradient(180deg, #02020200, rgba(2, 2, 2, calc(var(--airbnb-scroll) * .68)) 28%, rgba(2, 2, 2, calc(var(--airbnb-scroll) * .82)) 100%);width:auto;inset:0 -12px}.airbnb-form-card{margin:0 auto}.airbnb-form-card h2{font-size:clamp(2rem,12vw,3.45rem)}.airbnb-fields{grid-template-columns:1fr}.airbnb-form-section{margin-top:-100svh;margin-bottom:100svh;padding-top:clamp(66px,9svh,92px);padding-bottom:clamp(24px,5svh,48px)}.airbnb-report-section{padding-top:76px}.airbnb-report-item{gap:16px}.airbnb-report-images{grid-template-columns:1fr}.airbnb-info-page h1{font-size:clamp(2.9rem,14vw,5rem)}}@media (height<=760px){.airbnb-form-card{gap:10px}.airbnb-form-card h2{font-size:clamp(1.9rem,3.4vw,3.35rem)}.airbnb-fields label{gap:6px;font-size:.72rem}.airbnb-fields input,.airbnb-fields select{min-height:42px;padding-block:8px}.airbnb-estimate{padding:12px 14px}.airbnb-estimate strong{font-size:clamp(2.25rem,5vw,4.1rem)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;transition-delay:0s!important;animation:none!important}[data-reveal]{opacity:1;transform:none}}
