:root{--ink: #1c1c1a;--muted: #6f6f68;--faint: #a3a39a;--line: rgba(28, 28, 26, .1);--paper: #ffffff;--lavender: #a78bfa;--sky: #7cb8f0;--peach: #f0a17b;--mint: #5dcaa5;--serif: "Noto Serif SC", "Source Han Serif SC", "Songti SC", "STSong", serif;--sans: -apple-system, "PingFang SC", "Microsoft YaHei", "Segoe UI", sans-serif;--mono: "JetBrains Mono", ui-monospace, "SF Mono", Consolas, monospace}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:var(--sans);color:var(--ink);background:var(--paper);line-height:1.75;overflow-x:hidden}.wrap{max-width:1020px;margin:0 auto;padding:0 24px}a{color:inherit;text-decoration:none}::selection{background:#a78bfa40}nav{position:sticky;top:0;z-index:10;background:#ffffffd1;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.nav-inner{display:flex;align-items:center;justify-content:space-between;height:60px}.logo{font-family:var(--serif);font-weight:900;font-size:20px}.nav-links{display:flex;gap:26px;font-family:var(--mono);font-size:13px;color:var(--muted)}.nav-links a{transition:color .2s}.nav-links a:hover{color:var(--ink)}.nav-links a:focus-visible{outline:2px solid var(--lavender);outline-offset:4px;border-radius:2px}.lock{opacity:.55}.hero{position:relative;padding:110px 0 90px;text-align:center}.blob{position:absolute;border-radius:50%;filter:blur(70px);opacity:.55;pointer-events:none}.blob-1{width:380px;height:300px;background:var(--lavender);top:-60px;left:6%}.blob-2{width:420px;height:320px;background:var(--sky);top:-30px;right:4%;opacity:.45}.blob-3{width:460px;height:260px;background:var(--peach);bottom:-120px;left:32%;opacity:.4}.hero-inner{position:relative}.eyebrow{font-family:var(--mono);font-size:13px;color:var(--muted);letter-spacing:.08em}h1{font-family:var(--serif);font-weight:900;font-size:clamp(44px,7vw,76px);line-height:1.2;margin:14px 0 20px;letter-spacing:.01em}.hero-sub{font-size:17px;color:var(--muted)}.hero-meta{font-family:var(--mono);font-size:13px;color:var(--faint);margin-top:10px}.hero-cta{margin-top:34px;display:flex;gap:14px;justify-content:center;flex-wrap:wrap}.btn{display:inline-block;font-size:15px;padding:11px 26px;border-radius:999px;border:1px solid var(--ink);transition:transform .2s,box-shadow .2s}.btn:hover{transform:translateY(-2px)}.btn:focus-visible{outline:2px solid var(--lavender);outline-offset:3px}.btn-solid{background:var(--ink);color:#fff}.btn-solid:hover{box-shadow:0 10px 30px #1c1c1a38}.btn-ghost:hover{box-shadow:0 10px 30px #1c1c1a1a}section{padding:72px 0}.sec-eyebrow{font-family:var(--mono);font-size:12px;color:var(--faint);letter-spacing:.12em;text-transform:lowercase}.sec-lead{max-width:640px;margin:-18px 0 34px;font-size:15px;color:var(--muted);line-height:1.7}h2{font-family:var(--serif);font-weight:900;font-size:clamp(26px,3.4vw,34px);margin:6px 0 34px}.tech-chips{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 12px}.tech-chip{font-family:var(--mono);font-size:11.5px;line-height:1;padding:7px 10px;border-radius:8px;border:1px solid rgba(28,28,26,.12);background:#1c1c1a09;color:var(--ink);letter-spacing:.01em}.cap-card .track-note{margin-top:0}.glow-card{position:relative;background:#ffffffeb;border:1px solid var(--line);border-radius:18px;padding:26px 26px 24px}.glow-card:before{content:"";position:absolute;inset:-34px;background:radial-gradient(closest-side,var(--glow, rgba(167,139,250,.4)),transparent 72%);filter:blur(48px);z-index:-1;pointer-events:none}.tracks{display:grid;grid-template-columns:1fr 1fr;gap:34px}.tracks-3{grid-template-columns:repeat(3,1fr)}.track-name{font-weight:600;font-size:17px}.track-note{font-family:var(--mono);font-size:12px;color:var(--muted);margin:4px 0 0;line-height:1.65}.ladder{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.step{font-family:var(--mono);font-size:13px;padding:6px 15px;border-radius:999px;border:1px solid var(--line);color:var(--faint);white-space:nowrap}.step.done{background:#5dcaa529;border-color:#5dcaa580;color:#0f6e56}.step.done:before{content:"✓ "}.step.current{background:#a78bfa24;border-color:#a78bfa8c;color:#534ab7}.step.current:after{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:#7c6ce0;margin-left:8px;vertical-align:2px;animation:pulse 1.8s ease-in-out infinite}@keyframes pulse{50%{opacity:.25}}.arrow{color:var(--faint);font-size:12px}.demo-spotlight{position:relative;display:flex;align-items:center;justify-content:space-between;gap:28px;margin-bottom:34px;padding:28px 32px;border:1px solid var(--line);border-radius:20px;background:#fffffff0;overflow:hidden;transition:transform .25s,box-shadow .25s}.demo-spotlight:before{content:"";position:absolute;inset:-40px;background:radial-gradient(closest-side,var(--glow, rgba(240,161,123,.4)),transparent 72%);filter:blur(48px);z-index:-1;pointer-events:none}.demo-spotlight:hover{transform:translateY(-3px);box-shadow:0 16px 40px #1c1c1a14}.demo-kicker{font-family:var(--mono);font-size:11px;color:var(--faint);letter-spacing:.1em;text-transform:lowercase;margin-bottom:8px}.demo-spotlight-copy h3{font-family:var(--serif);font-weight:900;font-size:clamp(24px,3vw,30px);margin:0 0 8px}.demo-spotlight-copy p:last-child{font-size:14.5px;color:var(--muted);max-width:520px;line-height:1.65}.demo-spotlight-cta{flex:0 0 auto;display:inline-flex;align-items:center;gap:8px;padding:14px 26px;border-radius:999px;background:var(--ink);color:#fff;font-size:15px;font-weight:600;white-space:nowrap;box-shadow:0 10px 28px #1c1c1a2e}.demo-spotlight:hover .demo-spotlight-cta{box-shadow:0 14px 32px #1c1c1a42}.projects{display:grid;grid-template-columns:repeat(3,1fr);gap:34px}.proj-card{display:flex;flex-direction:column;min-height:100%}.proj-tag{font-family:var(--mono);font-size:11px;color:var(--muted);letter-spacing:.04em;text-transform:uppercase}.proj-name{font-weight:600;font-size:17px;margin:8px 0}.proj-desc{font-size:14px;color:var(--muted);line-height:1.7;flex:1}.proj-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:18px}.proj-demo{display:inline-flex;align-items:center;padding:8px 14px;border-radius:999px;background:var(--ink);color:#fff;font-family:var(--mono);font-size:12px;letter-spacing:.02em;transition:transform .2s,box-shadow .2s}.proj-demo:hover{transform:translateY(-1px);box-shadow:0 8px 20px #1c1c1a2e}.proj-link{display:inline-block;font-family:var(--mono);font-size:12px;color:var(--ink);border-bottom:1px solid var(--ink);transition:opacity .2s}.proj-link:hover{opacity:.6}.projects .glow-card{transition:transform .25s}.projects .glow-card:hover{transform:translateY(-4px)}.more-projects{margin-top:30px;font-size:14px;color:var(--muted);text-align:center}.more-projects a{border-bottom:1px solid var(--faint)}.article-demo-bar{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-top:22px;padding:16px 20px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(90deg,#f0a17b14,#7cb8f014)}.article-demo-bar p{font-size:14px;color:var(--muted)}.article-demo-bar strong{color:var(--ink);font-weight:600}.posts{display:flex;flex-direction:column}.post{display:flex;align-items:baseline;justify-content:space-between;gap:20px;padding:20px 4px;border-bottom:1px solid var(--line);transition:padding-left .2s}.post:hover{padding-left:12px}.post-title{font-size:16px}.post-meta{font-family:var(--mono);font-size:12px;color:var(--faint);white-space:nowrap}.article-head{padding:80px 0 30px;position:relative}.article-head .eyebrow{margin-bottom:6px}.article-title{font-family:var(--serif);font-weight:900;font-size:clamp(30px,4.6vw,46px);line-height:1.3}.article-meta{font-family:var(--mono);font-size:13px;color:var(--faint);margin-top:14px}.prose{max-width:720px;margin:0 auto;padding-bottom:90px}.prose>*+*{margin-top:1.1em}.prose h2{font-size:22px;margin:2em 0 .6em}.prose h3{font-family:var(--serif);font-weight:900;font-size:18px;margin:1.6em 0 .4em}.prose p{color:#333330}.prose ul,.prose ol{padding-left:1.4em;color:#333330}.prose li+li{margin-top:.4em}.prose code{font-family:var(--mono);font-size:.88em;background:#1c1c1a0d;padding:2px 6px;border-radius:5px}.prose pre{background:#17171a;color:#e8e8e4;border-radius:12px;padding:18px 20px;overflow-x:auto;font-size:13.5px;line-height:1.7}.prose pre code{background:none;padding:0}.prose blockquote{border-left:3px solid var(--lavender);padding-left:16px;color:var(--muted)}.prose a{border-bottom:1px solid var(--faint)}.prose hr{border:none;border-top:1px solid var(--line);margin:2.4em 0}.prose img{max-width:100%;border-radius:12px}.prose .shot-row{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:1em 0 2.2em}.prose .shot-row figure{margin:0}.prose .shot-row img{width:100%;margin:0;display:block}.prose .shot-row figcaption{margin-top:8px;font-size:12px;color:var(--muted);text-align:center;line-height:1.4}@media(max-width:720px){.prose .shot-row{grid-template-columns:1fr}}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:34px;margin-top:10px}.about-block h3{font-family:var(--serif);font-weight:900;font-size:18px;margin-bottom:12px}.about-block ul{list-style:none}.about-block li{padding:8px 0;border-bottom:1px solid var(--line);font-size:14.5px;color:#333330;display:flex;justify-content:space-between;gap:16px}.about-block li span:last-child{font-family:var(--mono);font-size:12px;color:var(--faint);text-align:right;white-space:normal;max-width:62%}footer{border-top:1px solid var(--line);padding:26px 0 34px;margin-top:40px}.footer-inner{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;font-family:var(--mono);font-size:12px;color:var(--faint)}.footer-left{display:flex;align-items:center;flex-wrap:wrap;gap:10px 16px}.footer-left .beian:hover{color:var(--ink)}.footer-links{display:flex;align-items:center;gap:18px}.footer-links a:hover{color:var(--ink)}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--mint);margin-right:6px;animation:pulse 2.4s ease-in-out infinite}@media(max-width:820px){.tracks,.tracks-3,.projects,.about-grid{grid-template-columns:1fr;gap:40px}.demo-spotlight{flex-direction:column;align-items:flex-start;padding:24px}.hero{padding:80px 0 70px}.nav-links{gap:16px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}html{scroll-behavior:auto}}
