@font-face{font-family:"Noto Serif SC";src:url(/fonts/noto-serif-sc-600.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Noto Sans SC;src:url(/fonts/noto-sans-sc-400.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Noto Sans SC;src:url(/fonts/noto-sans-sc-600.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/fonts/ibm-plex-mono-400.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}:root,html[data-theme=light]{--bg: #f7f7f5;--bg-dot: rgba(26, 26, 26, .07);--raise: #ffffff;--ink: #171717;--soft: #3a3a3a;--mute: #8a8a8a;--line: rgba(23, 23, 23, .09);--line-strong: rgba(23, 23, 23, .16);--accent: #1c1c1c;--accent-ink: #ffffff;--code: #efefed;--code-ink: #171717;--scroll: #b8b8b4;--new-bg: #d7efe0;--new-ink: #1f6b45;--badge-shadow: 0 22px 50px rgba(40, 70, 110, .14), 0 8px 18px rgba(23, 23, 23, .06);--cover-0: linear-gradient(145deg, #c9d7e6 0%, #8fa8bf 42%, #3d5163 100%);--cover-1: linear-gradient(145deg, #ddd4c4 0%, #b5a48a 42%, #5a4f3d 100%);--cover-2: linear-gradient(145deg, #d3e2d8 0%, #8fad9a 42%, #3d5648 100%);--cover-3: linear-gradient(145deg, #e2d2da 0%, #b08f9e 42%, #5a3f4c 100%);--cover-4: linear-gradient(145deg, #d5d8e6 0%, #9399b3 42%, #3f445a 100%);--serif: "Noto Serif SC", "Songti SC", "SimSun", serif;--sans: "Noto Sans SC", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--mono: "IBM Plex Mono", "Noto Sans SC", ui-monospace, monospace;--space-2xs: 4px;--space-xs: 8px;--space-sm: 12px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--space-2xl: 48px;--space-3xl: 64px;--space-4xl: 96px;--rail: 400px;--badge-width: 255px;--rail-content: var(--badge-width);--frame-max: 1180px;--frame-gap: var(--space-md);--page-inline: clamp(20px, 3vw, 32px);--space-10: 40px;--page-block: var(--space-10);--rule: var(--line);--work-title-size: 42px;--work-summary-size: 14px;--ease: cubic-bezier(.16, 1, .3, 1);color-scheme:light;background:var(--bg)}html[data-theme=dark]{--bg: #121212;--bg-dot: rgba(245, 245, 243, .08);--raise: #1c1c1c;--ink: #f4f4f2;--soft: #d2d2ce;--mute: #9a9a94;--line: rgba(244, 244, 242, .12);--line-strong: rgba(244, 244, 242, .24);--accent: #f4f4f2;--accent-ink: #121212;--code: #0d0d0d;--code-ink: #e8e8e4;--scroll: #555550;--new-bg: #1f3b2d;--new-ink: #9fd7b5;--badge-shadow: 0 22px 50px rgba(0, 0, 0, .5), 0 8px 18px rgba(0, 0, 0, .28);--cover-0: linear-gradient(145deg, #2a3744 0%, #4d6478 42%, #9fb3c5 100%);--cover-1: linear-gradient(145deg, #332e24 0%, #6a5d48 42%, #c2b49a 100%);--cover-2: linear-gradient(145deg, #24332b 0%, #4d6a5a 42%, #a7c0b1 100%);--cover-3: linear-gradient(145deg, #33262c 0%, #6a4d5a 42%, #c2a7b3 100%);--cover-4: linear-gradient(145deg, #282c3a 0%, #4d5570 42%, #a7adc4 100%);color-scheme:dark}@media(prefers-color-scheme:dark){:root:not([data-theme]){--bg: #121212;--bg-dot: rgba(245, 245, 243, .08);--raise: #1c1c1c;--ink: #f4f4f2;--soft: #d2d2ce;--mute: #9a9a94;--line: rgba(244, 244, 242, .12);--line-strong: rgba(244, 244, 242, .24);--accent: #f4f4f2;--accent-ink: #121212;--code: #0d0d0d;--code-ink: #e8e8e4;--scroll: #555550;--new-bg: #1f3b2d;--new-ink: #9fd7b5;--badge-shadow: 0 22px 50px rgba(0, 0, 0, .5), 0 8px 18px rgba(0, 0, 0, .28);--cover-0: linear-gradient(145deg, #2a3744 0%, #4d6478 42%, #9fb3c5 100%);--cover-1: linear-gradient(145deg, #332e24 0%, #6a5d48 42%, #c2b49a 100%);--cover-2: linear-gradient(145deg, #24332b 0%, #4d6a5a 42%, #a7c0b1 100%);--cover-3: linear-gradient(145deg, #33262c 0%, #6a4d5a 42%, #c2a7b3 100%);--cover-4: linear-gradient(145deg, #282c3a 0%, #4d5570 42%, #a7adc4 100%);color-scheme:dark}}*,*:before,*:after{box-sizing:border-box}html{background:var(--bg);scroll-padding-top:var(--space-4xl);scrollbar-color:var(--scroll) transparent}body{margin:0;min-height:100vh;background:radial-gradient(circle,var(--bg-dot) 1px,transparent 1.15px) 0 0 / 16px 16px,var(--bg);color:var(--ink);font-family:var(--sans);font-weight:400;font-size:16px;line-height:1.6;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}::selection{background:var(--ink);color:var(--bg)}:focus{outline:none}:focus-visible{outline:2px solid var(--ink);outline-offset:3px}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--scroll);border:2px solid var(--bg);border-radius:999px}h1,h2,h3,p,dl,dd,ol,ul{margin:0}a{color:inherit;text-underline-offset:3px}button{font:inherit;color:inherit}.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip{position:absolute;left:12px;top:12px;transform:translateY(-160%);background:var(--ink);color:var(--bg);padding:8px 12px;border-radius:999px;z-index:50;text-decoration:none}.skip:focus{transform:none}.frame{display:grid;grid-template-columns:var(--rail) minmax(0,1fr);column-gap:var(--frame-gap);width:min(100%,var(--frame-max));margin-inline:auto;min-height:100vh;min-height:100svh}.rail{position:sticky;top:0;height:100vh;height:100svh;border-right:1px solid var(--rule);overflow:auto}.rail-inner{display:flex;flex-direction:column;align-items:center;gap:var(--space-md);min-height:100%;padding:var(--space-xl) var(--space-md) var(--space-lg)}.profile-badge{position:relative;display:block;width:var(--badge-width);margin:0;aspect-ratio:655 / 1380;transform:rotate(-1.2deg);transform-origin:50% 42%;flex:none;filter:drop-shadow(0 8px 14px rgba(20,24,32,.1))}html[data-theme=dark] .profile-badge{filter:drop-shadow(0 8px 16px rgba(0,0,0,.45))}.profile-badge__stage{position:absolute;top:0;left:0;width:655px;height:1380px;transform:scale(calc(var(--badge-width) / 655px));transform-origin:0 0;isolation:isolate}.profile-badge__layer{position:absolute;display:block;pointer-events:none;max-width:none}.profile-badge__lanyard{left:150px;top:0;width:330px;height:349px;z-index:10}.profile-badge__content{position:absolute;left:59px;top:503px;width:532px;height:793px;z-index:20;overflow:hidden;border-radius:32px;background:#fff}.profile-badge__photo{position:absolute;inset:0 auto auto 0;width:532px;height:422px;object-fit:cover;object-position:50% 43%;border-radius:32px 32px 0 0}.profile-badge__decoration{left:59px;top:503px;width:532px;height:793px;z-index:30}.profile-badge__text{position:absolute;top:949px;left:89px;width:460px;z-index:35}.profile-badge__name{margin:0;font-family:var(--serif);font-size:77px;font-weight:600;line-height:.95;letter-spacing:-.04em;color:#111;white-space:pre-line}.profile-badge__role{margin:22px 0 0;font-family:var(--sans);font-size:34px;font-weight:400;line-height:1.2;letter-spacing:-.03em;color:#282b2e}.profile-badge__meta{margin:36px 0 0;font-family:var(--sans);font-size:21px;font-weight:600;line-height:1.3;letter-spacing:.14em;text-transform:uppercase;color:#60636b}.profile-badge__holder{left:27px;top:389px;width:590px;height:936px;z-index:40}.profile-badge__metal{left:241px;top:293px;width:164px;height:182px;z-index:60}@media(max-width:980px){:root{--badge-width: 240px}}@media(max-width:560px){:root{--badge-width: min(72vw, 255px)}}.rail-meta{display:flex;align-items:center;justify-content:center;gap:6px;width:min(100%,var(--rail-content));color:var(--mute);font-size:12px;text-align:center}.rail-pin{flex:none;color:var(--mute)}.timeline{list-style:none;display:grid;gap:var(--space-md);width:min(100%,var(--rail-content));margin:0;padding:var(--space-md) 0 0;border-top:1px solid var(--rule);border-left:0}.timeline-item{position:relative;display:grid;grid-template-columns:44px 16px minmax(0,1fr);column-gap:0;align-items:start;padding:0}.timeline-item:before{content:"";position:absolute;left:49px;top:5px;width:7px;height:7px;border-radius:50%;background:transparent;border:1.5px solid color-mix(in srgb,var(--mute) 70%,transparent);box-sizing:border-box;z-index:1}.timeline-item:after{content:"";position:absolute;left:52px;top:0;bottom:calc(var(--space-md) * -1);width:1px;background:var(--rule)}.timeline-item:first-child:before{background:var(--ink);border-color:var(--ink)}.timeline-item:first-child:after{top:5px}.timeline-item:last-child:after{bottom:auto;height:5px}.timeline-period{grid-column:1;padding-top:2px;font-size:11px;font-style:normal;font-variant-numeric:tabular-nums;letter-spacing:.02em;color:var(--mute);line-height:1.35;text-align:right}.timeline-body{grid-column:3;min-width:0;padding-left:2px;display:grid;gap:2px}.timeline-title{font-family:var(--serif);font-size:13px;font-weight:600;line-height:1.35}.timeline-org{color:var(--soft);font-size:12px;line-height:1.4}.timeline-text{color:var(--mute);font-size:11px;line-height:1.45}.rail-actions{display:flex;gap:var(--space-xs);margin-top:auto;padding-top:var(--space-sm)}.rail-contact{width:min(100%,var(--rail-content));margin-top:auto;padding-top:var(--space-md)}.rail-links{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--space-xs)}.rail-link{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-grid;place-items:center;width:36px;height:36px;margin:0;padding:0;border:1px solid var(--line-strong);border-radius:999px;background:var(--raise);color:var(--ink);text-decoration:none;cursor:pointer;transition:background .2s var(--ease),color .2s var(--ease),border-color .2s var(--ease),transform .2s var(--ease)}.rail-link:hover,.rail-link.is-copied{background:var(--ink);border-color:var(--ink);color:var(--bg);transform:translateY(-1px)}.rail-link svg{display:block}.rail-contact .copy-status{display:block;min-height:1.2em;margin-top:var(--space-xs);font-size:12px}.btn{display:inline-flex;flex:1;align-items:center;justify-content:center;gap:7px;min-height:40px;padding:8px 12px;border-radius:999px;text-decoration:none;font-size:12px;white-space:nowrap;transition:transform .2s var(--ease),background .2s var(--ease),color .2s var(--ease),border-color .2s var(--ease)}.btn:hover{transform:translateY(-1px)}.btn-solid{background:var(--accent);color:var(--accent-ink);border:1px solid var(--accent)}.btn-ghost{background:var(--raise);color:var(--ink);border:1px solid var(--line-strong)}.pane{display:flex;flex-direction:column;min-width:0;min-height:100vh;min-height:100svh}.site-header{position:sticky;top:0;z-index:20;display:flex;flex-direction:column;align-items:stretch;padding:var(--space-lg) var(--page-inline) 0;background:color-mix(in srgb,var(--bg) 82%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.announce{display:inline-flex;align-items:center;align-self:flex-start;gap:var(--space-xs);margin:0 0 var(--space-sm);padding:5px 12px 5px 5px;border:1px solid var(--line);border-radius:999px;background:color-mix(in srgb,var(--raise) 88%,transparent);color:var(--soft);font-size:12px;width:fit-content;max-width:100%}.site-header .bar{align-self:stretch}.announce-new{display:inline-flex;align-items:center;justify-content:center;min-height:22px;padding:0 8px;border-radius:999px;background:var(--new-bg);color:var(--new-ink);font-size:10px;font-weight:600;letter-spacing:.08em}.bar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding-bottom:var(--space-sm);border-bottom:1px solid var(--rule)}.nav{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2xs) var(--space-lg)}.nav a{position:relative;text-decoration:none;color:var(--mute);font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;padding:var(--space-xs) 0;line-height:1.4}.nav a:hover,.nav a[aria-current=page]{color:var(--ink)}.nav a[aria-current=page]:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2.5px;background:var(--ink);border-radius:999px}.nav-tools{display:inline-flex;align-items:center;gap:6px;padding:4px;border:1px solid var(--line);border-radius:999px;background:color-mix(in srgb,var(--raise) 80%,transparent)}.tool-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-grid;place-items:center;width:32px;height:32px;border:0;border-radius:999px;background:transparent;color:var(--ink);text-decoration:none;cursor:pointer}.tool-btn:hover{background:color-mix(in srgb,var(--ink) 6%,transparent)}.theme-icon{display:block}html[data-theme=light] .theme-icon-moon,html:not([data-theme]) .theme-icon-moon{display:none}html[data-theme=dark] .theme-icon-sun{display:none}@media(prefers-color-scheme:dark){:root:not([data-theme]) .theme-icon-sun{display:none}:root:not([data-theme]) .theme-icon-moon{display:block}}main{flex:1;padding:var(--page-block) var(--page-inline) var(--space-3xl)}.kicker{display:flex;align-items:baseline;gap:0;margin:0 0 var(--space-sm);font-family:var(--mono);font-size:12px;letter-spacing:.14em;line-height:1;color:var(--mute);text-transform:uppercase}.section-label{display:flex;align-items:center;gap:var(--space-xs);margin:0 0 var(--space-sm)}.section-label__text{font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.12em;line-height:1.4;text-transform:uppercase;color:var(--mute)}.section-label__rule{display:block;width:24px;height:1px;background:var(--rule);flex:none}.kicker-key{color:var(--ink)}.kicker-rest{margin-left:.55em;color:var(--mute)}.page-head{margin-bottom:var(--space-md)}.page-head-home{margin:0}.index-title,.detail-title,.name,.not-found h1,.band h2,.contact h2,.readme h2{font-family:var(--serif);font-weight:600;letter-spacing:-.03em}.index-title{font-size:clamp(36px,5vw,52px);line-height:1.05}.controls{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-xs) var(--space-sm);margin:0 0 var(--space-lg);padding-bottom:var(--space-md);border-bottom:1px solid var(--rule)}.filter-label,.sort-note,.filter-count{color:var(--mute);font-size:12px;letter-spacing:.02em}.sort-note{margin-left:auto}.filter-count{font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--ink)}.filter-unit{margin-left:4px;color:var(--mute)}.filter-row{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.filter-row button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--line);background:var(--raise);min-height:34px;padding:6px 12px;border-radius:999px;cursor:pointer;font-size:13px;color:var(--soft);white-space:nowrap;transition:background .2s var(--ease),color .2s var(--ease),border-color .2s var(--ease)}.filter-row button:hover{border-color:var(--line-strong);color:var(--ink)}.filter-row button[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--bg)}.works{list-style:none;display:grid;gap:0;margin:0;padding:0}.work-card{padding-bottom:34px;margin-bottom:34px;border-bottom:1px solid var(--rule)}.work-card:last-child{margin-bottom:0;border-bottom:0}.home-page{display:flex;flex-direction:column;gap:var(--space-xl)}.pane-section{scroll-margin-top:var(--space-4xl)}.about-panel{display:flex;flex-direction:column;gap:0;padding-bottom:var(--space-lg);border-bottom:1px solid var(--rule)}.about-panel .section-label{margin-bottom:var(--space-sm)}.about-headline{margin:0 0 var(--space-xs);max-width:16em;font-family:var(--serif);font-weight:600;font-size:clamp(28px,3.6vw,36px);letter-spacing:-.025em;line-height:1.1;color:var(--ink);text-wrap:balance}.about-subhead{max-width:58ch;margin:0 0 var(--space-md);color:var(--soft);font-size:clamp(15px,1.2vw,16px);line-height:1.55;letter-spacing:-.015em;text-wrap:pretty}.about-bio{max-width:62ch;margin:0;color:var(--soft);font-size:14px;line-height:1.57;text-wrap:pretty}.about-bio+.about-bio{margin-top:var(--space-xs)}.skillset-panel{display:flex;flex-direction:column;gap:0;padding-bottom:var(--space-lg);border-bottom:1px solid var(--rule)}.skillset-panel .section-label{margin-bottom:var(--space-sm)}.about-skill-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--space-xl);row-gap:var(--space-md)}.about-skill{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-sm);padding:0;border:0}.about-skill h3{margin:0;font-family:var(--serif);font-size:16px;font-weight:600;line-height:1.3;letter-spacing:-.025em;color:var(--ink);text-wrap:balance}.gallery-block{scroll-margin-top:var(--space-4xl)}.gallery-block .page-head-section,.gallery-block .page-head-section .section-label{margin-bottom:var(--space-sm)}.gallery-works{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2xl) var(--space-lg)}.gallery-works .work-card{margin:0;padding:0;border:0;display:flex;flex-direction:column;gap:0}.gallery-works .work-media,.gallery-works .work-cover{border-radius:16px}.gallery-works .work-cover{aspect-ratio:4 / 3}.gallery-works .work-info{gap:var(--space-2xs);padding:var(--space-sm) 0 0}.gallery-works .work-topline{align-items:baseline;gap:var(--space-sm)}.gallery-works .work-title{font-family:var(--serif);font-size:clamp(18px,2vw,22px);font-weight:600;letter-spacing:-.03em;line-height:1.25;text-wrap:balance}.gallery-works .work-cats{padding-top:0;font-family:var(--mono);font-size:11px;letter-spacing:.1em;flex:none}.gallery-works .summary{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:14px;line-height:1.55;max-width:none;color:var(--soft)}.work-card[hidden]{display:none!important}.work-media{display:block;text-decoration:none;border-radius:32px;overflow:hidden;transition:transform .35s var(--ease)}.work-card:hover .work-media{transform:translateY(-2px)}.work-cover{position:relative;display:grid;place-items:center;aspect-ratio:1.75 / 1;border-radius:32px;overflow:hidden;color:#fffffff0}.work-cover.has-image{background:#d8dde4}.work-cover-image{display:block;width:100%;height:100%;object-fit:cover;object-position:center top}.work-cover.tone-0{background:var(--cover-0)}.work-cover.tone-1{background:var(--cover-1)}.work-cover.tone-2{background:var(--cover-2)}.work-cover.tone-3{background:var(--cover-3)}.work-cover.tone-4{background:var(--cover-4)}.cover-glow{position:absolute;top:-20%;right:-20%;bottom:-20%;left:-20%;background:radial-gradient(circle at 22% 28%,rgba(255,255,255,.38),transparent 34%),radial-gradient(circle at 78% 70%,rgba(0,0,0,.18),transparent 40%);pointer-events:none}.cover-orb{position:absolute;border-radius:50%;filter:blur(2px);opacity:.55;pointer-events:none}.cover-orb-a{width:180px;height:180px;left:8%;top:18%;background:#ffffff2e}.cover-orb-b{width:240px;height:240px;right:-4%;bottom:-18%;background:#00000029}.cover-device{position:relative;z-index:1;transform:translateY(8%) rotate(-2deg);box-shadow:0 24px 48px #00000047,0 2px #ffffff2e inset}.cover-device.phone{width:min(28%,168px);aspect-ratio:9 / 18.5;padding:8px;border-radius:28px;background:linear-gradient(160deg,#2a2a2a,#0f0f0f)}.cover-phone-notch{position:absolute;top:14px;left:50%;width:34%;height:10px;transform:translate(-50%);border-radius:999px;background:#0a0a0a;z-index:2}.cover-device.browser{width:min(68%,460px);border-radius:16px;background:#121418;overflow:hidden}.cover-browser-chrome{display:flex;align-items:center;gap:6px;padding:10px 12px;background:#1c2128;color:#ffffff8c;font-size:10px;letter-spacing:.04em}.cover-browser-chrome span{width:8px;height:8px;border-radius:50%;background:#5c6570}.cover-browser-chrome span:nth-child(1){background:#ff5f57}.cover-browser-chrome span:nth-child(2){background:#febc2e}.cover-browser-chrome span:nth-child(3){background:#28c840}.cover-browser-chrome em{margin-left:8px;font-style:normal;opacity:.75}.cover-screen{display:grid;gap:8px;align-content:start;height:100%;padding:28px 14px 14px;border-radius:20px;background:linear-gradient(180deg,rgba(255,255,255,.08),transparent 30%),linear-gradient(160deg,#f4f7fb,#d7e0ea);color:#1a1a1a}.cover-device.browser .cover-screen{min-height:180px;border-radius:0;padding:22px 18px 18px}.cover-screen-kicker{font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:#6b7785}.cover-screen-title{font-family:var(--serif);font-size:clamp(18px,2.2vw,28px);font-weight:600;line-height:1.15;letter-spacing:-.03em}.cover-screen-bar,.cover-screen-card,.cover-screen-grid i{display:block;border-radius:8px;background:#1a28361a}.cover-screen-bar{height:8px;width:78%}.cover-screen-bar.short{width:54%}.cover-screen-card{margin-top:6px;height:64px;border-radius:12px;background:linear-gradient(135deg,#466e9647,#1e324629)}.cover-screen-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:4px}.cover-screen-grid i{height:54px;border-radius:12px}.work-info{display:grid;gap:8px;padding:18px 2px 0}.work-topline{display:flex;align-items:baseline;justify-content:space-between;gap:18px}.work-title{font-family:var(--serif);font-size:clamp(calc(var(--work-title-size) * .71),3.6vw,var(--work-title-size));font-weight:600;line-height:1.1;letter-spacing:-.035em}.work-title a{text-decoration:none}.work-arrow{display:inline-block;margin-left:8px;font-size:.68em;vertical-align:.14em;transition:transform .25s var(--ease)}.work-card:hover .work-arrow{transform:translate(3px,-3px)}.summary,.dek,.bio,.lede{color:var(--soft);font-size:14px;line-height:1.65}.work-info .summary{max-width:34em;color:var(--mute);font-size:var(--work-summary-size)}.work-cats{color:var(--mute);font-size:11px;letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;padding-top:8px}.actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin:0}.link-archive,.link-demo,.back{display:inline-flex;align-items:center;gap:6px;text-decoration:none}.link-archive,.back{color:var(--ink);font-size:14px}.link-archive:hover,.back:hover{text-decoration:underline}.link-demo{border:1px solid var(--ink);color:var(--ink);padding:7px 12px;border-radius:999px;font-size:12px;letter-spacing:.04em}.link-demo:hover{background:var(--ink);color:var(--bg)}.arr{display:inline-block}.empty{margin:0;padding:28px 0;color:var(--mute);font-size:14px}.empty[hidden]{display:none!important}.return{margin:0 0 18px}.back{font-size:13px;color:var(--mute)}.detail-hero{margin-bottom:28px}.detail-cover{margin-bottom:22px;border-radius:28px;overflow:hidden}.eyebrow{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;color:var(--mute);font-family:var(--mono);font-size:12px;letter-spacing:.08em}.state{display:inline-flex;align-items:center;gap:8px}.state:before{content:"";width:6px;height:6px;border-radius:50%;border:1px solid var(--mute);background:transparent;flex:none}.state[data-state=已发布]:before,.state[data-state=已开源]:before{background:var(--ink);border-color:var(--ink)}.detail-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-top:10px}.detail-title,.not-found h1,.name{font-size:clamp(40px,6vw,64px);line-height:1.05;text-wrap:balance}.updated{margin-bottom:6px;color:var(--mute);font-family:var(--mono);font-size:12px;white-space:nowrap}.dek{max-width:42em;margin-top:14px;font-size:17px}.detail-grid{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:32px 40px;align-items:start}.detail-grid>*,.profile-top>*,.work-card>*{min-width:0}.readme h2,.band h2,.contact h2{font-size:clamp(26px,3vw,34px);line-height:1.2;margin:0 0 16px}.prose{max-width:68ch;color:var(--ink);font-size:16px;line-height:1.75;overflow-wrap:anywhere}.prose p,.prose ul,.prose pre{margin:0 0 1em}.prose ul{padding-left:1.15em}.prose li{margin:.28em 0}.prose li::marker{color:var(--mute)}.prose a,.meta a{color:var(--ink);text-decoration-thickness:1px}.prose a:hover,.meta a:hover{opacity:.7}.prose strong{font-weight:600}.prose code{font-family:var(--mono);font-size:.86em;background:var(--code);padding:.08em .35em;border-radius:6px}.prose pre{max-width:100%;padding:16px 18px;background:var(--code);color:var(--code-ink);border:1px solid var(--line);border-radius:16px;overflow:auto}.prose pre code{background:none;padding:0;color:inherit;font-size:14px;line-height:1.7}.meta-card{position:sticky;top:96px;padding:18px;background:var(--raise);border:1px solid var(--line);border-radius:22px}.plate-no{margin-bottom:8px;color:var(--mute);font-family:var(--mono);font-size:12px;letter-spacing:.12em}.meta div{display:grid;grid-template-columns:5.2em minmax(0,1fr);gap:12px;padding:11px 0;border-top:1px solid var(--line);font-size:14px}.meta .k{color:var(--mute);font-size:12px;padding-top:2px}.meta .v{text-align:right;overflow-wrap:anywhere}.tags{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0;padding:0}.tags li{border:1px solid var(--line-strong);padding:4px 8px;border-radius:999px;color:var(--soft);font-family:var(--mono);font-size:11px;letter-spacing:.04em;text-transform:uppercase}.side-tags{margin-top:14px}.side-links{display:flex;flex-direction:column;align-items:stretch;gap:10px;margin-top:16px}.side-links .link-demo{justify-content:space-between;padding:10px 14px}.profile-hero{margin-bottom:8px}.profile-top{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(240px,340px);gap:clamp(24px,4vw,48px);align-items:end;padding-bottom:28px;border-bottom:1px solid var(--rule)}.name{font-size:clamp(48px,7vw,80px);line-height:.95}.handle{margin-top:10px;color:var(--mute);font-family:var(--mono);font-size:12px;letter-spacing:.18em;text-transform:uppercase}.bio{max-width:36em;margin-top:18px;font-size:16px}.spec{margin:0;border:1px solid var(--line);border-radius:22px;background:var(--raise);overflow:hidden}.spec div{display:grid;gap:6px;padding:14px 16px 15px}.spec div+div{border-top:1px solid var(--line)}.spec dt{color:var(--mute);font-size:12px;font-weight:400;letter-spacing:.08em}.spec dd{font-size:15px;line-height:1.55}.band{padding:36px 0 8px}.experience-list{list-style:none;display:grid;gap:22px;margin:0;padding:0}.experience-item{display:grid;grid-template-columns:148px minmax(0,1fr);gap:16px 24px;padding:18px 0 20px;border-bottom:1px solid var(--line)}.experience-item:last-child{border-bottom:0;padding-bottom:0}.experience-period{color:var(--mute);font-size:13px;line-height:1.5;font-variant-numeric:tabular-nums}.experience-title{font-family:var(--serif);font-size:22px;font-weight:600;line-height:1.3;letter-spacing:-.02em}.experience-summary{margin-top:8px;color:var(--soft);font-size:14px;line-height:1.65}.experience-points{margin:12px 0 0;padding-left:1.15em;color:var(--soft);font-size:14px;line-height:1.65}.experience-points li{margin:.28em 0}.experience-points li::marker{color:var(--mute)}.stack{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:0;padding:0}.skill{display:flex;flex-direction:column;align-items:flex-start;gap:8px;min-height:100%;padding:18px 18px 20px;border:1px solid var(--line);border-radius:22px;background:var(--raise)}.num{color:var(--mute);font-family:var(--mono);font-size:12px;letter-spacing:.06em;font-variant-numeric:tabular-nums}.skill h3{font-family:var(--serif);font-size:20px;font-weight:600;line-height:1.3;letter-spacing:-.02em}.skill p{color:var(--soft);font-size:14px;line-height:1.65}.skill .tags{margin-top:6px}.contact{margin-top:28px;padding:28px 0 8px;border-top:1px solid var(--line)}.contact-line{display:flex;flex-wrap:wrap;gap:12px 28px;align-items:baseline;font-size:15px}.contact-id{display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:8px 10px}.contact-line .label{color:var(--mute);font-size:13px;letter-spacing:.06em}.rail-link.wechat-copy{font-family:inherit;font-size:inherit;text-decoration:none}.copy-status:not(:empty){color:var(--mute);font-family:var(--mono);font-size:13px}.not-found{min-height:calc(100vh - 220px);min-height:calc(100svh - 220px);display:flex;flex-direction:column;justify-content:flex-end;padding:24px 0 8px}.code-xl{margin:8px 0 12px;color:color-mix(in srgb,var(--ink) 14%,transparent);font-family:var(--serif);font-size:clamp(88px,16vw,168px);line-height:.85;letter-spacing:-.06em;font-variant-numeric:tabular-nums}.not-found h1{max-width:10em}.not-found .lede{margin:14px 0 20px}.site-footer{position:relative;display:flex;justify-content:space-between;align-items:center;gap:var(--space-md);margin-top:auto;padding:var(--space-lg) var(--page-inline) var(--space-xl);border-top:0;color:var(--mute)}.site-footer:before{content:"";position:absolute;top:0;left:var(--page-inline);right:var(--page-inline);height:1px;background:var(--rule)}.site-footer .icp{font-size:13px;line-height:1.4;text-decoration:none}.site-footer .icp:hover{color:var(--ink)}.footer-github{display:inline-flex;flex:none;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid var(--line-strong);border-radius:999px;color:var(--ink)}.footer-github svg{display:block}.footer-github:hover{background:var(--ink);color:var(--bg)}@media(max-width:980px){.frame{grid-template-columns:1fr;column-gap:0;row-gap:0}.rail{position:relative;height:auto;border-right:0;border-bottom:1px solid var(--rule)}.rail-inner{gap:var(--space-md);padding:var(--space-lg);align-items:center}.timeline,.rail-meta,.rail-contact{width:min(100%,var(--rail-content))}:root{--page-inline: var(--space-lg);--page-block: var(--space-lg)}.home-page{gap:var(--space-2xl)}.gallery-works{gap:var(--space-lg)}.site-header,main,.site-footer{padding-left:var(--page-inline);padding-right:var(--page-inline)}}@media(max-width:860px){.profile-top,.detail-grid,.experience-item,.about-skill-list{grid-template-columns:1fr}.gallery-works{grid-template-columns:1fr;gap:20px}.work-topline{flex-direction:column;align-items:flex-start;gap:6px}.work-cats{white-space:normal;padding-top:0}.detail-head,.controls{align-items:flex-start}.sort-note{margin-left:0}.filter-row{flex:1 0 100%;flex-wrap:nowrap;overflow-x:auto;padding-bottom:2px;scrollbar-width:thin;-webkit-mask-image:linear-gradient(90deg,#000 0%,#000 calc(100% - 28px),transparent 100%);mask-image:linear-gradient(90deg,#000 0%,#000 calc(100% - 28px),transparent 100%)}.filter-row::-webkit-scrollbar{height:4px}.detail-head{flex-direction:column;align-items:flex-start;gap:8px}.updated{margin-bottom:0;white-space:normal}.meta-card{position:static}.sidebar{order:-1}.stack{grid-template-columns:1fr}}@media(max-width:560px){:root{--page-inline: var(--space-md);--page-block: var(--space-md)}.home-page{gap:var(--space-xl)}.about-skill-list{row-gap:var(--space-md)}.rail-actions{flex-direction:column}.detail-title,.not-found h1,.name{font-size:clamp(34px,11vw,48px)}.work-title{font-size:min(26px,var(--work-title-size))}.work-cover,.work-media,.detail-cover{border-radius:24px}.cover-device.phone{width:min(36%,132px)}.cover-device.browser{width:min(78%,320px)}.nav{gap:6px 12px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}@media print{.site-header,.controls,.skip,.theme-toggle,.rail-actions{display:none}body{background:#fff;color:#000}.frame{display:block}.rail{position:static;height:auto;border:0}a{text-decoration:underline}}
