:root{font-synthesis:none;--bg:#0b1020;--surface:#121a2d;--surface-hover:#19243b;--text:#edf1ff;--muted:#a6b2ca;--border:#2a3550;--accent:#a4b5ff;--accent-strong:#4662d9;--purple:#a58aff;--header:#0b1020e0;--glow:#5550d229;--radius:20px;--gap:24px;--content:1160px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:var(--text);background:var(--bg);font-family:Segoe UI,Microsoft YaHei,sans-serif;line-height:1.7}:root[data-theme=light]{--bg:#f6f7fc;--surface:#fff;--surface-hover:#edf0fa;--text:#19233a;--muted:#53617c;--border:#d8deeb;--accent:#394fb1;--accent-strong:#4058c5;--purple:#6946b5;--header:#f6f7fce6;--glow:#6a5fd71a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;transition:background .2s,color .2s}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:var(--accent);text-underline-offset:5px}img{max-width:100%;height:auto}:focus-visible{outline:3px solid var(--accent);outline-offset:5px}h1,h2,h3{letter-spacing:-.03em;overflow-wrap:anywhere;line-height:1.25}h1{margin:16px 0 24px;font-size:clamp(2.5rem,6vw,4.8rem)}h2{margin:12px 0 28px;font-size:clamp(1.8rem,3vw,2.5rem)}h3{margin:12px 0;font-size:1.15rem}p{overflow-wrap:anywhere}.container,.site-footer,.nav-shell{width:min(var(--content),calc(100% - 48px));margin-inline:auto}.section{padding-block:72px;scroll-margin-top:100px}.site-layout{flex-direction:column;min-height:100dvh;display:flex}.pointer-particles{z-index:30;pointer-events:none;width:100%;height:100%;position:fixed;inset:0}main{flex:1;min-width:0}.site-header{z-index:20;background:var(--bg);border-bottom:1px solid #0000;transition:background .2s,border-color .2s;position:sticky;top:0}.site-header.scrolled{background:var(--header);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-color:var(--border)}.nav-shell{align-items:center;gap:28px;min-height:84px;display:flex}.brand{color:var(--text);white-space:nowrap;font-size:1.3rem;font-weight:750;text-decoration:none}.brand span{color:var(--accent)}nav{align-items:center;gap:24px;margin-left:auto;display:flex}nav a{color:var(--muted);align-items:center;min-height:44px;text-decoration:none;display:flex}nav a.active,nav a:hover{color:var(--accent)}.nav-actions,.actions{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.icon-button,.language-button,.menu-toggle{border:1px solid var(--border);background:var(--surface);min-width:44px;min-height:44px;color:var(--text);border-radius:10px;padding:6px 12px}.menu-toggle{display:none}.button{color:#fff;background:linear-gradient(115deg,#4059c6,#7250b5);border:1px solid #0000;border-radius:12px;justify-content:center;align-items:center;gap:8px;min-height:46px;padding:11px 22px;font-weight:600;text-decoration:none;transition:transform .18s,background .18s;display:inline-flex}.button.secondary{background:var(--surface);border-color:var(--border);color:var(--text)}.button:hover{transform:translateY(-2px)}.button:active{transform:translateY(0)}.hero{grid-template-columns:1.25fr 1fr;align-items:center;gap:64px;min-height:650px;padding-block:100px;display:grid;position:relative}.hero-copy{z-index:1;position:relative}.hero h1{letter-spacing:-.055em;max-width:10ch;font-size:clamp(3.1rem,7vw,6rem);line-height:1.1}.hero-eyebrow{border:1px solid var(--border);background:var(--surface);border-radius:999px;align-items:center;gap:8px;padding:7px 13px;display:inline-flex}.hero-eyebrow .status-dot{box-shadow:0 0 0 4px var(--glow);margin:0}.hero-note{border-top:1px solid var(--border);color:var(--muted);letter-spacing:.02em;margin-top:32px;padding-top:18px;font-size:.88rem}.hero .actions{margin-top:4px}.hero:before{content:"";background:radial-gradient(ellipse at 85% 40%,var(--glow),transparent 65%);pointer-events:none;z-index:-1;position:absolute;inset:0}.hero-description{max-width:550px;color:var(--muted);margin:24px 0 32px;font-size:1.1rem}.eyebrow{color:var(--accent);letter-spacing:.06em;font-size:.88rem}.accent{color:var(--accent)}.muted,small{color:var(--muted)}.typewriter{min-height:2em;color:var(--accent);font-family:Consolas,monospace;font-size:clamp(1rem,2vw,1.3rem)}.caret{animation:1s steps(2,end) infinite blink}.social{margin-top:24px;font-size:.85rem}.portrait{background:linear-gradient(140deg,var(--glow),transparent);border:1px solid var(--border);border-radius:36px;padding:24px;transform:rotate(3deg)}.portrait-frame{background:var(--surface);text-align:center;border-radius:24px;padding:24px;transform:rotate(-3deg)}.portrait img{aspect-ratio:1;border-radius:50%;width:240px}.portrait p{margin:24px 0 0;font:.85rem Consolas,monospace}.status-dot{background:var(--accent);border-radius:50%;width:8px;height:8px;margin-right:8px;display:inline-block}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);min-width:0;padding:28px}.card p{color:var(--muted)}.card-icon{color:var(--accent);font-size:2rem}.about-grid{gap:var(--gap);grid-template-columns:1.2fr 1fr;align-items:start;display:grid}.grid,.project-grid,.blog-grid{gap:var(--gap);grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));display:grid}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:24px}.timeline{border-left:1px solid var(--border);padding-left:20px;list-style:none}.timeline li{padding:0 0 20px 12px;position:relative}.timeline li:before{content:"";background:var(--accent);border-radius:50%;width:10px;height:10px;position:absolute;top:8px;left:-26px}.tags{flex-wrap:wrap;gap:8px;margin:18px 0;display:flex}.tags span,.tags button{border:1px solid var(--border);color:var(--accent);background:var(--surface-hover);border-radius:8px;padding:5px 10px;font-size:.83rem}.tags button{min-height:44px}.filters{flex-wrap:wrap;gap:8px;margin:24px 0;display:flex}.filters button{border:1px solid var(--border);background:var(--surface);color:var(--muted);border-radius:10px;min-height:44px;padding:9px 18px}.filters button[aria-pressed=true],.tags button[aria-pressed=true]{background:var(--accent-strong);color:#fff;border-color:var(--accent-strong)}.skills-grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px;display:grid}.skills-grid .card{align-items:center;gap:16px;padding:20px;transition:transform .2s,border-color .2s;display:flex}.skills-grid h3{margin:0 0 4px}.skill-mark{color:var(--accent);background:var(--surface-hover);border-radius:10px;padding:10px;font:700 1rem Consolas,monospace}.skills-grid .card:hover,.project-card:hover{border-color:var(--accent);transform:translateY(-4px)}.contact-card{background:linear-gradient(120deg,var(--surface),var(--glow));padding:48px}.project-card{padding:0;transition:transform .2s,border-color .2s;overflow:hidden}.project-cover{aspect-ratio:16/9;object-fit:cover;width:100%;display:block}.project-body{padding:28px}.project-body h2,.blog-grid h2{margin:16px 0;font-size:1.5rem}.project-body .actions{margin-top:24px}summary{cursor:pointer;min-height:44px}.search-panel{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:24px}.search-row{gap:12px;margin-top:10px;display:flex}input{background:var(--bg);border:1px solid var(--border);width:100%;min-width:0;color:var(--text);border-radius:10px;padding:12px 16px}.empty{text-align:center;border:1px dashed var(--border);border-radius:var(--radius);color:var(--muted);padding:64px 24px}.reading{width:min(760px,100% - 48px);margin:auto}.reading h1{font-size:clamp(2rem,5vw,3.5rem)}.reading header{margin:40px 0}.prose{overflow-wrap:anywhere;margin:40px 0;line-height:1.9}.prose h1{font-size:2rem}.prose h2{margin-top:40px;font-size:1.6rem}.prose img{border-radius:12px}.prose pre{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:24px;overflow:auto}.prose code{font-family:Consolas,monospace;font-size:.9em}.prose :not(pre)>code{background:var(--surface-hover);border-radius:4px;padding:3px 6px}.prose blockquote,.notice{border-left:3px solid var(--accent);background:var(--surface);color:var(--muted);margin:24px 0;padding:12px 20px}.table-scroll{overflow:auto}table{border-collapse:collapse;width:100%}td,th{border:1px solid var(--border);text-align:left;padding:12px}.hljs-keyword,.hljs-built_in,.hljs-selector-tag{color:var(--purple)}.hljs-string,.hljs-title,.hljs-attr{color:var(--accent)}.hljs-comment{color:var(--muted)}.site-footer{border-top:1px solid var(--border);color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:24px;padding-block:40px;font-size:.9rem;display:flex}.site-footer p{margin:8px 0}.skip-link{z-index:100;background:var(--surface);padding:12px;position:fixed;top:-100px;left:16px}.skip-link:focus{top:12px}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.page-enter{animation:.3s both enter}[data-reveal]{transition:opacity .5s,transform .5s}.reveal-pending{opacity:0;transform:translateY(14px)}@keyframes enter{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes blink{50%{opacity:0}}@media (width<=900px){.nav-shell{flex-wrap:wrap;gap:12px;min-height:76px;padding-block:14px}.menu-toggle{margin-left:auto;display:block}.nav-actions{margin-left:0}nav{flex-wrap:wrap;order:4;gap:12px 24px;width:100%;margin:0;padding-top:12px;display:none}nav.open{display:flex}.hero{gap:32px;min-height:550px;padding-block:64px}.portrait{padding:12px}.portrait-frame{padding:16px}.about-grid{grid-template-columns:1fr}}@media (width<=600px){.container,.site-footer,.nav-shell,.reading{width:calc(100% - 32px)}.hero{grid-template-columns:1fr;padding-block:48px}.portrait{justify-self:center;max-width:300px}.section{padding-block:48px}.grid.two{grid-template-columns:1fr}.card{padding:22px}.project-card{padding:0}.search-row{flex-direction:column}.search-panel{padding:18px}.contact-card{padding:28px}.skills-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.skills-grid .card{flex-direction:column;align-items:start;padding:14px}.nav-shell{gap:8px}.nav-actions{gap:6px}.language-button{padding:6px 8px}.brand{font-size:1.15rem}.prose pre{padding:16px}.hero .actions .button{white-space:nowrap;flex:1}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}.reveal-pending{opacity:1;transform:none}}.reveal-pending:focus-within{opacity:1;transform:none}
