.demo-sugar-high{opacity:.75;filter:grayscale();margin-top:4px;padding:8px 32px}.demo-sugar-high__line{white-space:pre;min-height:1.6em;position:relative}.demo-sugar-high__encoded,.demo-sugar-high__highlight{width:100%;display:block;position:absolute;top:0;left:0}.demo-sugar-high__encoded{color:#8996a3}.demo-sugar-high__highlight{opacity:0;transition:opacity .4s}.demo-sugar-high__highlight--visible{opacity:1}.demo-sugar-high.demo--active{opacity:1;filter:grayscale(0%);transition:opacity .3s,filter .7s}@media (max-width:768px){.demo-sugar-high{padding:8px 16px}}
.demo-bunchee{min-height:3.86rem;cursor:inherit;color:#1e1e1e;background-color:#fff;border:1px solid #e5e7eb;border-radius:6px;margin-top:12px;padding:12px}.demo-bunchee__comment{color:#8996a3}.demo-bunchee__content{white-space:pre}.demo-bunchee__line{white-space:pre;min-height:1.6em}.demo-bunchee__prompt{color:#0060aa99;width:15ch;font-weight:700;display:inline-block}.demo-bunchee__indent{width:15ch;font-weight:700;display:inline-block}
.demo-vaso{justify-content:center;align-items:center;height:56px;margin-top:0;margin-bottom:0;display:flex;overflow:clip visible}.demo-vaso__row{--demo-vaso-drop-x:36px;touch-action:pan-y;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative}.demo-vaso__group{width:100%;height:100%;font-family:var(--font-mono);white-space:nowrap;justify-content:center;align-items:center;font-size:.72rem;display:flex}.demo-vaso__text{color:var(--demo-faint);transition:color .5s}.demo-vaso.demo--active .demo-vaso__text{color:var(--demo-muted)}.demo-vaso__pill{color:var(--demo-ink);padding:0 2px;line-height:16px}.demo-vaso__drop{width:30px;height:30px;transform:translateX(var(--demo-vaso-drop-x));pointer-events:none;margin:-15px 0 0 -15px;position:absolute;top:50%;left:50%}.demo-vaso__drop-glass{width:100%;height:100%}
.demo-devjar{font-family:var(--font-mono);grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);align-items:stretch;margin-top:8px;display:grid;overflow:hidden}.demo-devjar__code{border-right:1px solid #a9b5c54d;flex-direction:column;justify-content:center;padding:10px 12px;font-size:.66rem;line-height:1.6;display:flex}.demo-devjar__line{white-space:pre;color:var(--demo-ink);align-items:baseline;display:flex}.demo-devjar__lineno{text-align:right;width:2ch;color:var(--demo-faint);margin-right:8px}.demo-devjar__caret{opacity:0;background:currentColor;align-self:center;width:1px;height:1.1em;margin-left:1px}.demo-devjar.demo--active .demo-devjar__caret{animation:1s step-end infinite demo-devjar-blink}.demo-devjar__preview{justify-content:center;align-items:center;padding:10px 12px;display:flex;position:relative}.demo-devjar__preview:before{content:"";background:var(--demo-faint);border-radius:50%;width:5px;height:5px;position:absolute;top:8px;right:8px}.demo-devjar.demo--active .demo-devjar__preview:before{background:#4ade80}.demo-devjar__render{font-family:var(--font-sans,system-ui), sans-serif;color:var(--demo-ink);white-space:nowrap;font-size:.95rem;font-weight:600}@media (prefers-reduced-motion:no-preference){.demo-devjar.demo--active .demo-devjar__render{animation:.24s ease-out demo-devjar-render}}@keyframes demo-devjar-blink{0%{opacity:1}50%{opacity:0}}@keyframes demo-devjar-render{0%{opacity:.35}}@media (max-width:768px){.demo-devjar{margin-left:0}}
.library-shelf{--library-width:264px;--library-gap:16px;--library-fade:24px;--shelf-width:max(100%, min(800px, calc(100vw - var(--grid-size) * 2)));position:relative}.library-shelf__nav{right:0;bottom:calc(100% + var(--grid-size) / 2);gap:4px;display:flex;position:absolute}.library-shelf__arrow{color:#838383;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:999px;place-items:center;width:24px;height:24px;padding:0;transition:color .15s;display:grid}.library-shelf__arrow:hover,.library-shelf__arrow:focus-visible{color:#111}.library-shelf__arrow:focus-visible{outline-offset:1px;outline:1px solid}.library-shelf__chevron{width:14px;height:14px;overflow:visible}.library-shelf__chevron[data-direction=next]{transform:scaleX(-1)}.library-shelf__chevron-arm{stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;transform-box:view-box;transform-origin:5.5px 8px}@media (prefers-reduced-motion:no-preference){.library-shelf__chevron[data-squeeze] .library-shelf__chevron-arm--upper{animation:.34s cubic-bezier(.3,.7,.4,1) library-shelf-squeeze-upper}.library-shelf__chevron[data-squeeze] .library-shelf__chevron-arm--lower{animation:.34s cubic-bezier(.3,.7,.4,1) library-shelf-squeeze-lower}}@keyframes library-shelf-squeeze-upper{30%{transform:rotate(18deg)}70%{transform:rotate(-3deg)}}@keyframes library-shelf-squeeze-lower{30%{transform:rotate(-18deg)}70%{transform:rotate(3deg)}}.library-shelf__scroller{width:var(--shelf-width);margin-inline:calc((100% - var(--shelf-width)) / 2);overscroll-behavior-x:contain;scrollbar-width:none;-webkit-mask-image:linear-gradient(to right, transparent, #000 var(--library-fade), #000 calc(100% - var(--library-fade)), transparent);mask-image:linear-gradient(to right, transparent, #000 var(--library-fade), #000 calc(100% - var(--library-fade)), transparent);padding-block:4px 12px;overflow:auto hidden}.library-shelf__scroller::-webkit-scrollbar{display:none}.library-shelf__track{width:max-content;display:flex}.library-shelf__set{column-gap:var(--library-gap);padding-right:var(--library-gap);display:flex}.library{width:var(--library-width);font-family:var(--font-mono);flex-direction:column;flex:none;display:flex}.library__stage{--demo-width:100%;--demo-margin-inline:0;background:#00000006;border-radius:28px;height:152px;transition:background-color .2s,box-shadow .2s;display:flex;overflow:hidden}.library__stage>.demo{background:0 0;flex:1;min-width:0;margin-block:0}.library:hover .library__stage,.library:focus-within .library__stage{background:#fff;box-shadow:0 1px 2px #0000000a,0 10px 24px -14px #00000038}.library__name{color:#555;align-self:flex-start;margin-top:8px;font-size:.8rem;line-height:1.5;transition:color .15s ease-out}.library__name small{font-size:.7em}.library__name:hover,.library__name:focus-visible{color:#111}.library__desc{color:#838383;font-size:.72rem;line-height:1.5}.library__loading{flex:1;display:block}@media (max-width:480px){.library-shelf{--library-width:240px;--library-gap:12px}}
.hover-list{position:relative}.hover-list__highlight{--hover-list-height:0px;--hover-list-y:0px;top:0;right:calc(var(--radius-width) / -2);left:calc(var(--radius-width) / -2);height:var(--hover-list-height);border-radius:calc(var(--radius-width) / 2);opacity:0;pointer-events:none;transform:translate3d(0, var(--hover-list-y), 0);will-change:transform;background-color:#0000000d;transition:opacity 60ms ease-out,transform 45ms cubic-bezier(.22,1,.36,1);position:absolute}.hover-list__highlight--visible{opacity:1}.hover-list li{z-index:1;position:relative}
.experience-list{position:relative}.experience-list__highlight{--experience-height:0px;--experience-y:0px;top:0;right:calc(var(--radius-width) / -2);left:calc(var(--radius-width) / -2);height:var(--experience-height);border-radius:calc(var(--radius-width) / 2);opacity:0;pointer-events:none;transform:translate3d(0, var(--experience-y), 0);will-change:transform;background-color:#0000000d;transition:opacity 60ms ease-out,transform 45ms cubic-bezier(.22,1,.36,1);position:absolute}.experience-list__highlight--visible{opacity:1}@media (hover:none){.experience-list__highlight{display:none}}.experience+.experience{margin-top:4px}.experience__row{z-index:1;align-items:baseline;gap:12px;display:flex;position:relative}.experience__row[data-foldable]{cursor:pointer}.experience__row .experience__name{align-items:baseline;display:inline-flex}.experience__toggle,.experience__years{align-items:center;gap:4px;margin-left:auto;display:flex}.experience__years{padding-right:18px}.experience__toggle{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:4px;margin-right:-2px;padding:0 2px}.experience__toggle:focus-visible{outline-offset:2px;outline:1px solid}.experience__chevron{fill:none;stroke:#838383;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;width:14px;height:14px;transition:transform .2s cubic-bezier(.2,.8,.2,1),stroke .15s}.experience__toggle:hover .experience__chevron,.experience__toggle:focus-visible .experience__chevron{stroke:#111}.experience[data-open] .experience__chevron{transform:rotate(180deg)}.experience__panel{grid-template-rows:0fr;transition:grid-template-rows .24s cubic-bezier(.2,.8,.2,1);display:grid}.experience[data-open] .experience__panel{grid-template-rows:1fr}.experience__panel-inner{opacity:0;min-height:0;transition:opacity .18s;overflow:hidden}.experience[data-open] .experience__panel-inner{opacity:1;padding-bottom:8px}@media (prefers-reduced-motion:reduce){.experience__panel,.experience__panel-inner,.experience__chevron{transition:none}}.experience__company .project__duration{margin-right:18px}.experience-past{font-family:var(--font-mono);font-size:.9rem;line-height:var(--grid-size);color:#5a5a5a;margin:36px 0 0}.experience-past__label{color:#838383;margin-right:1ch}
.shader-globe{vertical-align:-.22em;width:1.15em;height:1.15em;margin-left:.4em;display:inline-block}@media (prefers-reduced-motion:no-preference){.shader-globe__land{animation:16s linear infinite shader-globe-turn}.project__item:hover .shader-globe__land{animation-duration:3s}}@keyframes shader-globe-turn{to{transform:translate(-44px)}}
@font-face{font-family:labJiaguwen;src:url(../media/lab_icons_jiaguwen.3mexqrxr8h52q.woff2)format("woff2");font-display:swap}.oe6YLq_className{font-family:labJiaguwen}.oe6YLq_variable{--font-jiaguwen:"labJiaguwen"}
@font-face{font-family:labXiaozhuan;src:url(../media/lab_icons_xiaozhuanti.1t_ynrt6zuzco.woff2)format("woff2");font-display:swap}.MDIz6a_className{font-family:labXiaozhuan}.MDIz6a_variable{--font-xiaozhuanti:"labXiaozhuan"}
.root:has(.lab-page) main{flex:1}.root:has(.lab-page) footer{margin-top:0}.lab-page{flex-direction:column;flex:1;display:flex}.leather-puppet-icon{color:#171717}.leather-puppet-icon svg{width:60px;height:60px}.icon-wrapper{justify-content:center;align-items:center;width:100%;height:100%;display:flex}.chinese-font-icon{color:#333;font-size:64px;line-height:1}.font-jiaguwen{font-family:var(--font-jiaguwen), serif}.lab-seal-icon{width:60px;height:60px;overflow:visible}.lab-seal-frame{fill:none;stroke:#c8102e;stroke-width:4px}.lab-seal-text{fill:#c8102e;font-family:var(--font-xiaozhuanti), serif;text-anchor:middle;dominant-baseline:middle;font-size:42px;font-weight:700}.font-xiaozhuan{font-family:var(--font-xiaozhuanti), serif}.shichen-icon{color:#333}.shichen-icon svg{stroke:currentColor;stroke-width:.6px;stroke-linecap:round;stroke-linejoin:round;width:64px;height:64px}.shichen-icon__face{stroke-width:.9px}.shichen-icon__character{fill:currentColor;stroke:none;font-family:var(--font-xiaozhuanti), serif;text-anchor:middle;dominant-baseline:central;font-size:8px}.shichen-icon__character--minor{fill:#6f6f6f;font-size:7.2px}.hieroglyphs-icon{color:#173d66}.mo-icon svg,.chess-icon img,.hieroglyphs-icon svg{width:64px;height:64px}.movable-type-icon svg{width:64px;height:64px;overflow:visible}.movable-type-icon path{stroke-linejoin:round}.movable-type-icon__left{fill:#a9a49d;stroke:#24201d;stroke-width:1.1px}.movable-type-icon__right{fill:#6f6a64;stroke:#24201d;stroke-width:1.1px}.movable-type-icon__smear{fill:#24201d;opacity:.42}.movable-type-icon__nick{fill:none;stroke:#24201d;stroke-width:.9px;opacity:.7}.movable-type-icon__face{fill:#2b2724;stroke:#24201d;stroke-width:1.1px}.movable-type-icon__glyph{fill:#e2ddd5;stroke:#0e0c0b;stroke-width:.9px;paint-order:stroke;text-anchor:middle;dominant-baseline:central;font-family:Songti TC,STSong,Noto Serif TC,Noto Serif CJK TC,PMingLiU,serif;font-size:7.6px;font-weight:600}
.lab-showcase{--showcase-ink:#1a1a1a;--showcase-aspect:16 / 9;--showcase-width:max(100%, min(1280px, calc(100vw - var(--grid-size) * 2), calc((100svh - 240px) * var(--showcase-aspect))));padding-bottom:var(--grid-size)}.lab-showcase__plate{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;width:var(--showcase-width);margin-inline:calc((100% - var(--showcase-width)) / 2);aspect-ratio:var(--showcase-aspect);isolation:isolate;background:#f3f0e9;border-radius:16px;display:block;position:relative;overflow:hidden;box-shadow:-10px 0 24px -16px #281e1438,10px 0 24px -16px #281e1438}.lab-showcase__plate:focus-visible{outline:2px solid var(--showcase-ink);outline-offset:4px}.lab-showcase__media{transition:transform .6s cubic-bezier(.22,1,.36,1);position:absolute;inset:0}@media (prefers-reduced-motion:no-preference){.lab-showcase__media{animation:.16s ease-out both lab-showcase-in}.lab-showcase__plate:hover .lab-showcase__media{transform:scale(1.015)}}@keyframes lab-showcase-in{0%{opacity:0}}.lab-showcase__poster,.lab-showcase__video{object-fit:cover;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;inset:0}.lab-showcase__video{opacity:0;transition:opacity .4s}.lab-showcase__video[data-playing]{opacity:1}.lab-showcase__open-anchor{z-index:1;display:flex;position:absolute;bottom:12px;left:12px}.lab-showcase__open{color:var(--showcase-ink);font-family:var(--font-mono);white-space:nowrap;background:#ffffff80;border-radius:14px;padding:4px 12px;font-size:.75rem;line-height:20px;display:block}.lab-showcase__open-label{position:relative}.lab-showcase__tabs{touch-action:pinch-zoom;width:var(--showcase-width);margin-inline:calc((100% - var(--showcase-width)) / 2);justify-content:center;gap:2px;margin-bottom:12px;display:flex}.lab-showcase__tab{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:pinch-zoom;color:#6f6f6f;width:76px;min-width:0;font:inherit;cursor:default;-webkit-tap-highlight-color:transparent;background:0 0;border:0;flex-direction:column;align-items:center;gap:4px;padding:2px 0;transition:color .12s;display:flex;position:relative}@media (hover:hover) and (pointer:fine){.lab-showcase__tab{cursor:pointer}}.lab-showcase__icon{--lab-circle:48px;--lab-icon-scale:.52;width:var(--lab-circle);height:var(--lab-circle);background:#00000009;border-radius:50%;transition:background-color .12s,box-shadow .12s,transform .12s;position:relative;overflow:hidden}.lab-showcase__icon>.icon-wrapper{opacity:.75;filter:grayscale(.4);width:64px;height:64px;transform:scale(var(--lab-icon-scale));margin:-32px 0 0 -32px;transition:opacity .12s,filter .12s;position:absolute;top:50%;left:50%}.lab-showcase__icon img{-webkit-user-drag:none}.lab-showcase__tab-title{max-width:100%;font-family:var(--font-mono);text-align:center;white-space:nowrap;text-wrap:balance;font-size:.7rem;line-height:1.3}.lab-showcase__tab:hover .lab-showcase__icon,.lab-showcase__tab:focus-visible .lab-showcase__icon{background:#0000000f}.lab-showcase__tab:hover .icon-wrapper,.lab-showcase__tab:focus-visible .icon-wrapper{opacity:.9;filter:none}.lab-showcase__tab:active .lab-showcase__icon{transform:scale(.94)}.lab-showcase__tab:focus-visible{outline:none}.lab-showcase__tab:focus-visible .lab-showcase__icon{outline:1px solid var(--showcase-ink);outline-offset:2px}.lab-showcase__tab[aria-selected=true]{color:var(--showcase-ink)}.lab-showcase__tab[aria-selected=true] .lab-showcase__icon{background:#fff;box-shadow:0 0 0 1px #0000001a,0 6px 14px -8px #0000004d}.lab-showcase__tab[aria-selected=true] .icon-wrapper{opacity:1;filter:none}@media (max-width:640px){.lab-showcase{--showcase-width:100%}.lab-showcase__plate{border-radius:12px}.lab-showcase__tabs{gap:0;margin-bottom:10px}.lab-showcase__tab{flex:1 1 0;justify-content:center;width:auto;min-height:44px}.lab-showcase__icon{--lab-circle:40px;--lab-icon-scale:.44}.lab-showcase__tab-title{display:none}}@media (max-width:400px){.lab-showcase__icon{--lab-circle:34px;--lab-icon-scale:.38}}@media (max-width:340px){.lab-showcase__icon{--lab-circle:30px;--lab-icon-scale:.34}}
