:root{--ink: #101114;--body: #3f4147;--prose: #55575d;--muted: #6b6d73;--accent: #3b4a6b;--accent-hover: #1f5fd0;--rule: #d9dbdf;--ground: #f4f4f2;--flag: #2a5f45;--stage-h: 5227px;--ground-y: 4957px;--content-left: 6%;--cable-x: 63.7%;--ease-enter: cubic-bezier(.16, .84, .28, 1)}*,*:before,*:after{box-sizing:border-box}body{margin:0;background:#fff;color:var(--ink);font-family:Hanken Grotesk,-apple-system,system-ui,sans-serif;font-weight:400;-webkit-font-smoothing:antialiased}a{color:var(--ink);text-decoration:none}a:hover{color:var(--accent-hover)}button{font-family:inherit;color:inherit}img{max-width:100%}:where(a,button):focus-visible{outline:1px solid var(--accent);outline-offset:4px}.skip-link{position:absolute;left:-9999px;top:0;z-index:100;padding:10px 14px;background:#fff;font-size:13px}.skip-link:focus{left:6px;top:6px}@keyframes sway{0%,to{transform:rotate(calc(-1 * var(--sway, 2.1deg)))}50%{transform:rotate(var(--sway, 2.1deg))}}@keyframes step-a{0%,to{transform:rotate(15deg)}50%{transform:rotate(-15deg)}}@keyframes step-b{0%,to{transform:rotate(-15deg)}50%{transform:rotate(15deg)}}@keyframes swing-opposite-a{0%,to{transform:rotate(-13deg)}50%{transform:rotate(13deg)}}@keyframes swing-opposite-b{0%,to{transform:rotate(13deg)}50%{transform:rotate(-13deg)}}@keyframes stride{0%,to{transform:translateY(0)}50%{transform:translateY(-.8px)}}@keyframes duck-crouch-in{0%,44%{transform:translateY(0)}51%{transform:translateY(2px)}58%{transform:translateY(3.5px)}66%{transform:translateY(4.75px)}74%{transform:translateY(6px)}81%{transform:translateY(7.75px)}88%,to{transform:translateY(9px)}}@keyframes duck-trunk-in{0%,44%{transform:rotate(0)}51%{transform:rotate(-18deg)}58%{transform:rotate(-30deg)}66%{transform:rotate(-40deg)}74%{transform:rotate(-48deg)}81%{transform:rotate(-30deg)}88%,to{transform:rotate(-14deg)}}@keyframes step-thigh-in{0%,44%{transform:rotate(0)}51%{transform:rotate(55deg)}58%{transform:rotate(47deg)}66%{transform:rotate(70deg)}74%{transform:rotate(56deg)}81%{transform:rotate(98deg)}88%,to{transform:rotate(90deg)}}@keyframes step-knee-in{0%,44%{transform:rotate(0)}51%{transform:rotate(-85deg)}58%{transform:rotate(-10deg)}66%{transform:rotate(-87deg)}74%{transform:rotate(-112deg)}81%{transform:rotate(-105deg)}88%,to{transform:rotate(-41deg)}}@keyframes step-thigh-in-trail{0%,44%{transform:rotate(0)}51%{transform:rotate(17deg)}58%{transform:rotate(0)}66%{transform:rotate(55deg)}74%{transform:rotate(40deg)}81%{transform:rotate(94deg)}88%,to{transform:rotate(102deg)}}@keyframes step-knee-in-trail{0%,44%{transform:rotate(0)}51%{transform:rotate(-59deg)}58%{transform:rotate(-60deg)}66%{transform:rotate(-129deg)}74%{transform:rotate(-110deg)}81%{transform:rotate(-116deg)}88%,to{transform:rotate(-74deg)}}@keyframes board-arm-front{0%,44%{transform:rotate(0)}51%{transform:rotate(24deg)}58%{transform:rotate(40deg)}66%{transform:rotate(50deg)}74%{transform:rotate(46deg)}88%,to{transform:rotate(46deg)}}@keyframes board-arm-back{0%,44%{transform:rotate(0)}51%{transform:rotate(10deg)}58%{transform:rotate(20deg)}66%{transform:rotate(28deg)}74%{transform:rotate(30deg)}88%,to{transform:rotate(26deg)}}@keyframes duck-crouch-out{0%,8%{transform:translateY(9px)}16%{transform:translateY(6px)}26%{transform:translateY(4px)}38%,to{transform:translateY(0)}}@keyframes duck-trunk-out{0%,8%{transform:rotate(14deg)}16%{transform:rotate(48deg)}26%{transform:rotate(30deg)}38%,to{transform:rotate(0)}}@keyframes step-thigh-out{0%,8%{transform:rotate(-90deg)}16%{transform:rotate(-56deg)}22%{transform:rotate(-55deg)}28%{transform:rotate(-70deg)}38%,to{transform:rotate(0)}}@keyframes step-knee-out{0%,8%{transform:rotate(41deg)}16%{transform:rotate(112deg)}22%{transform:rotate(55deg)}28%{transform:rotate(95deg)}38%,to{transform:rotate(0)}}@keyframes step-thigh-out-trail{0%,8%{transform:rotate(-102deg)}16%{transform:rotate(-56deg)}26%{transform:rotate(-20deg)}38%,to{transform:rotate(0)}}@keyframes step-knee-out-trail{0%,8%{transform:rotate(74deg)}16%{transform:rotate(112deg)}26%{transform:rotate(20deg)}38%,to{transform:rotate(0)}}@keyframes walk-out{0%,15%{transform:translate(0)}to{transform:translate(var(--walk, 0px))}}@keyframes board{0%{opacity:0;transform:translate(var(--board-from, 120px))}8%{opacity:1}44%,58%{opacity:1;transform:translate(var(--board-step, 9px))}74%,94%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(0)}}@keyframes rider-in{0%,94%{opacity:0}to{opacity:1}}@keyframes wave{0%,to{transform:rotate(-142deg)}50%{transform:rotate(-170deg)}}@keyframes cheer-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-1.6px)}}@keyframes trolley{0%,to{transform:translateY(0)}50%{transform:translateY(.5px)}}.stage{position:relative;height:var(--stage-h);background:#fff;overflow:hidden}.world{position:absolute;inset:0;width:100%;height:var(--stage-h)}.rain{position:fixed;top:0;left:64%;width:34%;height:100%;pointer-events:none}.flag{stroke:var(--accent);fill:var(--flag);fill-opacity:0;transition:stroke 1.5s ease,fill-opacity 1.5s ease}.stage.is-arrived .flag{stroke:var(--flag);fill-opacity:1}.place{opacity:0;transition:opacity 1.5s ease}.place.is-in{opacity:1}.gondola{position:absolute;left:var(--cable-x);top:120px;width:52px;height:60px;margin:-7px 0 0 -26px;pointer-events:none;overflow:visible}.gondola__trolley{animation:trolley 3.1s ease-in-out infinite}.gondola__car{animation:sway 4.4s ease-in-out infinite;transform-origin:26px 8px}.gondola__rider{transition:opacity .8s ease}.stage.is-arrived .gondola__rider{opacity:0}.walker{position:absolute;top:var(--ground-y);margin-top:-42px;width:24px;height:44px;overflow:visible;pointer-events:none;opacity:0;transform:translate(0);transition:opacity .8s ease,transform .8s linear}.stage.is-arrived .walker:not(.boarder){opacity:1;transform:translate(var(--walk, 0px));animation:walk-out 4s linear forwards}.walker__arm{transform-origin:12px 18.5px}.walker__crouch,.walker__plant,.walker__trunk{transform-origin:12px 28.5px}.walker__shin{transform-origin:12px 35.25px}.walker__leg{transform-origin:12px 28.5px}.stage.is-walking .walker:not(.boarder) .walker__leg--front{animation:step-a .66s ease-in-out 1.3s infinite}.stage.is-walking .walker:not(.boarder) .walker__leg--back{animation:step-b .66s ease-in-out 1.3s infinite}.stage.is-walking .walker:not(.boarder) .walker__arm--front{animation:swing-opposite-a .66s ease-in-out 1.3s infinite}.stage.is-walking .walker:not(.boarder) .walker__arm--back{animation:swing-opposite-b .66s ease-in-out 1.3s infinite}.stage.is-walking .walker:not(.boarder) .walker__body{animation:stride .33s ease-in-out 1.3s infinite}.stage.is-walking .walker:not(.boarder) .walker__crouch{animation:duck-crouch-out 4s ease-out forwards}.stage.is-walking .walker:not(.boarder) .walker__trunk{animation:duck-trunk-out 4s ease-out forwards}.stage.is-walking .walker:not(.boarder) .walker__plant--front{animation:step-thigh-out 4s ease-out forwards}.stage.is-walking .walker:not(.boarder) .walker__shin--front{animation:step-knee-out 4s ease-out forwards}.stage.is-walking .walker:not(.boarder) .walker__plant--back{animation:step-thigh-out-trail 4s ease-out forwards}.stage.is-walking .walker:not(.boarder) .walker__shin--back{animation:step-knee-out-trail 4s ease-out forwards}.stage.is-cheering .walker__leg--front{animation:none;transform:rotate(7deg)}.stage.is-cheering .walker__leg--back{animation:none;transform:rotate(-7deg)}.stage.is-cheering .walker__arm--back{animation:none;transform:rotate(10deg)}.stage.is-cheering .walker__arm--front{animation:wave 1.15s ease-in-out infinite}.stage.is-cheering .walker__body{animation:cheer-bob 2.2s ease-in-out infinite}.platform{position:absolute;height:0;border-top:1px solid var(--ink);opacity:0;pointer-events:none;transition:opacity .8s ease}.stage.is-boarding .platform{opacity:.35}.boarder{margin-top:-42px;opacity:0;--board-step: 9px}.stage.is-boarding .boarder{animation:board 5.2s linear forwards}.stage.is-boarding .boarder .walker__leg--front{animation:step-a .66s ease-in-out 3.5}.stage.is-boarding .boarder .walker__leg--back{animation:step-b .66s ease-in-out 3.5}.stage.is-boarding .boarder .walker__arm--front{animation:board-arm-front 5.2s ease-out forwards,swing-opposite-a .66s ease-in-out 3.5}.stage.is-boarding .boarder .walker__arm--back{animation:board-arm-back 5.2s ease-out forwards,swing-opposite-b .66s ease-in-out 3.5}.stage.is-boarding .boarder .walker__body{animation:stride .33s ease-in-out 7}.stage.is-boarding .boarder .walker__crouch{animation:duck-crouch-in 5.2s ease-out forwards}.stage.is-boarding .boarder .walker__trunk{animation:duck-trunk-in 5.2s ease-out forwards}.stage.is-boarding .boarder .walker__plant--front{animation:step-thigh-in 5.2s ease-out forwards}.stage.is-boarding .boarder .walker__shin--front{animation:step-knee-in 5.2s ease-out forwards}.stage.is-boarding .boarder .walker__plant--back{animation:step-thigh-in-trail 5.2s ease-out forwards}.stage.is-boarding .boarder .walker__shin--back{animation:step-knee-in-trail 5.2s ease-out forwards}.stage.is-boarding .gondola__rider{animation:rider-in 5.2s ease forwards}.beat{position:absolute;left:var(--content-left);width:min(var(--w-px, 470px),var(--w-pct, 42%))}.beat--reveal{opacity:0;transform:translateY(14px);transition:opacity 1.2s ease,transform 1.2s var(--ease-enter)}.beat--reveal.is-in{opacity:1;transform:none}.kicker{margin:0 0 12px;font-size:12.5px;line-height:1;color:var(--accent)}.hint{margin:0;font-size:12.5px;line-height:1;color:var(--muted)}.hero__kicker{margin:0 0 30px;font-size:13px;color:var(--muted)}.label{font-size:13px;line-height:1;color:var(--muted)}.name{margin:0;font-size:clamp(40px,5.2vw,76px);font-weight:400;line-height:.92;letter-spacing:-.048em}.title{margin:0;font-size:clamp(24px,2.7vw,36px);font-weight:400;line-height:1.1;letter-spacing:-.03em}.title--research{line-height:1.14}.statement{margin:0 0 30px;font-size:clamp(22px,2.5vw,32px);font-weight:400;line-height:1.24;letter-spacing:-.028em}.lede{margin:32px 0 0;font-size:16.5px;line-height:1.66;color:var(--body)}.prose{margin:0 0 26px;font-size:15.5px;line-height:1.7;color:var(--prose)}.rows{display:grid;gap:0}.row{display:grid;grid-template-columns:minmax(0,var(--row-label, 118px)) minmax(0,1fr);gap:18px;padding:var(--row-pad, 10px) 0}.row__value{font-size:14.5px;line-height:1.55;color:var(--body)}.row__link{font-size:15px}.row__link--muted{color:var(--body)}.skills{display:grid;gap:44px}.skills__group{display:grid;gap:13px}.skills__label{margin:0;font-size:13px;font-weight:400;color:var(--muted)}.tokens{display:flex;flex-wrap:wrap;gap:11px 22px}.token{display:flex;align-items:center;gap:7px;font-size:14.5px;color:var(--body)}.token img{width:12px;height:12px;opacity:.46;transition:opacity .3s ease}.token:hover img{opacity:.9}.card{display:block;padding:0;border:0;background:none;text-align:left;cursor:pointer;color:inherit}.card__kicker{display:block;margin-bottom:12px;font-size:12.5px;color:var(--accent)}.card__title{display:block;margin-bottom:16px;font-size:clamp(24px,2.7vw,34px);font-weight:400;line-height:1.1;letter-spacing:-.03em}.card__body{display:block;margin-bottom:20px;font-size:15px;line-height:1.66;color:var(--prose)}.card__foot{display:flex;align-items:center;gap:14px}.marks{display:flex;gap:12px}.marks img{width:15px;height:15px;opacity:.42;transition:opacity .3s ease}.card__enter{font-size:13px;color:var(--accent)}.card__title,.card__body{transition:color .3s ease}.card__enter{transition:transform .3s var(--ease-enter)}.card:hover .card__title{color:var(--accent-hover)}.card:hover .card__body{color:var(--body)}.card:hover .marks img{opacity:.78}.card:hover .card__enter{transform:translate(3px)}.index{display:grid;gap:0}.index__row{display:grid;grid-template-columns:minmax(0,150px) minmax(0,1fr);gap:18px;align-items:baseline;padding:13px 0;border:0;background:none;text-align:left;cursor:pointer;color:inherit}.index__title{font-size:15.5px}.index__title,.index__note{transition:color .3s ease}.index__row:hover .index__title{color:var(--accent-hover)}.index__row:hover .index__note{color:var(--body)}.index__note{font-size:13.5px;line-height:1.55;color:var(--muted)}.link--button{border:0;border-bottom:1px solid var(--rule);background:none;padding:0 0 3px;cursor:pointer}.index__more{margin-top:26px}.index__preview{position:fixed;z-index:40;width:260px;padding:8px;background:#fff;border:1px solid var(--rule);pointer-events:none;animation:preview-in .22s var(--ease-enter) both}.index__preview img{display:block;width:100%;height:152px;object-fit:cover;object-position:top center;background:var(--ground)}@keyframes preview-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.link{display:inline-flex;align-items:center;gap:7px;border-bottom:1px solid var(--rule);padding-bottom:3px;font-size:15px}.link__mark{flex:none;opacity:.55;transition:opacity .3s ease,transform .3s var(--ease-enter)}.link:hover .link__mark{opacity:1;transform:translate(1px,-1px)}.link--accent{color:var(--accent);border-bottom-color:var(--accent)}.detail{position:fixed;inset:0;z-index:90;background:#fff;overflow-y:auto;opacity:0;transition:opacity .6s ease}.detail.is-open{opacity:1}.detail.is-closing{opacity:0;transition-duration:.42s}.listing{position:fixed;inset:0;z-index:85;background:#fff;overflow-y:auto;opacity:0;transition:opacity .6s ease}.listing.is-open{opacity:1}.listing.is-closing{opacity:0;transition-duration:.42s}.listing__inner{padding:26px 6vw 110px;max-width:1120px}.listing__rows{display:grid;margin-top:40px;max-width:940px}.listing__row{display:grid;grid-template-columns:minmax(0,230px) minmax(0,1fr) minmax(0,190px);gap:24px;align-items:baseline;padding:17px 0;border:0;border-top:1px solid var(--rule);background:none;text-align:left;cursor:pointer;color:inherit}.listing__row:last-child{border-bottom:1px solid var(--rule)}.listing__title{font-size:17px;transition:color .3s ease}.listing__row:hover .listing__title{color:var(--accent-hover)}.listing__note{font-size:14px;line-height:1.55;color:var(--muted);transition:color .3s ease}.listing__row:hover .listing__note{color:var(--body)}.listing__kind{font-size:12.5px;color:var(--accent)}@media(max-width:820px){.listing__row{grid-template-columns:minmax(0,1fr);gap:6px}}.detail__bar{position:sticky;top:0;display:flex;justify-content:flex-start;padding:22px 6vw 0;background:#fff}.detail__close{padding:6px 0;border:0;background:none;font-size:13px;color:var(--muted);cursor:pointer}.detail__close:hover{color:var(--accent-hover)}.detail__inner{padding:26px 6vw 110px;max-width:1120px}.detail__kicker{margin:0 0 14px;font-size:12.5px;color:var(--accent)}.detail__title{margin:0 0 26px;font-size:clamp(30px,4.4vw,58px);font-weight:400;line-height:1.02;letter-spacing:-.042em}.detail__links{display:flex;flex-wrap:wrap;gap:28px;margin-bottom:56px}.detail__links .link{font-size:16px}.detail__summary{margin:0 0 56px;max-width:720px;font-size:clamp(17px,1.5vw,20px);line-height:1.62;color:var(--body);letter-spacing:-.012em}.detail__cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:52px 44px;align-items:start}.col{display:grid;gap:14px;align-content:start}.col--problem{gap:12px}.col__label{margin:0;font-size:13px;font-weight:400;color:var(--muted)}.col__prose{margin:0;font-size:16px;line-height:1.7;color:var(--body)}.features{display:grid;gap:13px}.feature{display:grid;grid-template-columns:minmax(0,22px) minmax(0,1fr);gap:12px;align-items:baseline}.feature__n{font-size:12.5px;color:var(--accent)}.feature__text{font-size:15px;line-height:1.62;color:var(--body)}.stack{display:flex;flex-wrap:wrap;gap:12px 22px}.stack__item{display:flex;align-items:center;gap:9px;font-size:15px;color:var(--body)}.stack__item img{width:15px;height:15px;opacity:.55;transition:opacity .3s ease}.stack__item:hover img{opacity:.95}.detail__section{margin-top:64px;max-width:720px}.section__label{margin:0 0 14px;font-size:13px;font-weight:400;color:var(--muted)}.section__prose{margin:0;font-size:16px;line-height:1.7;color:var(--body)}.detail__section--chart{max-width:620px}.chart{display:grid;gap:20px;margin-top:22px}.chart__row{display:grid;grid-template-columns:minmax(0,96px) minmax(0,1fr) minmax(0,68px);gap:18px;align-items:center}.chart__label{font-size:13px;color:var(--muted)}.chart__track{position:relative;display:block;height:1px;background:var(--rule)}.chart__bar{position:absolute;left:0;top:-3px;height:7px;background:var(--accent);transform-origin:left center;animation:bar-in .9s var(--ease-enter) both;animation-delay:.14s}@keyframes bar-in{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.chart__value{font-size:13px;color:var(--body);text-align:right;font-variant-numeric:tabular-nums}.chart__caption{margin:24px 0 0;font-size:13px;line-height:1.66;color:var(--muted)}.detail__gallery{margin-top:78px}.gallery__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:34px 28px;margin-top:22px}.plate{display:grid;gap:11px;margin:0}.plate__frame{display:block;padding:10px;border:1px solid var(--rule);background:var(--ground);overflow:hidden}.plate__frame img{display:block;width:100%;height:auto}.plate__cap{display:grid;grid-template-columns:minmax(0,22px) minmax(0,1fr);gap:10px;font-size:12.5px;line-height:1.5;color:var(--muted)}.plate__n{color:var(--accent)}.rail{display:none}@media(max-width:820px){.stage{position:static;height:auto;overflow:visible;padding:96px 0 128px}.world,.stage>.gondola{display:none}.beat{position:static;width:auto;max-width:620px;margin:0 max(6vw,58px) 112px 6vw}.beat:last-of-type{margin-bottom:0}.row,.index__row,.detail__cols{grid-template-columns:minmax(0,1fr)}.row{gap:5px;padding:9px 0}.index__row{gap:4px}.detail__cols{gap:44px}.rail{display:block;position:fixed;top:0;right:0;width:46px;height:100vh;z-index:20;pointer-events:none}.rail__svg{display:block;width:46px;height:100%}.rail .gondola{left:23px;transform:scale(.78);transform-origin:26px 8px}}@media(prefers-reduced-motion:reduce){.gondola__trolley,.gondola__car,.chart__bar,.index__preview{animation:none}.beat--reveal{opacity:1;transform:none;transition:none}.place,.detail,.listing{transition:none}.walker{transition:opacity .8s ease}.stage.is-walking .walker__body,.stage.is-walking .walker__limb,.stage.is-walking .walker__crouch,.stage.is-walking .walker__trunk,.stage.is-walking .walker__plant,.stage.is-walking .walker__shin,.stage.is-arrived .walker,.stage.is-cheering .walker__body,.stage.is-cheering .walker__limb,.stage.is-boarding .boarder .walker__body,.stage.is-boarding .boarder .walker__limb,.stage.is-boarding .boarder .walker__crouch,.stage.is-boarding .boarder .walker__trunk,.stage.is-boarding .boarder .walker__plant,.stage.is-boarding .boarder .walker__shin,.stage.is-boarding .boarder,.stage.is-boarding .gondola__rider{animation:none}.stage.is-boarding .platform{opacity:0}}
