:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--background:#fff;--surface:#fff;--border:#d0d7de;--text:#1f2328;--text-secondary:#59636e;--contribution-card-glow:#40c4631c;--contribution-card-border-from:#40c46394;--contribution-card-border-to:#216e3924;--button-fill:#1f2328;--button-fill-text:#fff;--content-width:1120px;--sans:"SF Pro Text", "Avenir Next", "Segoe UI", "Helvetica Neue", Arial, sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}*{box-sizing:border-box}html{background:var(--background);scroll-behavior:smooth;max-width:100%;overflow-x:clip}body{max-width:100%;min-height:100vh;color:var(--text);background:var(--background);font-family:var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;line-height:1.5;overflow-x:clip}img,canvas{display:block}::view-transition-old(root){mix-blend-mode:normal;animation:none}::view-transition-new(root){mix-blend-mode:normal;animation:none}html[data-magicui-theme-vt=active]::view-transition-group(root){animation-duration:var(--magicui-theme-toggle-vt-duration,.4s)}html[data-magicui-theme-vt=active]::view-transition-new(root){clip-path:var(--magicui-theme-vt-clip-from)}.floating-header{--floating-header-progress:0;top:max(12px, env(safe-area-inset-top));z-index:90;width:min(calc(100% - 40px), var(--content-width));pointer-events:none;isolation:isolate;border-radius:19px;height:58px;position:fixed;left:50%;transform:translate(-50%)}.floating-header:before{z-index:-1;border-radius:inherit;content:"";opacity:var(--floating-header-progress);transform:scale(calc(.985 + var(--floating-header-progress) * .015));transform-origin:top;-webkit-backdrop-filter:blur(24px)saturate(180%);backdrop-filter:blur(24px)saturate(180%);will-change:opacity, transform;background:linear-gradient(#ffffffc7,#ffffff94),#f6f6f68a;border:1px solid #1f23281f;position:absolute;inset:0;box-shadow:0 14px 38px #1f23281f,0 2px 8px #1f23280f,inset 0 1px #ffffffe0}.floating-header[data-active=true]{pointer-events:auto}.floating-header-content{justify-content:space-between;align-items:center;gap:20px;height:100%;padding:0 12px;display:flex}.floating-header-identity{align-items:center;gap:10px;display:flex}.floating-header-target{visibility:hidden;pointer-events:none}.floating-header-avatar-target{flex:none;width:38px;height:38px;display:block}.floating-header-home{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;place-items:center;padding:0;display:grid}.floating-header-home:focus-visible{outline:2px solid color-mix(in srgb, var(--text) 42%, transparent);outline-offset:2px;border-radius:8px}.floating-header-home--avatar{border-radius:50%}.floating-header-name-cluster{align-items:center;gap:6px;display:flex}.floating-header-name-target{letter-spacing:-.035em;white-space:nowrap;font-family:Georgia,Times New Roman,serif;font-size:24px;font-style:italic;font-weight:700;line-height:1;display:block}.floating-header-github{width:38px;height:38px;color:var(--text);border-radius:50%;flex:none;place-items:center;text-decoration:none;transition:background-color .18s;display:grid}.floating-header-github:hover,.floating-header-github:focus-visible{background:color-mix(in srgb, var(--text) 7%, transparent);outline:none}.floating-header-github-target{width:23px;height:23px;display:block}.floating-header-navigation{min-width:0;opacity:var(--floating-header-progress);transform:translate3d(0, calc((1 - var(--floating-header-progress)) * -4px), 0);align-items:center;gap:4px;margin-left:auto;transition:opacity .16s;display:flex}.floating-header-nav-link{color:var(--text-secondary);white-space:nowrap;border-radius:8px;padding:7px 9px;font-size:14px;font-weight:500;line-height:1;text-decoration:none;transition:color .18s,background-color .18s}.floating-header-nav-link:hover,.floating-header-nav-link:focus-visible{color:var(--text);background:color-mix(in srgb, var(--text) 7%, transparent);outline:none}.floating-header-commit-count{border-left:1px solid color-mix(in srgb, var(--border) 76%, transparent);min-width:98px;color:var(--text);font-variant-numeric:tabular-nums;letter-spacing:-.01em;white-space:nowrap;margin-left:6px;padding-left:18px;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:13px;font-weight:500;line-height:1}.floating-header-commit-count--loading{visibility:hidden}[data-floating-header-source=github],html[data-floating-profile=settled] [data-floating-header-source=avatar],html[data-floating-profile=settled] [data-floating-header-source=name]{pointer-events:none}html[data-floating-profile] .profile-github-link{isolation:auto;overflow:visible}html[data-floating-profile] .profile-github-content{z-index:auto}html[data-floating-profile] .profile-github-hover-content{transform:translate(0)}html[data-floating-profile] .profile-intro-name-face{background:0 0}.homepage-dock-shell{bottom:max(14px, env(safe-area-inset-bottom));z-index:100;pointer-events:none;position:fixed;left:50%;transform:translate(-50%)}.homepage-dock-motion{will-change:transform;backface-visibility:hidden;position:relative}.magic-dock{pointer-events:auto;-webkit-backdrop-filter:blur(18px)saturate(150%);backdrop-filter:blur(18px)saturate(150%);background:#ffffffb8;border:1px solid #1f23281f;border-radius:18px;justify-content:center;align-items:center;gap:6px;width:max-content;max-width:calc(100vw - 16px);height:58px;padding:8px;display:flex;box-shadow:0 18px 50px #1f232826,0 2px 8px #1f232814,inset 0 1px #ffffffd1}.magic-dock--top{align-items:flex-start}.magic-dock--middle{align-items:center}.magic-dock--bottom{align-items:flex-end}.magic-dock-icon{transform-origin:bottom;border-radius:50%;flex:none;justify-content:center;align-items:center;display:flex;position:relative}.magic-dock-icon-content,.homepage-dock-item{justify-content:center;align-items:center;width:100%;height:100%;display:flex}.homepage-dock-item{color:var(--text);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:50%;padding:0;text-decoration:none;position:relative}.homepage-dock-item:after{z-index:2;color:var(--background);background:color-mix(in srgb, var(--text) 92%, transparent);content:attr(data-tooltip);opacity:0;pointer-events:none;white-space:nowrap;border-radius:7px;padding:4px 8px;font-size:11px;font-weight:600;line-height:1.3;transition:opacity .16s,transform .16s;position:absolute;bottom:calc(100% + 11px);left:50%;transform:translate(-50%,5px)}.homepage-dock-item:hover:after,.homepage-dock-item:focus-visible:after{opacity:1;transform:translate(-50%)}.homepage-dock-item:focus-visible{outline:2px solid color-mix(in srgb, var(--text) 58%, transparent);outline-offset:2px}.homepage-dock-home-icon{stroke-width:1.8px;width:58%;height:58%}.homepage-dock-app-icon{object-fit:cover;border-radius:23%;width:90%;height:90%;box-shadow:0 3px 9px #1f232821}.homepage-dock-social-icon{object-fit:contain;width:64%;height:64%}.homepage-dock-theme-toggle svg{stroke-width:1.8px;width:58%;height:58%}.homepage-dock-separator{background:color-mix(in srgb, var(--text) 18%, transparent);flex:none;width:1px;height:32px;margin:0 2px}.homepage-dock-wechat-card{border:1px solid color-mix(in srgb, var(--border) 78%, transparent);background:color-mix(in srgb, var(--surface) 90%, transparent);pointer-events:auto;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-radius:16px;place-items:center;gap:5px;width:188px;padding:10px 10px 8px;display:grid;position:absolute;bottom:calc(100% + 14px);left:50%;transform:translate(-50%);box-shadow:0 18px 48px #1f23282e}.homepage-dock-wechat-card img{border-radius:10px;width:100%}.homepage-dock-wechat-card span{color:var(--text-secondary);font-size:12px;font-weight:600}.homepage-dock-theme-menu{border:1px solid color-mix(in srgb, var(--border) 78%, transparent);background:color-mix(in srgb, var(--surface) 90%, transparent);pointer-events:auto;transform-origin:100% 100%;-webkit-backdrop-filter:blur(18px)saturate(140%);backdrop-filter:blur(18px)saturate(140%);border-radius:14px;gap:2px;width:132px;padding:6px;display:grid;position:absolute;bottom:calc(100% + 14px);right:0;box-shadow:0 18px 48px #1f23282e}.homepage-dock-theme-option{width:100%;height:36px;color:var(--text);cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;border-radius:9px;grid-template-columns:18px 1fr 14px;align-items:center;gap:8px;padding:0 9px;font-size:13px;font-weight:560;transition:background-color .16s;display:grid}.homepage-dock-theme-option:hover,.homepage-dock-theme-option:focus-visible,.homepage-dock-theme-option[aria-checked=true]{background:color-mix(in srgb, var(--text) 8%, transparent)}.homepage-dock-theme-option:focus-visible{outline:2px solid color-mix(in srgb, var(--text) 48%, transparent);outline-offset:-2px}.homepage-dock-theme-option>svg:first-child{stroke-width:1.8px;width:17px;height:17px}.homepage-dock-language-code{width:18px;height:18px;color:var(--text-secondary);letter-spacing:-.04em;place-items:center;font-size:10px;font-weight:720;display:grid}.homepage-dock-theme-check{opacity:0;stroke-width:2.2px;width:14px;height:14px}.homepage-dock-theme-option[aria-checked=true] .homepage-dock-theme-check{opacity:1}.container{width:min(100% - 48px, var(--content-width));margin:0 auto}.profile-intro{padding:clamp(50px,5.6vw,74px) 0 40px}.profile-intro-layout{grid-template-columns:minmax(400px,.88fr) minmax(480px,1.12fr);align-items:center;gap:clamp(48px,6vw,80px);display:grid}.profile-intro-copy{--profile-block-height:136px;--profile-orbit-size:calc(var(--profile-block-height) + 28px);--profile-spinning-text-radius:82px;grid-template-columns:var(--profile-orbit-size) minmax(0, 1fr);height:var(--profile-orbit-size);align-items:center;gap:24px;min-width:0;display:grid}.profile-avatar-orbit{width:var(--profile-orbit-size);height:var(--profile-orbit-size);place-items:center;display:grid;position:relative}.profile-intro-avatar{width:var(--profile-block-height);height:var(--profile-block-height);object-fit:cover;transform-origin:50%;border:1px solid #1f232814;border-radius:50%;transition:transform .22s cubic-bezier(.16,1,.3,1),box-shadow .22s cubic-bezier(.16,1,.3,1);transform:translateZ(0)scale(1);box-shadow:0 10px 24px #14181c14}.spinning-text{position:relative}.spinning-text-character{display:inline-block;position:absolute;top:50%;left:50%}.profile-avatar-spinning-text{color:var(--text);letter-spacing:.025em;pointer-events:none;-webkit-user-select:none;user-select:none;font-size:9.5px;font-weight:600;line-height:1;position:absolute;inset:0}@media (hover:hover) and (pointer:fine){.profile-intro-avatar:hover,.profile-intro-avatar:focus-visible{transform:translateZ(0)scale(1.04);box-shadow:0 16px 34px #14181c24}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.profile-intro-text{--profile-name-size:clamp(38px, 4vw, 48px);height:var(--profile-block-height);flex-direction:column;justify-content:space-between;align-items:flex-start;min-width:0;display:flex}.profile-intro-name-slot{height:calc(var(--profile-name-size) - 4px);flex:0 0 calc(var(--profile-name-size) - 4px)}.profile-intro-name{color:var(--text);font-family:Georgia,Times New Roman,serif;font-size:var(--profile-name-size);letter-spacing:-.035em;margin:0 0 -4px;font-style:italic;font-weight:650;line-height:1}.text-3d-flip{perspective:600px;flex-wrap:wrap;display:inline-flex;position:relative}.text-3d-flip-word{display:inline-flex}.text-3d-flip-char{transform-style:preserve-3d;will-change:transform;display:inline-block;position:relative}.text-3d-flip-face{backface-visibility:hidden;height:1lh;transform-style:preserve-3d;display:block}.text-3d-flip-face--front{position:relative}.text-3d-flip-face--back{position:absolute;top:0;left:0}.profile-intro-name-face{color:var(--text);background:var(--background)}.profile-intro-bio{max-width:none;color:var(--text-secondary);letter-spacing:-.018em;text-wrap:pretty;margin:0;font-size:15px;font-weight:400;line-height:1.5}.profile-intro-bio-phrase{white-space:nowrap;display:inline-block}.profile-github-link{--github-badge-size:26px;--github-badge-left:7px;--github-icon-column:32px;--github-icon-size:20px;--github-icon-left:10px;--github-arrow-right:8px;isolation:isolate;width:160px;height:40px;color:var(--text);background:var(--surface);box-shadow:inset 0 0 0 1px var(--border), 0 4px 14px #1f23280a;letter-spacing:-.012em;border:0;border-radius:999px;justify-content:center;align-items:center;font-size:15px;font-weight:600;line-height:1;text-decoration:none;transition:box-shadow .3s,transform .3s;display:inline-flex;position:relative;overflow:hidden}.profile-github-link:before{top:50%;left:var(--github-badge-left);z-index:0;width:var(--github-badge-size);height:var(--github-badge-size);background:var(--button-fill);content:"";border-radius:50%;transition:transform .3s;position:absolute;transform:translateY(-50%)scale(0)}.profile-github-content,.profile-github-hover-content{z-index:1;grid-template-columns:var(--github-icon-column) minmax(0, 1fr);white-space:nowrap;align-items:center;width:100%;height:100%;transition:opacity .32s,transform .42s cubic-bezier(.16,1,.3,1);display:grid}.profile-github-content{padding:0}.profile-github-icon-slot{align-items:center;width:100%;height:100%;display:flex}.profile-github-hover-content{color:var(--button-fill-text);opacity:0;padding:0;position:absolute;inset:0;transform:translate(48px)}.profile-github-image{width:var(--github-icon-size);height:var(--github-icon-size);margin-left:var(--github-icon-left);flex:none;justify-self:start}.profile-github-label{text-align:center;grid-column:2;justify-self:stretch;transform:translate(-5px)}.profile-github-action{text-align:center;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.profile-github-image--hover{filter:brightness(0)invert()}.profile-github-arrow{top:50%;right:var(--github-arrow-right);flex:none;width:24px;height:24px;position:absolute;transform:translateY(-50%)}.profile-github-link:hover,.profile-github-link:focus-visible{outline:none;transform:translateY(-1px);box-shadow:0 8px 22px #1f23281f}.profile-github-link:hover:before,.profile-github-link:focus-visible:before{transform:translateY(-50%)scale(100.8)}.profile-github-link:hover .profile-github-content,.profile-github-link:focus-visible .profile-github-content{opacity:0;transform:translate(48px)}.profile-github-link:hover .profile-github-hover-content,.profile-github-link:focus-visible .profile-github-hover-content{opacity:1;transform:translate(0)}.contribution-grid-shell{border:1px solid var(--border);width:100%;min-width:0;height:176px;color:var(--text-secondary);background:var(--surface);border-radius:16px;position:relative;overflow:hidden;box-shadow:0 10px 30px #1f232809}.magic-card{background:var(--surface);position:relative}.magic-card-glow-clip,.magic-card-border-mask{pointer-events:none;contain:paint;position:absolute}.magic-card-glow-clip{z-index:0;border-radius:inherit;inset:1px;overflow:hidden}.magic-card-glow-orb,.magic-card-border-orb{will-change:transform, opacity;border-radius:50%;position:absolute;top:0;left:0;transform:translateZ(0)}.magic-card-border-mask{z-index:3;border-radius:inherit;-webkit-mask-composite:xor;padding:1px;inset:-1px;-webkit-mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);-webkit-mask-position:0 0,0 0;mask-position:0 0,0 0;-webkit-mask-size:auto,auto;mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.magic-card-content{z-index:1;width:100%;height:100%;position:relative}.contribution-grid-static{contain:strict;backface-visibility:hidden;width:100%;height:100%;position:relative;overflow:hidden;transform:translateZ(0)}.contribution-grid-canvas,.contribution-grid-interaction-canvas{width:100%;height:100%;display:block}.contribution-grid-interaction-canvas{z-index:2;pointer-events:none;contain:strict;position:absolute;inset:0}.magic-pointer{z-index:50;pointer-events:none;transform-origin:50%;will-change:transform, opacity;position:absolute;top:0;left:0;translate:-50% -50%}.contribution-grid-pointer{filter:drop-shadow(0 3px 5px #1f232829);font-size:24px;line-height:1}.projects-preview{padding:clamp(32px,4vw,48px) 0 clamp(64px,8vw,104px);scroll-margin-top:88px}.projects-preview-title{letter-spacing:-.045em;margin:0 0 clamp(24px,2.5vw,32px);font-family:Georgia,Times New Roman,serif;font-size:clamp(32px,2.9vw,40px);font-style:italic;font-weight:700;line-height:1}.repositories-preview{padding:0 0 clamp(64px,8vw,104px);scroll-margin-top:88px}.repositories-preview-title{margin-bottom:clamp(24px,2.5vw,32px)}.repositories-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.repository-card{border:1px solid color-mix(in srgb, var(--border) 76%, transparent);background:color-mix(in srgb, var(--surface) 97%, var(--text) 3%);min-height:184px;color:var(--text);border-radius:14px;flex-direction:column;padding:20px;text-decoration:none;transition:border-color .22s,box-shadow .22s,transform .22s cubic-bezier(.16,1,.3,1);display:flex;position:relative;overflow:hidden;transform:translate(0,0);box-shadow:0 8px 24px #1f23280b}.repository-card-heading{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.repository-card-name{overflow-wrap:anywhere;letter-spacing:-.02em;min-width:0;margin:0;font-size:17px;font-weight:650;line-height:1.3}.repository-card-arrow{width:17px;height:17px;color:color-mix(in srgb, var(--text-secondary) 72%, transparent);flex:none;transition:color .22s,transform .22s;transform:translate(0,0)}.repository-card-description{color:color-mix(in srgb, var(--text-secondary) 82%, transparent);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:14px 0 22px;font-size:13.5px;line-height:1.55;display:-webkit-box;overflow:hidden}.repository-card-footer{color:var(--text-secondary);justify-content:space-between;align-items:center;gap:12px;margin-top:auto;font-size:12px;display:flex}.repository-card-details{align-items:center;gap:13px;min-width:0;display:flex}.repository-card-language,.repository-card-stat{white-space:nowrap;align-items:center;gap:5px;display:inline-flex}.repository-card-language-dot{border:1px solid #1f23281a;border-radius:50%;flex:none;width:9px;height:9px}.repository-card-stat svg{width:14px;height:14px}.repository-card-state{border:1px solid color-mix(in srgb, var(--border) 70%, transparent);border-radius:999px;padding:3px 7px;font-size:10.5px;line-height:1}.repository-card-footer-meta{flex:none;align-items:center;gap:8px;display:inline-flex}.repository-card-updated{color:color-mix(in srgb, var(--text-secondary) 82%, transparent);white-space:nowrap;font-size:11.5px}.repository-card--skeleton{background:linear-gradient(100deg, color-mix(in srgb, var(--text) 4%, transparent) 20%, color-mix(in srgb, var(--text) 8%, transparent) 38%, color-mix(in srgb, var(--text) 4%, transparent) 56%);background-size:220% 100%;border-color:#0000;animation:1.4s ease-in-out infinite repository-skeleton}.repositories-message{color:var(--text-secondary);margin:0;font-size:14px}.repositories-message a{color:var(--text);font-weight:600}.globe-preview{padding:0;overflow:hidden}.globe-preview-stage{width:100%;height:min(558px,82vw);margin:0 auto;position:relative}.magic-globe{aspect-ratio:1;width:100%;max-width:680px;position:absolute;left:50%;transform:translate(-50%)}.globe-preview-canvas{top:0}.magic-globe-canvas,.magic-globe-overlay{opacity:0;contain:layout paint size;width:100%;height:100%;transition:opacity .5s;display:block}.magic-globe-canvas{cursor:grab}.magic-globe-overlay{pointer-events:none;position:absolute;inset:0}@keyframes repository-skeleton{0%{background-position:100% 0}to{background-position:-100% 0}}@media (hover:hover) and (pointer:fine){.repository-card:not(.repository-card--skeleton):hover{border-color:color-mix(in srgb, var(--text) 20%, var(--border));transform:translateY(-3px);box-shadow:0 14px 34px #1f232816}.repository-card:hover .repository-card-arrow{color:var(--text);transform:translate(2px,-2px)}}.sparkles-text{display:inline-block;position:relative}.sparkles-text-label{z-index:1;position:relative}.sparkles-text-stars{z-index:2;pointer-events:none;position:absolute;inset:-10% -7%;overflow:visible}.sparkles-text-star{filter:drop-shadow(0 1px 2px #1f232814);transform-origin:50%;width:.32em;height:.32em;position:absolute}.bento-grid{grid-template-columns:repeat(5,minmax(0,1fr));grid-auto-rows:34rem;gap:16px;width:100%;display:grid}.bento-card{background:var(--surface);isolation:isolate;border-radius:12px;flex-direction:column;grid-column:span 3;justify-content:space-between;display:flex;position:relative;overflow:hidden;transform:translateZ(0);box-shadow:0 0 0 1px #00000008,0 2px 4px #0000000d,0 12px 24px #0000000d}.bento-card--narrow{grid-column:span 2}.bento-card--wide{grid-column:span 3}.bento-card-background,.bento-card-hover-overlay{position:absolute;inset:0}.bento-card-background{z-index:0;overflow:hidden}.bento-card-background:before,.bento-card-background:after,.bento-card-hover-overlay{content:"";position:absolute;inset:0}.bento-card-background:before{z-index:2;background:linear-gradient(to bottom, transparent 0%, color-mix(in srgb, var(--surface) 10%, transparent) 46%, color-mix(in srgb, var(--surface) 58%, transparent) 100%);-webkit-backdrop-filter:blur(6px)saturate(90%);backdrop-filter:blur(6px)saturate(90%);height:24%;top:auto;-webkit-mask-image:linear-gradient(#0000 0%,#0000002e 34%,#000 82%);mask-image:linear-gradient(#0000 0%,#0000002e 34%,#000 82%)}.bento-card-background:after{z-index:3;background:linear-gradient(to top, var(--surface) 0%, color-mix(in srgb, var(--surface) 88%, transparent) 12%, color-mix(in srgb, var(--surface) 46%, transparent) 22%, color-mix(in srgb, var(--surface) 12%, transparent) 28%, transparent 34%)}.bento-card-body{z-index:2;margin-top:auto;padding:16px;position:relative}.bento-card-copy{pointer-events:none;flex-direction:column;gap:4px;transition:transform .3s;display:flex;transform:translate(0,0)}.bento-card-icon{width:48px;height:48px;color:color-mix(in srgb, var(--text) 78%, transparent);filter:drop-shadow(0 5px 10px #1f232821);object-fit:contain;transform-origin:0;transition:transform .3s ease-in-out;display:block;transform:translate(0,0)scale(1)}.bento-card-title{color:color-mix(in srgb, var(--text) 82%, transparent);margin:0;font-size:20px;font-weight:600;line-height:1.35}.bento-card-description{max-width:32rem;color:color-mix(in srgb, var(--text-secondary) 76%, transparent);margin:0;font-size:14px;line-height:1.45}.bento-card-action{pointer-events:none;align-items:center;display:flex}.bento-project-actions{--bento-project-action-height:36px;--bento-project-action-width:108px;pointer-events:auto;justify-content:flex-start;align-items:center;gap:8px;width:100%;display:flex}.bento-project-button,.bento-project-store-link{width:var(--bento-project-action-width);height:var(--bento-project-action-height);transform-origin:50%;flex:none;transition:transform .22s,box-shadow .22s,background-color .22s;transform:translateZ(0)scale(1)}.bento-project-button{color:#2b3134;white-space:nowrap;background:#fff;border:1px solid #2124281f;border-radius:8px;justify-content:center;align-items:center;gap:7px;padding:0 12px;font-size:13px;font-weight:700;line-height:1;text-decoration:none;display:inline-flex;box-shadow:0 3px 9px #1f23281a}.bento-project-button--website{color:#f8fbf6;background:#387644;border-color:#387644}.bento-project-button-icon{object-fit:contain;flex:none;width:18px;height:18px;display:block}.bento-project-store-link{border-radius:8px;display:inline-flex;overflow:hidden}.bento-project-store-badge{object-fit:contain;width:100%;height:100%;display:block}.bento-project-button:hover,.bento-project-button:focus-visible,.bento-project-store-link:hover,.bento-project-store-link:focus-visible{outline:none;transform:translateZ(0)scale(1.035)}.bento-project-button:hover,.bento-project-button:focus-visible{background:#f7fbf8;box-shadow:0 5px 13px #1f232824}.bento-project-button--website:hover,.bento-project-button--website:focus-visible{background:#346f3f}.bento-project-store-link:focus-visible,.bento-project-button:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--text) 18%, transparent)}.bento-card-action--desktop{z-index:3;opacity:0;width:100%;padding:16px;transition:opacity .3s,transform .3s;display:flex;position:absolute;bottom:0;left:0;transform:translateY(40px)}.bento-card-action--mobile{margin-top:14px;display:none}.bento-card-hover-overlay{z-index:1;pointer-events:none;transition:background-color .3s}.bento-screenshot-frame{position:absolute;inset:16px 16px -18px;overflow:visible}.bento-screenshot-frame--yumchicken{width:60%;left:50%;right:auto;transform:translate(-50%)}.bento-screenshot{transform-origin:top;width:100%;height:auto;transition:transform .22s cubic-bezier(.16,1,.3,1);display:block;transform:translate(0,0)scale(1)}.bento-screenshot-frame--macmix,.bento-screenshot-frame--macmix .bento-screenshot{border-radius:12px}@media (hover:hover) and (pointer:fine){.bento-card:hover .bento-card-copy{transform:translateY(-48px)}.bento-card:hover .bento-card-icon{transform:translate(0,0)scale(.75)}.bento-card:hover .bento-card-action--desktop{opacity:1;transform:translate(0,0)}.bento-card:hover .bento-card-hover-overlay{background:#00000008}.bento-card:hover .bento-screenshot{transform:translate(0,0)scale(1.04)}}@media (width<=900px){.profile-intro-layout{grid-template-columns:1fr;gap:40px}.profile-intro-copy{max-width:560px}.contribution-grid-shell{height:168px}.bento-grid{grid-auto-rows:32rem}.repositories-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=560px){.floating-header{top:max(8px, env(safe-area-inset-top));border-radius:17px;width:calc(100% - 24px);height:52px}.floating-header-content{gap:6px;padding:0 7px}.floating-header-identity{gap:8px}.floating-header-name-cluster{gap:4px}.floating-header-navigation{gap:0}.floating-header-nav-link{padding:6px 4px;font-size:12.5px}.floating-header-commit-count{min-width:82px;margin-left:2px;padding-left:10px;font-size:11.5px}.floating-header-avatar-target,.floating-header-github{width:34px;height:34px}.floating-header-name-target{font-size:21px}.floating-header-github-target{width:21px;height:21px}.profile-intro-bio{font-size:14px;line-height:1.5}.contribution-grid-shell{border-radius:14px;height:118px}.bento-grid{grid-template-columns:1fr;grid-auto-rows:30rem;gap:14px}.bento-card--narrow,.bento-card--wide{grid-column:span 1}.bento-card{border-radius:12px}.bento-card-action--desktop{display:none}.bento-card-action--mobile{display:flex}.bento-project-actions{--bento-project-action-height:34px;--bento-project-action-width:98px;gap:7px}.bento-project-button{padding:0 10px;font-size:12px}.bento-project-button-icon{width:17px;height:17px}.bento-screenshot-frame{top:12px;left:12px;right:12px}.bento-screenshot-frame--yumchicken{width:60%;left:50%;right:auto}.repositories-grid{grid-template-columns:1fr;gap:14px}.homepage-dock-shell{bottom:max(8px, env(safe-area-inset-bottom))}.magic-dock{border-radius:15px;gap:2px;height:46px;padding:6px}.homepage-dock-separator{height:25px;margin:0 1px}.homepage-dock-item:after{display:none}}@media (width<=380px){.floating-header-content{gap:4px;padding:0 6px}.floating-header-identity{gap:6px}.floating-header-name-cluster{gap:3px}.floating-header-avatar-target,.floating-header-github{width:30px;height:30px}.floating-header-name-target{font-size:19px}.floating-header-github-target{width:19px;height:19px}.floating-header-nav-link{padding:5px 3px;font-size:11.5px}.floating-header-commit-count{min-width:76px;margin-left:1px;padding-left:8px;font-size:10.5px}.profile-intro{padding:42px 0 32px}.profile-intro-layout{gap:42px}.profile-github-link{width:184px;height:36px;font-size:13.5px}.contribution-grid-shell{border-radius:14px;height:118px}.projects-preview{padding:32px 0 64px}.projects-preview-title{margin-bottom:24px;font-size:32px}.repositories-grid{grid-template-columns:1fr;gap:14px}.repository-card{min-height:166px;padding:18px}.globe-preview-stage{height:385px}.globe-preview-canvas{width:470px;max-width:none;top:0}.container{width:min(100% - 32px, var(--content-width))}.profile-intro{padding-top:38px}.profile-intro-copy{--profile-block-height:112px;--profile-spinning-text-radius:70px;gap:16px}.profile-avatar-spinning-text{font-size:8px}.profile-intro-text{--profile-name-size:36px}.projects-preview-title{font-size:30px}.profile-intro-bio{max-width:164px;font-size:12.5px;line-height:1.4}.profile-github-link{--github-badge-size:24px;--github-badge-left:6px;--github-icon-column:30px;--github-icon-size:18px;--github-icon-left:9px;--github-arrow-right:6px;width:148px;height:36px;font-size:13.5px}}.dark{--background:#0d1117;--surface:#0d1117;--border:#30363d;--text:#f0f6fc;--text-secondary:#8b949e;--contribution-card-glow:#39d3531a;--contribution-card-border-from:#39d35380;--contribution-card-border-to:#26a64129}.dark .profile-intro-avatar{border-color:#f0f6fc1a;box-shadow:0 12px 28px #0000003d}.dark .magic-dock{background:#0d1117b8;border-color:#f0f6fc26;box-shadow:0 18px 50px #00000057,0 2px 8px #0000003d,inset 0 1px #ffffff1a}.dark .floating-header:before{background:linear-gradient(#232325c2,#1313159e),#1111138f;border-color:#f0f6fc24;box-shadow:0 16px 42px #00000052,0 2px 8px #0003,inset 0 1px #ffffff1f}.dark[data-floating-profile=settled] [data-floating-header-source=github]{filter:brightness(0)invert()}.dark .homepage-dock-app-icon{box-shadow:0 3px 10px #0000004d}.dark .homepage-dock-social-icon--dark-invert{filter:brightness(0)invert()}.dark .profile-github-link{color:#1f2328;background:#fff;box-shadow:inset 0 0 0 1px #1f232829,0 4px 14px #0000002e}.dark .homepage-dock-wechat-card,.dark .homepage-dock-theme-menu{box-shadow:0 18px 48px #00000061}@media (hover:hover) and (pointer:fine){.dark .profile-intro-avatar:hover,.dark .profile-intro-avatar:focus-visible{box-shadow:0 18px 40px #00000057}}.dark .contribution-grid-shell{box-shadow:0 10px 30px #00000024}.dark .bento-card{box-shadow:0 0 0 1px #ffffff1a,inset 0 -20px 80px -20px #ffffff1f}.dark .bento-card-icon{filter:drop-shadow(0 5px 10px #0000003d)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
