@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media (prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*),[data-astro-transition-scope]{animation:none!important}}:root{--bg-grad-1:#e8eef6;--bg-grad-2:#d8e2ee;--bg-grad-3:#c4d4e4;--noise-opacity:.035;--veil-color:#b7c9dd}html.dark{--bg-grad-1:#0c1a28;--bg-grad-2:#060d16;--bg-grad-3:#02040a;--noise-opacity:.055;--veil-color:#010208}.starry-bg[data-astro-cid-q57pdga7]{z-index:-1;pointer-events:none;background:radial-gradient(ellipse 130% 90% at 50% 15%, var(--bg-grad-1) 0%, var(--bg-grad-2) 45%, var(--bg-grad-3) 100%);background-size:200% 200%;animation:45s ease-in-out infinite alternate gradientDrift;position:fixed;inset:0;overflow:hidden}#starry-canvas[data-astro-cid-q57pdga7]{width:100%;height:100%;display:block;position:absolute;inset:0}.noise[data-astro-cid-q57pdga7]{opacity:var(--noise-opacity);pointer-events:none;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:180px 180px;position:absolute;inset:0}.veil[data-astro-cid-q57pdga7]{opacity:0;pointer-events:none;background:var(--veil-color);position:absolute;inset:0}@keyframes gradientDrift{0%{background-position:25% 15%}50%{background-position:75% 55%}to{background-position:40% 85%}}@media (prefers-reduced-motion:reduce){.starry-bg[data-astro-cid-q57pdga7]{animation:none}}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}:root{--color-primary:#17140f;--color-primary-dark:#3a352c;--color-text:#17140f;--color-text-muted:#6b6760;--color-border:#17140f38;--color-border-light:#17140f21;--color-bg:#efeae1;--color-surface:#e7e1d6;--color-card:#e7e1d6;--color-tag-bg:#ded7ca;--color-code-bg:#ded7ca;--color-faint:#a7a299;--color-motif:#a7a299;--color-accent:#17140f;--color-line:#17140f21;--color-line-lit:#17140f99;--font-display:"Futura", "Avenir Next", "Century Gothic", "Helvetica Neue", "PingFang SC", "Microsoft YaHei", sans-serif;--font-body:system-ui, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif;--font-mono:ui-monospace, "SFMono-Regular", "JetBrains Mono", Consolas, "Liberation Mono", Menlo, monospace;--font-mark:var(--font-display);--node-gutter:0px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-section:clamp(72px, 13vh, 140px);--text-xs:11px;--text-sm:13px;--text-base:15px;--text-lg:18px;--text-xl:22px;--text-2xl:28px;--text-3xl:32px;--text-display:clamp(56px, 15.5vw, 208px);--dur-fast:.2s;--dur-med:.4s;--dur-slow:.7s;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-pulse:cubic-bezier(.22, 1, .36, 1);--pad:clamp(20px, 5vw, 64px);--maxw:1280px;--section-y:clamp(72px, 11vw, 150px);--track-tight:-.045em;--cursor-star:#17140f;--cursor-dust-1:#565e6e;--cursor-dust-2:#8a94a6}.dark{--color-primary:#ece8e1;--color-primary-dark:#b8b4ac;--color-text:#ece8e1;--color-text-muted:#8b8983;--color-border:#ece8e12e;--color-border-light:#ece8e11a;--color-bg:#0c0c0d;--color-surface:#141416;--color-card:#141416;--color-tag-bg:#1b1b1e;--color-code-bg:#1b1b1e;--color-motif:#ece8e124;--color-accent:#ece8e1;--color-line:#ece8e11a;--color-line-lit:#ece8e1;--color-faint:#56544f;--cursor-star:#eaf3ff;--cursor-dust-1:#cfe2f8;--cursor-dust-2:#9cc4ef}.dark .post-content code{color:#dcd8d1;background:#2a2a2d}.dark .post-content pre code span{color:var(--shiki-dark)}.dark .post-content blockquote{color:#aaa;background:#252525;border-left-color:#888}body{font-family:var(--font-body);color:var(--color-text);background-color:var(--color-bg);letter-spacing:.01em;flex-direction:column;min-height:100vh;margin:0;line-height:1.75;display:flex}main,footer{z-index:3;position:relative}.mono{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.post-content{font-family:system-ui,Microsoft YaHei,sans-serif;line-height:1.9;font-size:var(--text-base);max-width:min(100%,34em)}h1,h2,h3,.site-title,.post-title{text-wrap:balance}.post-content p{text-wrap:pretty}.post-date,.archive-date,.hero-stats,.list-count{font-variant-numeric:tabular-nums}main{box-sizing:border-box;flex:1;width:100%;max-width:none;margin:0 auto;padding:0;position:relative}.shell{width:100%;max-width:var(--maxw);padding-left:var(--pad);padding-right:var(--pad);box-sizing:border-box;margin:0 auto}section{scroll-margin-top:96px;position:relative}main>section:not(.pf-hero){padding-top:var(--section-y);padding-bottom:var(--section-y)}#about,#skills,#work,#publications,#contact{border-top:1px solid var(--color-border-light)}.shell>section:first-child{padding-top:0}@media (width>=1240px){.post-list,.list-count,.pagination,.archive-year,.category-list,.tag-cloud,.search-box,.search-status,.search-results,.accordion{max-width:860px}.pagination{justify-content:flex-start}}.sec-head{align-items:baseline;gap:var(--space-4);margin-bottom:56px;display:flex}.sec-head .tag{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted);background:0 0;border:none;border-radius:0;flex-shrink:0;margin-right:0;padding:0}.sec-head .tag:before{content:"/";color:var(--color-border);margin-right:.15em}.sec-line{background:var(--color-border-light);transform-origin:0;flex:1;height:1px}.sec-title{font-family:var(--font-display);letter-spacing:-.035em;text-transform:uppercase;color:var(--color-text);flex-shrink:0;margin:0;font-size:clamp(35px,6vw,67px);font-weight:700;line-height:1}.btn-pill{align-items:center;gap:var(--space-2);font-family:var(--font-mono);font-size:var(--text-sm);letter-spacing:.03em;text-transform:uppercase;cursor:pointer;will-change:transform;box-sizing:border-box;border-radius:44px;padding:14px 24px;text-decoration:none;display:inline-flex;position:relative;overflow:hidden}.btn-pill>.btn-t{z-index:1;align-items:center;gap:var(--space-2);display:inline-flex;position:relative}.btn-pill svg{transition:transform .4s var(--ease-out)}.btn-pill:hover svg{transform:translate(3px,-3px)}.btn-solid{background:var(--color-primary);color:var(--color-bg);border:1px solid var(--color-primary)}.btn-solid:before{content:"";background:var(--color-bg);transition:transform .5s var(--ease-out);z-index:0;position:absolute;inset:0;transform:translateY(101%)}.btn-solid:hover{color:var(--color-primary)}.btn-solid:hover:before{transform:translateY(0)}.btn-ghost{color:var(--color-text);border:1px solid var(--color-border);background:0 0}.btn-ghost:before{content:"";background:var(--color-primary);transition:transform .5s var(--ease-out);z-index:0;position:absolute;inset:0;transform:translateY(101%)}.btn-ghost:hover{color:var(--color-bg);border-color:var(--color-primary)}.btn-ghost:hover:before{transform:translateY(0)}header{z-index:100;padding:var(--space-3) var(--pad);align-items:center;gap:var(--space-4);border-bottom:none;display:flex;position:fixed;top:0;left:0;right:0}.nav-bg{inset:12px var(--pad);background:color-mix(in srgb, var(--color-bg) 62%, transparent);-webkit-backdrop-filter:blur(16px);border:1px solid var(--color-border-light);opacity:0;transform-origin:50%;transition:opacity .5s var(--ease-out), transform .6s var(--ease-out);pointer-events:none;border-radius:50px;position:absolute;transform:scaleX(.6)}header.float .nav-bg{opacity:1;transform:scaleX(1)}header.float{padding-top:var(--space-2);padding-bottom:var(--space-2)}main>:first-child{padding-top:clamp(88px,12vh,128px)}main>.pf-hero:first-child{padding-top:0}.site-mark{font-family:var(--font-display);font-size:var(--text-lg);letter-spacing:-.02em;color:var(--color-text);z-index:1;user-select:none;transition:opacity var(--dur-fast) var(--ease-out);font-weight:800;line-height:1;text-decoration:none}.site-mark:hover{opacity:.7}header nav{z-index:1;align-items:center;gap:2px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}header nav a{font-family:var(--font-mono);font-size:var(--text-sm);letter-spacing:.03em;text-transform:uppercase;color:var(--color-text-muted);margin-right:0;padding:8px 14px;text-decoration:none;transition:color .25s ease-out;position:relative}header nav a:after{content:"";background:var(--color-primary);transform-origin:0;height:1px;transition:transform .35s var(--ease-out);position:absolute;bottom:6px;left:14px;right:14px;transform:scaleX(0)}header nav a:hover{color:var(--color-text)}header nav a:hover:after,header nav a.nav-active:after{transform:scaleX(1)}header nav a.nav-active{color:var(--color-text)}header nav a.nav-icon{vertical-align:middle;align-items:center;display:inline-flex}.nav-actions{align-items:center;gap:var(--space-3);z-index:1;margin-left:auto;display:flex;position:relative}.nav-theme{border:1px solid var(--color-border);width:38px;height:38px;color:var(--color-text-muted);cursor:pointer;transition:color .25s var(--ease-out), border-color .25s var(--ease-out), background-color .25s var(--ease-out), transform .25s var(--ease-out);background:0 0;border-radius:50%;justify-content:center;align-items:center;padding:0;display:inline-flex}.nav-theme:hover{color:var(--color-bg);background:var(--color-text);border-color:var(--color-text);transform:translateY(-1px)}.nav-theme:focus-visible{outline:1px solid var(--color-primary);outline-offset:2px}.nav-theme .icon-sun{display:none}.nav-theme .icon-moon,.dark .nav-theme .icon-sun{display:inline-block}.dark .nav-theme .icon-moon{display:none}.nav-cta{border:1px solid var(--color-border);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--color-text);z-index:0;transition:color .4s var(--ease-out), border-color .4s var(--ease-out);border-radius:44px;align-items:center;padding:9px 18px;text-decoration:none;display:inline-flex;position:relative;overflow:hidden}.nav-cta:before{content:"";background:var(--color-text);transition:transform .45s var(--ease-out);z-index:-1;position:absolute;inset:0;transform:translateY(101%)}.nav-cta:hover{color:var(--color-bg);border-color:var(--color-text);text-decoration:none}.nav-cta:hover:before{transform:translateY(0)}@media (width<=900px){.nav-cta{display:none}}.nav-toggle{border:1px solid var(--color-border);cursor:pointer;z-index:1;background:0 0;border-radius:50%;flex-direction:column;justify-content:center;gap:4px;width:38px;height:38px;padding:0;display:none;position:relative}.nav-toggle span{background:var(--color-text);width:16px;height:1.5px;margin:0 auto;transition:transform .2s ease-out,opacity .2s ease-out;display:block}@media (width<=900px){header{padding-top:var(--space-2);padding-bottom:var(--space-2);flex-wrap:wrap}header .nav-bg{inset:8px var(--pad)}header nav{margin-top:var(--space-3);border-top:1px solid var(--color-border-light);flex-direction:column;flex-basis:100%;order:4;align-items:stretch;gap:0;display:none;position:static;transform:none}header.nav-open nav{display:flex}header.nav-open .nav-bg{opacity:1;background:color-mix(in srgb, var(--color-bg) 94%, transparent);-webkit-backdrop-filter:blur(20px);border-radius:24px;transform:none}html.nav-locked{overflow:hidden}header nav a{padding:var(--space-3) 0;text-align:center;border-bottom:1px solid var(--color-border-light)}header nav a:after{display:none}header nav a.nav-icon{justify-content:center}.nav-toggle{display:inline-flex}header.nav-open .nav-toggle span:first-child{transform:translateY(5.5px)rotate(45deg)}header.nav-open .nav-toggle span:nth-child(2){opacity:0}header.nav-open .nav-toggle span:nth-child(3){transform:translateY(-5.5px)rotate(-45deg)}}.hero,.pf-hero{text-align:left;flex-direction:column;justify-content:flex-end;min-height:100vh;padding:8rem 0 clamp(32px,6vh,64px);display:flex}.pf-hero>.shell{width:100%}.pf-hero>.hero-top{justify-content:space-between;align-items:flex-start;gap:var(--space-4);padding:0 var(--pad);display:flex;position:absolute;top:clamp(96px,14vh,144px);left:0;right:0}.hero-eyebrow{align-items:center;gap:var(--space-3);display:flex}.dot{background:var(--color-accent);border-radius:50%;flex-shrink:0;width:7px;height:7px;animation:2.4s ease-in-out infinite dot-pulse}@keyframes dot-pulse{0%,to{box-shadow:0 0 4px 1px color-mix(in srgb, var(--color-accent) 30%, transparent);transform:scale(1)}50%{box-shadow:0 0 12px 4px color-mix(in srgb, var(--color-accent) 55%, transparent);transform:scale(1.22)}}.hero-copyright{align-items:flex-end;gap:var(--space-1);text-align:right;flex-direction:column;display:flex}.hero-name{font-family:var(--font-display);letter-spacing:var(--track-tight);text-transform:uppercase;color:var(--color-text);margin:0;font-weight:800;line-height:.86}.hero-line{padding-bottom:.04em;display:block;overflow:hidden}.hero-line>span{font-size:clamp(54px,15.5vw,208px);display:block}html.js .hero-name .char{opacity:0;transition:transform .9s var(--ease-out), opacity .7s var(--ease-out);will-change:transform, opacity;display:inline-block;transform:translateY(110%)}html.js .hero-name .char.in{opacity:1;transform:translateY(0)}.hero-meta{justify-content:space-between;align-items:flex-end;gap:var(--space-5);border-top:1px solid var(--color-border-light);padding-top:var(--space-5);flex-wrap:wrap;margin-top:clamp(28px,4vw,48px);display:flex}.hero-sub{color:var(--color-text-muted);max-width:30ch;margin:0;font-size:clamp(16px,2vw,21px);line-height:1.45}.hero-actions{gap:var(--space-3);flex-wrap:wrap;display:flex}.hero-stats{gap:var(--space-6);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.05em;text-transform:uppercase;color:var(--color-text-muted);margin:0;display:flex}.hero-stats b{font-family:var(--font-display);letter-spacing:-.03em;color:var(--color-text);font-variant-numeric:tabular-nums;margin-bottom:6px;font-size:clamp(28px,4vw,44px);font-weight:700;line-height:1;display:block}.marquee{border-top:1px solid var(--color-border-light);border-bottom:1px solid var(--color-border-light);user-select:none;padding:22px 0;overflow:hidden;-webkit-mask:linear-gradient(90deg,#0000,#000 8% 92%,#0000);mask:linear-gradient(90deg,#0000,#000 8% 92%,#0000)}.marquee-track{will-change:transform;width:max-content;animation:38s linear infinite marquee-scroll;display:flex}.marquee:hover .marquee-track{animation-play-state:paused}@keyframes marquee-scroll{0%{transform:translate(0)}to{transform:translate(-50%)}}.marquee-item{font-family:var(--font-display);letter-spacing:-.02em;text-transform:uppercase;color:var(--color-text);padding:0 var(--space-5);white-space:nowrap;align-items:center;font-size:clamp(22px,3.4vw,42px);font-weight:700;display:flex}.marquee-item:after{content:"✦";color:var(--color-border);margin-left:var(--space-6);font-size:.5em}.about-grid{grid-template-columns:1fr 1fr;align-items:start;gap:clamp(40px,6vw,96px);display:grid}.about-hello{font-family:var(--font-display);letter-spacing:-.03em;color:var(--color-text);margin:0 0 var(--space-5);font-size:clamp(32px,4.5vw,54px);font-weight:700;line-height:1.04}.about-hello em{color:var(--color-text-muted);font-style:normal}html.js .about-hello .word{opacity:0;transition:opacity .6s var(--ease-out), transform .6s var(--ease-out);display:inline-block;transform:translateY(14px)}html.js .about-hello .word.in{opacity:1;transform:translateY(0)}.about-body{font-size:var(--text-lg);color:var(--color-text-muted);margin:0 0 var(--space-4);max-width:46ch;line-height:1.75}.about-body b{color:var(--color-text);font-weight:500}.about-portrait{border:1px solid var(--color-border-light);background:repeating-linear-gradient(135deg, var(--color-surface) 0 2px, transparent 2px 11px), linear-gradient(160deg, var(--color-tag-bg), var(--color-bg));position:relative;overflow:hidden}.about-portrait img{aspect-ratio:4/5;object-fit:cover;filter:grayscale()contrast(1.05);width:100%;height:auto;display:block}.portrait-stat-right{text-align:right}.portrait-stat{left:var(--space-4);bottom:var(--space-4);right:var(--space-4);justify-content:space-between;align-items:flex-end;gap:var(--space-4);color:var(--color-bg);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.05em;text-transform:uppercase;display:flex;position:absolute}.portrait-stat b{font-family:var(--font-display);letter-spacing:-.04em;color:var(--color-bg);font-size:clamp(32px,5vw,56px);font-weight:800;line-height:1;display:block}.about-portrait:after{content:"";pointer-events:none;background:linear-gradient(#0000,#0c0c0d73);height:45%;position:absolute;inset:auto 0 0}.dark .about-portrait:after{background:linear-gradient(#0000,#0009)}.svc-row{gap:var(--space-5);border-top:1px solid var(--color-border-light);transition:background .4s var(--ease-out);grid-template-columns:60px 1fr auto;align-items:center;padding:clamp(24px,3vw,36px) 0;text-decoration:none;display:grid}.svc-row:last-child{border-bottom:1px solid var(--color-border-light)}.svc-row:hover{background:linear-gradient(90deg, transparent, var(--color-surface) 50%, transparent)}.svc-num{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--color-text-muted);font-variant-numeric:tabular-nums}.svc-name{font-family:var(--font-display);letter-spacing:-.03em;text-transform:uppercase;color:var(--color-text);transition:transform .4s var(--ease-out);font-size:clamp(24px,3.4vw,38px);font-weight:700;line-height:1}.svc-row:hover .svc-name{transform:translate(10px)}.svc-tags{gap:var(--space-2);flex-wrap:wrap;justify-content:flex-end;max-width:420px;display:flex}.svc-tag{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.03em;color:var(--color-text-muted);border:1px solid var(--color-border-light);border-radius:40px;padding:5px 12px}.stack{position:relative}.panel{background:var(--color-bg);border-top:1px solid var(--color-border-light);align-items:center;min-height:100vh;display:flex;position:sticky;top:0;overflow:hidden}.panel:before{content:"";opacity:.5;background:radial-gradient(70vw 70vw at 80% 20%, var(--tint,transparent), transparent 60%);pointer-events:none;position:absolute;inset:0}.panel-grid{grid-template-columns:1fr 1fr;align-items:center;gap:clamp(24px,4vw,64px);width:100%;display:grid;position:relative}.panel.flip .panel-visual{order:2}.panel-visual{justify-content:center;align-items:center;min-height:clamp(440px,60vh,600px);display:flex;position:relative}.panel-bgmark{font-family:var(--font-display);letter-spacing:-.06em;color:var(--color-text);opacity:.05;user-select:none;z-index:0;margin-top:-.55em;font-size:clamp(64px,13vw,160px);font-weight:800;line-height:1;position:absolute;top:50%;left:50%;transform:translate(-50%)}.panel-cover{z-index:1;border:1px solid var(--color-border-light);filter:grayscale()contrast(1.05);width:100%;max-width:420px;transition:filter .6s var(--ease-out), transform .6s var(--ease-out);position:relative}.panel-visual:hover .panel-cover{filter:none;transform:translateY(-6px)}.panel-cover-empty{aspect-ratio:3/2;background:var(--color-surface);border:1px solid var(--color-border-light);justify-content:center;align-items:center;display:flex}.panel-cover-empty span{font-family:var(--font-display);letter-spacing:-.04em;color:var(--color-border);font-size:clamp(48px,8vw,96px);font-weight:700;line-height:1}.certs{gap:var(--space-2);margin-top:var(--space-5);flex-wrap:wrap;display:flex}.cert{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.04em;color:var(--color-text-muted);border:1px solid var(--color-border-light);transition:color .3s var(--ease-out), border-color .3s var(--ease-out);border-radius:44px;padding:6px 14px}.cert:hover{color:var(--color-text);border-color:var(--color-border)}.panel-info{z-index:1;position:relative}.panel-num{font-family:var(--font-mono);font-size:var(--text-sm);letter-spacing:.04em;color:var(--color-text-muted);margin-bottom:var(--space-4)}.panel-title{font-family:var(--font-display);letter-spacing:-.035em;text-transform:uppercase;color:var(--color-text);margin:0 0 var(--space-4);font-size:clamp(32px,4.5vw,54px);font-weight:700;line-height:1}.panel-title a{color:inherit;text-decoration:none}.panel-desc{font-size:var(--text-base);color:var(--color-text-muted);margin:0 0 var(--space-5);max-width:48ch;line-height:1.7}.panel-tags{gap:var(--space-2);margin-bottom:var(--space-5);flex-wrap:wrap;display:flex}.panel-tag{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.03em;color:var(--color-text-muted);border:1px solid var(--color-border-light);border-radius:40px;padding:5px 12px}.panel-links{gap:var(--space-3);flex-wrap:wrap;display:flex}.pub-card{border:1px solid var(--color-border-light);background:radial-gradient(60vw 40vw at 100% 0%, #ece8e10b, transparent 62%), var(--color-surface);grid-template-columns:minmax(0,1.5fr) minmax(220px,.7fr);gap:clamp(32px,7vw,112px);padding:clamp(24px,4vw,56px);display:grid}.pub-type{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-muted);margin-bottom:var(--space-5)}.pub-title{font-family:var(--font-display);letter-spacing:-.04em;color:var(--color-text);margin:0 0 var(--space-4);text-wrap:balance;font-size:clamp(28px,4.2vw,54px);font-weight:700;line-height:1.04}.pub-title a{color:inherit;text-decoration:none}.pub-meta{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.04em;color:var(--color-border);margin:0 0 var(--space-4)}.pub-summary{font-size:var(--text-base);color:var(--color-text-muted);margin:0 0 var(--space-5);max-width:52ch;line-height:1.75}.pub-links{gap:var(--space-3);flex-wrap:wrap;display:flex}.pub-stats{border-top:1px solid var(--color-border-light);flex-direction:column;justify-content:center;display:flex}.pub-stats>div{padding:var(--space-4) 0;border-bottom:1px solid var(--color-border-light)}.pub-stat-value{font-family:var(--font-display);letter-spacing:-.04em;color:var(--color-text);font-variant-numeric:tabular-nums;font-size:clamp(36px,5vw,64px);font-weight:800;line-height:1}.pub-stat-label{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.05em;text-transform:uppercase;color:var(--color-text-muted);margin-top:6px}#contact{overflow:hidden}.contact-glow{pointer-events:none;background:radial-gradient(circle,#17140f0d,#0000 60%);border-radius:50%;width:80vw;max-width:900px;height:80vw;max-height:900px;position:absolute;top:55%;left:50%;transform:translate(-50%,-50%)}.dark .contact-glow{background:radial-gradient(circle,#ece8e10f,#0000 60%)}.contact-head{font-family:var(--font-display);letter-spacing:var(--track-tight);text-transform:uppercase;color:var(--color-text);margin:0 0 var(--space-6);font-size:clamp(48px,12vw,144px);font-weight:800;line-height:.9;position:relative}.contact-head em{color:var(--color-border);font-style:normal}html.js .contact-head .word{opacity:0;transition:opacity .7s var(--ease-out), transform .7s var(--ease-out);display:inline-block;transform:translateY(18px)}html.js .contact-head .word.in{opacity:1;transform:translateY(0)}.contact-grid{grid-template-columns:1fr 1fr;align-items:start;gap:clamp(32px,6vw,96px);display:grid}.contact-sub{font-size:var(--text-lg);color:var(--color-text-muted);margin:0 0 var(--space-5);max-width:40ch;line-height:1.7}.socials{flex-direction:column;display:flex}.social{justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-4) 0;border-top:1px solid var(--color-border-light);font-family:var(--font-display);letter-spacing:-.02em;color:var(--color-text);transition:padding-left .4s var(--ease-out), color .3s;font-size:clamp(20px,2.6vw,30px);font-weight:700;text-decoration:none;display:flex}.socials .social:last-child{border-bottom:1px solid var(--color-border-light)}.social:hover{padding-left:var(--space-4)}.social .arr{font-family:var(--font-mono);font-size:var(--text-base);color:var(--color-text-muted);transition:transform .4s var(--ease-out)}.social:hover .arr{transform:translate(4px,-4px)}footer{border-top:1px solid var(--color-border-light);color:var(--color-text-muted);font-size:var(--text-sm);font-family:var(--font-body);text-align:left;padding:0}.foot-grid{padding-top:var(--space-7);padding-bottom:var(--space-7);grid-template-columns:2fr 1fr 1fr;gap:clamp(32px,5vw,80px);display:grid}.foot-statement{font-family:var(--font-display);letter-spacing:-.03em;text-transform:uppercase;max-width:14ch;color:var(--color-text);font-size:clamp(26px,4vw,48px);font-weight:700;line-height:1.04}.foot-col h2{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted);margin:0 0 var(--space-4);font-weight:400}.foot-col h2:before{content:"/";margin-right:.3em}.foot-col a,.foot-col p{margin:0 0 var(--space-2);color:var(--color-text-muted);font-size:var(--text-sm);text-decoration:none;transition:color .25s;display:block}.foot-col a:hover{color:var(--color-text)}.foot-word{font-family:var(--font-display);letter-spacing:-.04em;text-transform:uppercase;color:var(--color-text);opacity:.09;text-align:center;border-top:1px solid var(--color-border-light);padding:var(--space-5) 0 var(--space-2);user-select:none;white-space:nowrap;justify-content:center;font-size:clamp(64px,16vw,352px);font-weight:800;line-height:.78;display:flex;overflow:hidden}.foot-word .fchar{will-change:transform;display:inline-block}.foot-bottom{justify-content:space-between;align-items:center;gap:var(--space-3);border-top:1px solid var(--color-border-light);padding:var(--space-4) 0;font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.05em;text-transform:uppercase;flex-wrap:wrap;display:flex}.foot-icp{color:var(--color-text-muted);text-decoration:none;transition:color .15s ease-out}.foot-icp:hover{color:var(--color-primary)}.foot-mps-link{align-items:center;gap:var(--space-1);display:inline-flex}.foot-mps-ico{width:20px;height:auto;display:block}.foot-filings{align-items:center;gap:var(--space-2);display:inline-flex}.foot-sep{color:var(--color-faint)}@media (width<=900px){.about-grid,.contact-grid,.pub-card{grid-template-columns:1fr}.foot-grid{grid-template-columns:1fr 1fr}.svc-row{gap:var(--space-3);grid-template-columns:40px 1fr}.svc-tags{grid-column:2;justify-content:flex-start}}@media (width<=768px){.panel{min-height:auto;padding:var(--space-7) 0;position:relative;top:auto}.panel-grid{gap:var(--space-5);grid-template-columns:1fr}.panel.flip .panel-visual{order:0}.panel-visual{min-height:auto;padding:var(--space-2) 0}.hero,.pf-hero{justify-content:flex-start;gap:28px;min-height:auto;padding:104px 0 48px}main>.pf-hero:first-child{padding-top:104px}.pf-hero>.hero-top{margin-bottom:0;padding:0;position:static}.hero-line>span{font-size:clamp(46px,15vw,74px)}.hero-name{line-height:.92}.hero-meta{flex-direction:column;align-items:flex-start;gap:22px;margin-top:24px;padding-top:24px}.hero-sub{max-width:34ch;font-size:16px}.hero-actions{width:100%}.sec-head{gap:12px;margin-bottom:36px}.sec-title{font-size:clamp(26px,8vw,42px)}.foot-grid{gap:var(--space-6);grid-template-columns:1fr}}.post-card{border:none;border-bottom:1px solid var(--color-border-light);padding:var(--space-6) 0;background:0 0;border-radius:0;margin-bottom:0;transition:border-color .2s ease-out,background-color .2s ease-out,box-shadow .2s ease-out,transform .2s ease-out;overflow:hidden}.post-card:hover{border-bottom-color:var(--color-primary)}.post-card h2 a{transition:transform .2s ease-out;display:inline-block}.post-card:hover h2 a{transform:translate(3px)}.post-detail:hover{box-shadow:none;background:0 0;border-bottom-color:#0000}.post-card>p:not([class]){color:var(--color-text-muted)}.archive-year a{color:var(--color-primary);text-decoration:none}.archive-year a:hover{text-decoration:underline}.post-card h2{margin:0 0 var(--space-3);font-size:var(--text-xl);letter-spacing:-.01em}.post-card h2 a{color:var(--color-text);text-decoration:none}.post-card h2 a:hover{color:var(--color-primary)}.post-card .post-meta-row{margin:var(--space-2) 0 var(--space-3);font-size:var(--text-xs);letter-spacing:.08em;color:var(--color-text-muted);justify-content:space-between;align-items:center;display:flex}.post-card .post-date{color:var(--color-text-muted);font-size:var(--text-xs);letter-spacing:.08em}.post-card .post-category{font-size:var(--text-xs);letter-spacing:.05em;padding-left:var(--space-2);border-left:1px solid var(--color-border);color:var(--color-text-muted)}.post-card .post-category a{color:inherit;text-decoration:none}.post-card .post-category a:hover{color:var(--color-primary)}.post-tags{margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--color-border-light)}.post-title{font-family:var(--font-display);margin:var(--space-6) 0 var(--space-2);font-size:var(--text-2xl);letter-spacing:.02em;font-weight:700}.post-meta{color:var(--color-text-muted);font-size:var(--text-xs);margin:0 0 var(--space-6);padding-bottom:var(--space-4);border-bottom:1px solid var(--color-border-light);letter-spacing:.05em}.post-content{line-height:1.9}.post-content h1{font-size:var(--text-xl)}.post-content p{margin:0 0 var(--space-4)}.post-content pre{border-left:2px solid var(--color-border);padding:var(--space-3) var(--space-4);font-family:Fira Code,Consolas,monospace;font-size:var(--text-sm);margin:var(--space-4) 0;line-height:1.6;overflow-x:auto;background:var(--color-code-bg)!important}.post-content code{background:var(--color-tag-bg);border-radius:0;padding:2px 6px;font-family:Fira Code,Consolas,monospace;font-size:.9em}.post-content pre code{padding:0;background:0 0!important}.post-content pre code span{color:var(--shiki-light)}html:not(.dark) .post-content pre code span{color:color-mix(in srgb, var(--shiki-light) 80%, black)}.post-content blockquote{border-left:3px solid var(--color-primary);background:var(--color-tag-bg);padding:var(--space-3) var(--space-4);margin:var(--space-4) 0;color:var(--color-text-muted);font-style:italic}.dark img{filter:brightness(.9)contrast(1.05)}.section-kicker{text-transform:uppercase;letter-spacing:.3em;font-family:system-ui,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Noto Sans CJK SC,sans-serif;font-size:var(--text-xs);color:var(--color-text-muted);margin:0 0 var(--space-2)}.post-list .post-card{border:none;border-bottom:1px solid var(--color-border-light);padding:var(--space-5) 0;transition:background-color var(--dur-fast) var(--ease-out);background:0 0;border-radius:0;overflow:visible}.post-list .post-card:hover{border-color:var(--color-primary);box-shadow:none;background:0 0;transform:none}.post-list .post-card:hover h2 a{transform:translate(6px)}.post-list .post-tags{padding-top:var(--space-2);margin-top:var(--space-2);border-top:none}.post-list .post-card{position:relative}.post-index{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.14em;color:var(--color-text-muted);margin-bottom:var(--space-2);transition:color var(--dur-fast) var(--ease-out);display:block}.post-arrow{right:0;top:var(--space-5);font-size:var(--text-lg);color:var(--color-text-muted);opacity:0;transition:opacity var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);pointer-events:none;position:absolute;transform:translate(-8px,8px)}.post-list .post-card:hover .post-arrow{opacity:1;color:var(--color-primary);transform:none}.post-list .post-card:hover .post-index{color:var(--color-primary)}@media (width<=640px){.post-arrow{display:none}}@media print{.js .reveal{opacity:1!important;transform:none!important}}.site-title{font-family:var(--font-display);font-size:var(--text-2xl);letter-spacing:-.02em;font-weight:700}main>h1{font-family:var(--font-display);font-size:var(--text-2xl);letter-spacing:-.02em;margin:var(--space-5) 0 var(--space-4);font-weight:700}.page-hero{padding-top:var(--space-section);padding-bottom:var(--space-6)}.page-hero .section-kicker{margin-bottom:var(--space-3);padding-left:0}.page-hero h1{font-family:var(--font-display);letter-spacing:-.03em;text-transform:uppercase;margin:0 0 var(--space-4);font-size:clamp(48px,9vw,96px);font-weight:700;line-height:.95}.page-hero-desc{color:var(--color-text-muted);font-size:var(--text-base);max-width:480px;margin:0}.page-hero-desc a{color:var(--color-text-muted);text-decoration:none}.page-hero-desc a:hover{color:var(--color-primary)}.hero h1{margin:0 0 var(--space-5)}.site-title-display{font-size:var(--text-display);letter-spacing:-.03em;line-height:.9}.btn{color:var(--color-primary);padding:var(--space-3) var(--space-5);border:1px solid var(--color-primary);background:0 0;border-radius:0;text-decoration:none;display:inline-block}.btn:hover{background:var(--color-primary);color:var(--color-bg)}.post-tags{margin-top:var(--space-3)}.tag{background:var(--color-tag-bg);color:var(--color-text);font-size:var(--text-xs);padding:2px var(--space-3);margin-right:var(--space-2);border:1px solid var(--color-border);letter-spacing:.03em;border-radius:0;text-decoration:none;display:inline-block}.related{margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--color-border-light)}.related h2{font-size:var(--text-lg);margin:0 0 var(--space-2)}.related ul{margin:0;padding:0;list-style:none}.related li{padding:var(--space-1) 0}.related a{color:var(--color-primary);text-decoration:none}.related a:hover{text-decoration:underline}.post-nav{justify-content:space-between;gap:var(--space-4);margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--color-border-light);flex-wrap:wrap;display:flex}.post-nav a{color:var(--color-primary);font-size:var(--text-sm);padding:var(--space-1) 0;text-decoration:none;display:block}.post-nav a:hover{text-decoration:underline}.archive-year{margin-top:var(--space-6)}.archive-year summary{font-size:var(--text-lg);margin:0 0 var(--space-2);cursor:pointer;user-select:none;list-style:none}.archive-year summary::-webkit-details-marker{display:none}.archive-year summary:after{content:"";margin-left:var(--space-2);border-right:1.5px solid var(--color-text-muted);border-bottom:1.5px solid var(--color-text-muted);width:7px;height:7px;transition:transform .15s ease-out;display:inline-block;transform:rotate(-45deg)}.archive-year[open] summary:after{transform:rotate(45deg)}.archive-year summary:hover{color:var(--color-primary)}.archive-year summary:hover:after{border-color:var(--color-primary)}.archive-year ul{margin:0;padding:0;list-style:none}.archive-year li{padding:var(--space-1) 0;border-bottom:1px solid var(--color-border-light)}.archive-date{width:90px;color:var(--color-text-muted);font-size:var(--text-xs);letter-spacing:.05em;display:inline-block}.tag-cloud{gap:var(--space-2);margin-top:var(--space-5);flex-wrap:wrap;display:flex}.tag-cloud .tag{margin-right:0}.tag-count{margin-left:var(--space-2);color:var(--color-text-muted)}.category-list{margin:var(--space-5) 0 0;padding:0;list-style:none}.category-list li{padding:var(--space-2) 0;border-bottom:1px solid var(--color-border-light);justify-content:space-between;align-items:center;display:flex}.category-list a{color:var(--color-primary);text-decoration:none}.category-list a:hover{text-decoration:underline}.category-count{color:var(--color-text-muted);font-size:var(--text-xs);letter-spacing:.05em}.overview-cross{margin-top:var(--space-6);font-size:var(--text-sm)}.overview-cross a{color:var(--color-text-muted);text-decoration:none}.overview-cross a:hover{color:var(--color-primary)}.search-box{max-width:320px;margin:var(--space-5) auto;transition:max-width .25s ease-out;position:relative}.search-box:focus-within,.search-box.search-active{max-width:100%}.search-input{box-sizing:border-box;width:100%;padding:var(--space-2) var(--space-7) var(--space-2) var(--space-4);font-size:var(--text-base);color:var(--color-text);background:var(--color-card);border:1px solid var(--color-border);border-radius:0;font-family:system-ui,Microsoft YaHei,sans-serif;transition:border-color .15s ease-out}.search-input:focus{border-color:var(--color-primary);outline:none}.search-clear{right:var(--space-2);color:var(--color-text-muted);font-size:var(--text-lg);cursor:pointer;padding:var(--space-1);background:0 0;border:none;line-height:1;transition:color .15s ease-out;position:absolute;top:50%;transform:translateY(-50%)}.search-clear:hover{color:var(--color-primary)}.search-status{text-align:center;color:var(--color-text-muted);font-size:var(--text-sm);margin:var(--space-4) 0}.search-results{margin-top:var(--space-5)}.hero,.pf-hero{position:relative}.hero>*,.pf-hero>*{z-index:1;position:relative}.js .reveal{opacity:0;transition:opacity .6s ease-out,transform .6s ease-out;transform:translateY(16px)}.js .reveal.revealed{opacity:1;transform:none}.page-fade{animation:.4s ease-out page-fade-in}@keyframes page-fade-in{0%{opacity:.4}to{opacity:1}}.about-hero{text-align:center;padding:var(--space-6) 0 var(--space-5);position:relative}.about-hero:before{content:"";left:50%;top:var(--space-6);background:radial-gradient(circle, var(--color-motif) 0%, transparent 70%);opacity:.6;pointer-events:none;z-index:0;border-radius:50%;width:180px;height:180px;animation:6s ease-in-out infinite about-breathe;position:absolute;transform:translate(-50%)}.about-hero>*{z-index:1;position:relative}@keyframes about-breathe{0%,to{opacity:.5;transform:translate(-50%)scale(1)}50%{opacity:.9;transform:translate(-50%)scale(1.12)}}.about-avatar{object-fit:cover;border:1px solid var(--color-border);width:96px;height:96px;margin-bottom:var(--space-4);border-radius:50%}.about-hero h1{margin:0 0 var(--space-3)}.about-tagline{color:var(--color-text-muted);margin:0}.accordion{margin-top:var(--space-6);border-top:1px solid var(--color-border-light)}.accordion-item{border-bottom:1px solid var(--color-border-light)}.accordion-item summary{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-4) 0;cursor:pointer;font-size:var(--text-lg);list-style:none;transition:color .15s ease-out;display:flex}.accordion-item summary::-webkit-details-marker{display:none}.accordion-item summary:hover{color:var(--color-primary)}.accordion-chevron{color:var(--color-text-muted);flex-shrink:0;transition:transform .2s ease-out}.accordion-item[open] .accordion-chevron{transform:rotate(180deg)}.accordion-body{padding:0 0 var(--space-4);line-height:1.9}.accordion-body p{margin:0 0 var(--space-3)}.accordion-body ul{margin:0 0 var(--space-3);padding-left:var(--space-5)}.accordion-body a{color:var(--color-primary)}.reading-progress-bar{background:var(--color-accent);z-index:1000;width:0%;height:2px;transition:width .1s ease-out;position:fixed;top:0;left:0}.share-buttons{margin:var(--space-4) 0}.share-btn{border:1px solid var(--color-border);color:var(--color-text-muted);font-size:var(--text-xs);padding:var(--space-1) var(--space-3);cursor:pointer;letter-spacing:.05em;background:0 0;transition:all .15s ease-out}.share-btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.share-btn:active{background:var(--color-tag-bg)}.rss-link{color:var(--color-text-muted);font-size:var(--text-xs);letter-spacing:.05em;text-decoration:none;transition:color .15s ease-out;position:relative}.rss-link:after{content:"";background:var(--color-primary);transform-origin:100%;width:100%;height:1px;transition:transform .2s ease-out;position:absolute;bottom:-2px;left:0;transform:scaleX(0)}.rss-link:hover{color:var(--color-primary)}.rss-link:hover:after{transform-origin:0;transform:scaleX(1)}.empty{margin-top:var(--space-5);padding:var(--space-7) var(--space-5);text-align:center;color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:0}.empty p{margin:0 0 var(--space-4)}#toast{left:50%;bottom:var(--space-6);transform:translate(-50%, var(--space-5));max-width:calc(100vw - var(--space-6));padding:var(--space-2) var(--space-5);background:var(--color-primary);color:var(--color-bg);font-family:system-ui,Microsoft YaHei,sans-serif;font-size:var(--text-sm);letter-spacing:.05em;text-align:center;opacity:0;visibility:hidden;z-index:1001;pointer-events:none;transition:opacity .2s ease-out,transform .2s ease-out,visibility .2s;position:fixed}#toast.toast-show{opacity:1;visibility:visible;transform:translate(-50%)}.not-found{text-align:center;padding:var(--space-7) 0}.not-found-code{letter-spacing:.05em;color:#0000;-webkit-text-stroke:1px var(--color-primary);margin:0;font-size:clamp(72px,18vw,140px);line-height:1}@supports not (-webkit-text-stroke:1px black){.not-found-code{color:var(--color-text-muted)}}.not-found h1{margin:var(--space-4) 0 var(--space-2);font-size:var(--text-2xl);letter-spacing:-.01em}.not-found-text{color:var(--color-text-muted);margin:0 0 var(--space-6)}.not-found-actions{justify-content:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.not-found-search{max-width:560px;margin:var(--space-6) auto 0;text-align:left}.skip-link{background:var(--color-primary);color:var(--color-bg);padding:var(--space-2) var(--space-4);font-size:var(--text-sm);z-index:1002;text-decoration:none;position:absolute;top:0;left:-9999px}.skip-link:focus{left:0}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}@keyframes fade-in{0%{opacity:0}to{opacity:1}}main{animation:.5s ease-out fade-in}@media (width<=480px){header nav a{margin-right:var(--space-3);font-size:var(--text-sm)}.post-title{font-size:var(--text-xl)}.tag{font-size:var(--text-sm);padding:var(--space-1) var(--space-4)}.post-nav{flex-direction:column}}.post-grid{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));display:grid}.post-grid .post-card{margin-bottom:0}.post-list{margin-top:var(--space-6);flex-direction:column;gap:0;display:flex}.post-list .post-card{margin-bottom:0}.list-count{color:var(--color-text-muted);font-family:system-ui,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Noto Sans CJK SC,sans-serif;font-size:var(--text-sm);letter-spacing:.08em;margin:var(--space-2) 0 0}.pagination{justify-content:center;align-items:center;gap:var(--space-3);margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--color-border-light);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.pagination a,.pagination-current,.pagination-disabled{min-width:32px;padding:var(--space-1) var(--space-3);text-align:center;border:1px solid var(--color-border);color:var(--color-text);letter-spacing:.05em;text-decoration:none;transition:border-color .15s ease-out,color .15s ease-out;display:inline-block}.pagination a:hover{border-color:var(--color-primary);color:var(--color-primary)}.pagination-current{border-color:var(--color-primary);background:var(--color-primary);color:var(--color-bg)}.pagination-disabled{border-color:var(--color-border-light);color:var(--color-text-muted)}.pagination-pages{gap:var(--space-2);flex-wrap:wrap;display:flex}@media (width<=480px){.pagination a,.pagination-current,.pagination-disabled{min-width:36px;padding:var(--space-2) var(--space-3)}}.post-cover-wrap{height:clamp(260px,38vw,440px);margin-bottom:var(--space-3);overflow:hidden}.post-cover{object-fit:cover;object-position:center 60%;width:100%;height:130%;display:block}.post-content img{cursor:zoom-in}#lightbox{background:0 0;border:none;max-width:min(92vw,1080px);max-height:90vh;padding:0;position:relative;overflow:visible}#lightbox::backdrop{background:#000000d1}#lightbox figure{margin:0}#lightbox img{border-radius:4px;width:auto;max-width:100%;height:auto;max-height:82vh;display:block}#lightbox figcaption{margin-top:var(--space-2);text-align:center;font-size:var(--text-sm);color:#ffffffbf}#lightboxClose{color:#fff;width:36px;height:36px;font-size:var(--text-xl);cursor:pointer;background:#00000080;border:1px solid #fff6;border-radius:50%;line-height:1;transition:background .15s ease-out,transform .15s ease-out;position:absolute;top:-44px;right:0}#lightboxClose:hover{background:#fff3;transform:scale(1.08)}@media (prefers-reduced-motion:no-preference){#lightbox[open]{animation:.18s ease-out lightbox-in}@keyframes lightbox-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}}.post-content :is(h2,h3){scroll-margin-top:84px}.post-toc{margin:0 0 var(--space-4);border:1px solid var(--color-border-light);background:var(--color-card)}.post-toc summary{cursor:pointer;padding:var(--space-2) var(--space-3);font-size:var(--text-sm);letter-spacing:.05em;color:var(--color-text-muted);user-select:none}.post-toc summary:hover{color:var(--color-primary)}.post-toc ul{padding:0 0 var(--space-2);margin:0;list-style:none}.post-toc a{padding:3px var(--space-3) 3px var(--space-3);margin-left:var(--space-3);font-size:var(--text-sm);color:var(--color-text-muted);border-left:2px solid #0000;text-decoration:none;transition:color .15s ease-out,border-color .15s ease-out;display:block}.post-toc a.toc-sub{padding-left:var(--space-4)}.post-toc a:hover{color:var(--color-primary)}.post-toc a.toc-active{color:var(--color-primary);border-left-color:var(--color-primary)}@media (width>=1240px){.post-toc{top:96px;right:calc(50% - var(--maxw) / 2 + var(--pad) + 780px + 32px);background:0 0;border:none;width:210px;max-height:calc(100vh - 160px);margin:0;position:fixed;overflow-y:auto}.post-toc summary{display:none}.post-toc ul{padding:0}}.js .reveal{transition-delay:var(--reveal-delay,0s)}.post-detail{width:100%;max-width:var(--maxw);padding-left:var(--pad);padding-right:var(--pad);box-sizing:border-box;margin:0 auto}@media (width>=1240px){.post-detail>:not(.post-toc){max-width:780px}.post-detail>.post-cover-wrap{max-width:100%}}.post-title-dropcap .post-content>p:first-of-type:first-letter,.post-content.dropcap>p:first-of-type:first-letter{float:left;font-family:var(--font-display);color:var(--color-primary);margin-top:.05em;padding-right:.08em;font-size:3.6em;font-weight:700;line-height:.8}.post-meta-trio{align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--color-text-muted);letter-spacing:.04em;font-variant-numeric:tabular-nums;margin-bottom:var(--space-3);display:flex}.meta-divider{opacity:.4}.meta-segment a{color:var(--color-accent);text-decoration:none}.meta-segment a:hover{text-decoration:underline}.post-desc{color:var(--color-text-muted);font-size:var(--text-base);margin:0 0 var(--space-4);max-width:480px}.post-updated{font-size:var(--text-xs);color:var(--color-text-muted);margin:0 0 var(--space-4)}.post-nav-blocks{gap:var(--space-4);margin:var(--space-section) 0 var(--space-6);grid-template-columns:1fr 1fr;display:grid}.post-nav-block{gap:var(--space-2);padding:var(--space-5) var(--space-4);border:1px solid var(--color-border);color:var(--color-text);transition:border-color var(--dur-fast), transform var(--dur-fast);border-radius:4px;flex-direction:column;text-decoration:none;display:flex}.post-nav-block:hover{border-color:var(--color-accent);transform:translateY(-2px)}.post-nav-label{font-size:var(--text-xs);letter-spacing:.15em;text-transform:uppercase;color:var(--color-text-muted)}.post-nav-title{font-family:var(--font-display);font-size:var(--text-lg);letter-spacing:-.01em;font-weight:600;line-height:1.4}@media (width<=640px){.post-nav-blocks{grid-template-columns:1fr}}.post-content hr,.post-content>hr{background:var(--color-border);height:1px;margin:var(--space-6) auto;border:none;max-width:120px;position:relative;overflow:visible}.post-content hr:after{content:"";background:var(--color-accent);transform-origin:0;width:100%;height:100%;transition:transform .8s var(--ease-out);position:absolute;top:0;left:0;transform:scaleX(0)}.post-content hr.revealed:after,.revealed .post-content hr:after{transform:scaleX(1)}.archive-list{margin:0;padding:0;list-style:none}.archive-list li{align-items:baseline;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:1px solid var(--color-border-light);display:flex}.archive-num{font-size:var(--text-xs);font-variant-numeric:tabular-nums;color:var(--color-text-muted);letter-spacing:.08em;flex-shrink:0;min-width:2.5em}.category-list li{padding-left:3.2em;position:relative}.cat-num{left:0;top:var(--space-2);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.14em;color:var(--color-text-muted);transition:color var(--dur-fast) var(--ease-out);position:absolute}.category-list li:hover .cat-num{color:var(--color-primary)}@media (width<=640px){.category-list li{padding-left:0}.cat-num{display:none}}.back-top{right:var(--pad);bottom:calc(24px + env(safe-area-inset-bottom,0px));z-index:90;border:1px solid var(--color-border);background:color-mix(in srgb, var(--color-bg) 62%, transparent);-webkit-backdrop-filter:blur(16px);width:44px;height:44px;color:var(--color-text-muted);cursor:pointer;opacity:0;visibility:hidden;transition:opacity .3s var(--ease-out), transform .3s var(--ease-out), visibility .3s, color .2s ease-out, border-color .2s ease-out;border-radius:50%;justify-content:center;align-items:center;padding:0;display:flex;position:fixed;transform:translateY(8px)}.back-top.back-top-show{opacity:1;visibility:visible;transform:translateY(0)}.back-top.back-top-show:hover{color:var(--color-primary);border-color:var(--color-primary);transform:translateY(-2px)}.back-top svg{width:20px;height:20px;display:block}.changelog-entry{padding:var(--space-6) 0;border-top:1px solid var(--color-border-light);scroll-margin-top:96px}.changelog-entry:last-child{border-bottom:1px solid var(--color-border-light)}.changelog-head{align-items:baseline;gap:var(--space-2) var(--space-3);flex-wrap:wrap;display:flex}.changelog-ver{font-family:var(--font-mono);letter-spacing:-.02em;color:var(--color-text);margin:0;font-size:clamp(20px,2.4vw,26px);font-weight:700}.changelog-date{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted);margin-left:auto}.changelog-latest{font-family:var(--font-mono);font-size:var(--text-xs);background:var(--color-text);color:var(--color-bg);border-radius:999px;padding:2px 10px}.changelog-title{margin:var(--space-1) 0 0;font-family:var(--font-display);letter-spacing:-.01em;color:var(--color-text);flex-basis:100%;font-size:clamp(17px,1.8vw,20px);font-weight:600}.changelog-list{margin:var(--space-2) 0 0;padding:0;list-style:none}.changelog-list li{padding:var(--space-1) 0 var(--space-1) 1.2em;color:var(--color-text);position:relative}.changelog-list li:before{content:"·";font-family:var(--font-mono);color:var(--color-text-muted);position:absolute;left:.15em}.cursor-star{width:22px;height:22px;color:var(--cursor-star);pointer-events:none;z-index:9999;opacity:0;will-change:transform;transition:opacity .25s;position:fixed;top:0;left:0}.cursor-star svg{filter:drop-shadow(0 0 4px);width:100%;height:100%;transition:transform .2s var(--ease-out);display:block}.cursor-star.cursor-visible{opacity:1}html.custom-cursor-on,html.custom-cursor-on *{cursor:none!important}html.custom-cursor-on input,html.custom-cursor-on textarea{cursor:text!important}.cursor-star.cursor-hover svg{transform:scale(1.5)}.stardust{z-index:9998;pointer-events:none;background:var(--cursor-dust-1);clip-path:polygon(50% 0,63% 37%,100% 50%,63% 63%,50% 100%,37% 63%,0 50%,37% 37%);will-change:transform, opacity;animation:.9s ease-out forwards stardust-fall;position:fixed}.stardust.alt{background:var(--cursor-dust-2)}@keyframes stardust-fall{0%{opacity:.95;transform:translate(0)rotate(0)scale(1)}to{opacity:0;transform:translate(var(--dx), var(--dy)) rotate(var(--dr)) scale(.15)}}@media (pointer:coarse){.cursor-star,.stardust{display:none!important}}.post-toc,.related{background:color-mix(in srgb, var(--color-card) 62%, transparent);backdrop-filter:blur(14px)saturate(140%);border:1px solid var(--color-border-light);border-radius:4px;box-shadow:0 8px 28px #0000000d}.related{border-top:1px solid var(--color-border-light);padding:var(--space-4) var(--space-5) var(--space-5)}.dark .post-toc,.dark .related{background:color-mix(in srgb, var(--color-card) 72%, transparent);border-color:var(--color-border);box-shadow:0 8px 28px #00000059}.dark .related{border-top-color:var(--color-border)}@media (width>=1240px){.post-toc{backdrop-filter:none;box-shadow:none;background:0 0;border:none;border-radius:0}}@supports not (backdrop-filter:blur(1px)){.post-toc,.related{background:var(--color-card)}}@media (width<=480px){.post-toc,.related{backdrop-filter:blur(8px)}}@media (prefers-reduced-motion:reduce){.btn-pill:before{transition:none}.marquee-track{animation:none}html.js .hero-name .char,html.js .about-hello .word,html.js .contact-head .word{opacity:1!important;transition:none!important;transform:none!important}.dot{animation:none}.reveal{opacity:1;transition:none;transform:none}.page-fade,main{animation:none}.about-hero:before{opacity:.6;animation:none}.accordion-chevron,.post-card,.post-card h2 a{transition:none}.post-card:hover{box-shadow:none;transform:none}.post-card:hover h2 a{transform:none}.post-nav-block{transition:none}.post-nav-block:hover{transform:none}.post-content hr:after{transition:none;transform:scaleX(1)}.cursor-star,.stardust{display:none!important}.back-top{transition:none}.dot{box-shadow:0 0 4px 1px color-mix(in srgb, var(--color-accent) 30%, transparent);animation:none}}@media (width<=640px){.foot-col a{padding:5px 0}.foot-icp,.post-meta-trio a{padding:5px 0;display:inline-block}.share-btn{min-height:36px}.accordion-body a{padding:4px 0;display:inline-block}.site-mark{margin:-6px -10px;padding:6px 10px;display:inline-block}}
