:root{color:#000000e0;font-synthesis:none;letter-spacing:0;--ink:#000000e0;--ink-secondary:#000000a6;--muted:#00000073;--paper:#fff;--line:#e5e8ec;--bg:#f5f7fa;--blue:#1677ff;--blue-hover:#4096ff;--blue-active:#0958d9;--blue-bg:#e6f4ff;--blue-shadow:0 8px 24px #1677ff1f;background:#f5f7fa;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,HarmonyOS Sans SC,Microsoft YaHei,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{min-width:320px;margin:0}a{color:inherit;text-decoration:none}button,input{font:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--blue);outline-offset:2px}img{max-width:100%;display:block}.site-shell{flex-direction:column;min-height:100vh;display:flex}.site-header{-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line);z-index:20;background:#ffffffeb;height:64px;position:sticky;top:0}.header-inner{justify-content:space-between;align-items:center;width:min(1180px,100% - 40px);height:100%;margin:0 auto;display:flex}.brand{color:var(--blue);letter-spacing:-.3px;align-items:center;gap:10px;font-size:20px;font-weight:700;display:inline-flex}.brand img{object-fit:contain;border-radius:7px;width:32px;height:32px}.header-inner nav{align-items:center;gap:28px;font-size:14px;display:flex}.header-inner nav a{color:var(--ink-secondary);transition:color .16s}.header-inner nav a:hover{color:var(--blue)}main{flex:1}.masthead{color:#fff;background:linear-gradient(135deg,#1677ff 0%,#0958d9 55%,#0a3d9c 100%);padding:104px 0 112px;position:relative;overflow:hidden}.masthead:before{content:"";background:radial-gradient(720px 380px at 88% -12%,#ffffff29,#0000 62%),radial-gradient(560px 320px at -6% 110%,#4096ff47,#0000 58%);position:absolute;inset:0}.masthead-content{flex-direction:column;align-items:flex-start;width:min(1180px,100% - 40px);margin:0 auto;display:flex;position:relative}.eyebrow{color:#a8ccff;letter-spacing:.28em;margin:0 0 18px;font-size:13px;font-weight:600}.masthead h1{letter-spacing:-1px;margin:0;font-size:clamp(42px,6vw,68px);font-weight:700;line-height:1.08}.masthead-content>p:not(.eyebrow){color:#ffffffe0;width:min(580px,100%);margin:24px 0 0;font-size:18px;line-height:1.8}.masthead-cta{min-height:46px;color:var(--blue-active);background:#fff;border-radius:8px;align-items:center;margin-top:36px;padding:0 30px;font-size:15px;font-weight:600;transition:transform .2s,box-shadow .2s;display:inline-flex}.masthead-cta:hover{transform:translateY(-2px);box-shadow:0 10px 28px #00153347}.feed-band{background:var(--bg);padding:64px 0 96px}.feed-layout{grid-template-columns:250px minmax(0,1fr);gap:56px;width:min(1180px,100% - 40px);margin:0 auto;display:grid}.feed-sidebar{align-self:start;position:sticky;top:96px}.feed-sidebar h2{letter-spacing:-.5px;margin:0 0 30px;font-size:30px;font-weight:700}.search-form label{color:var(--muted);margin-bottom:9px;font-size:13px;display:block}.search-row{grid-template-columns:minmax(0,1fr) auto;display:grid}.search-row input{min-width:0;height:40px;color:var(--ink);background:#fff;border:1px solid #d4dae0;border-right:0;border-radius:8px 0 0 8px;padding:0 12px;transition:border-color .16s,box-shadow .16s}.search-row input:focus{border-color:var(--blue);box-shadow:0 0 0 3px #1677ff1a}.search-row button,.pagination button,.feed-state button{border:1px solid var(--blue);background:var(--blue);color:#fff;border-radius:0 8px 8px 0;min-height:40px;padding:0 16px;font-weight:500;transition:background-color .16s,border-color .16s,transform .16s}.search-row button:hover,.pagination button:hover:not(:disabled),.feed-state button:hover{background:var(--blue-hover);border-color:var(--blue-hover)}.search-row button:active,.pagination button:active:not(:disabled),.feed-state button:active{background:var(--blue-active);border-color:var(--blue-active);transform:translateY(1px)}.category-filter{flex-direction:column;align-items:stretch;gap:4px;margin-top:28px;display:flex}.category-filter button{min-height:38px;color:var(--ink-secondary);text-align:left;background:0 0;border:0;border-radius:8px;padding:0 12px;transition:color .16s,background-color .16s}.category-filter button:hover{color:var(--blue);background:var(--blue-bg)}.category-filter button.active{background:var(--blue-bg);color:var(--blue);font-weight:600}.article-feed{flex-direction:column;gap:20px;min-width:0;display:flex}.article-card{border:1px solid var(--line);background:var(--paper);border-radius:10px;grid-template-columns:minmax(220px,35%) minmax(0,1fr);min-height:215px;transition:box-shadow .2s,transform .2s,border-color .2s;display:grid;overflow:hidden}.article-card:hover{box-shadow:var(--blue-shadow);border-color:#1677ff66;transform:translateY(-3px)}.article-cover{background:#eef2f6;overflow:hidden}.article-cover img{object-fit:cover;width:100%;height:100%;transition:transform .26s}.article-cover:hover img{transform:scale(1.04)}.article-copy{min-width:0;padding:25px 28px 22px}.article-meta{color:var(--muted);flex-wrap:wrap;gap:8px 18px;font-size:13px;display:flex}.article-copy h3{letter-spacing:-.3px;overflow-wrap:anywhere;margin:14px 0 10px;font-size:24px;font-weight:600;line-height:1.4}.article-copy h3 a{transition:color .16s}.article-copy h3 a:hover{color:var(--blue)}.article-copy p{color:var(--ink-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:15px;line-height:1.75;display:-webkit-box;overflow:hidden}.tag-row{flex-wrap:wrap;gap:7px;min-height:22px;margin-top:16px;font-size:12px;display:flex}.tag-row span{background:var(--blue-bg);color:var(--blue);border-radius:999px;padding:3px 11px;transition:background-color .16s,color .16s}.tag-row span:hover{color:var(--blue-active);background:#cfe5ff}.feed-state{min-height:260px;color:var(--muted);background:#fff9;border:1px dashed #c9d2da;border-radius:10px;flex-direction:column;justify-content:center;align-items:flex-start;gap:12px;padding:48px 28px;display:flex}.feed-state strong{color:var(--ink);font-size:20px}.feed-state button{border-radius:8px;margin-top:6px}.error-state{border-color:#ffbbb2}.pagination{justify-content:flex-end;align-items:center;gap:16px;padding-top:18px;display:flex}.pagination button{border-radius:8px}.pagination button:disabled{cursor:not-allowed;opacity:.4}.article-page{border:1px solid var(--line);background:var(--paper);border-radius:14px;width:min(1020px,100% - 40px);margin:48px auto 72px;padding:56px 60px 64px}.article-header{max-width:780px;margin:0 auto 36px}.back-link{color:var(--blue);margin-bottom:34px;font-size:14px;transition:color .16s;display:inline-block}.back-link:hover{color:var(--blue-active)}.article-header h1{letter-spacing:-.5px;overflow-wrap:anywhere;margin:18px 0;font-size:44px;font-weight:700;line-height:1.3}.article-header>p{color:var(--muted);margin:0;font-size:18px;line-height:1.8}.article-hero{aspect-ratio:16/8;object-fit:cover;border-radius:10px;width:100%}.article-body{color:#000000d1;overflow-wrap:anywhere;max-width:780px;margin:52px auto 0;font-size:16.5px;line-height:1.9}.article-body h2,.article-body h3{letter-spacing:-.3px;margin:2em 0 .7em;line-height:1.35}.article-body h2{font-size:27px}.article-body h3{font-size:21px}.article-body a{color:var(--blue);text-underline-offset:3px;text-decoration:underline}.article-body img{border-radius:8px;margin:30px auto}.article-body pre{color:#dbe7f5;background:#0b1526;border-radius:8px;padding:20px;font:14px/1.7 Cascadia Code,Consolas,monospace;overflow-x:auto}.article-body code{font-family:Cascadia Code,Consolas,monospace}.article-body :not(pre)>code{color:var(--blue-active);background:#1677ff14;border-radius:4px;padding:2px 6px}.article-body blockquote{border-left:3px solid var(--blue);color:var(--ink-secondary);margin:28px 0;padding:4px 0 4px 20px}.article-end{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:24px;max-width:780px;margin:54px auto 0;padding-top:25px;display:flex}.article-end .tag-row{margin:0}.article-end>a{color:var(--blue);font-weight:600}.article-state{flex-direction:column;justify-content:center;align-items:flex-start;gap:18px;width:min(780px,100% - 40px);min-height:60vh;margin:0 auto;display:flex}.article-state a{color:var(--blue)}.resume-page{border:1px solid var(--line);background:var(--paper);border-radius:16px;width:min(1080px,100% - 40px);margin:48px auto 72px;overflow:hidden;box-shadow:0 18px 50px #0f234114}.resume-hero{color:#fff;background:radial-gradient(480px 260px at 92% 5%,#ffffff29,#0000 65%),linear-gradient(135deg,#0b3976,#1677ff);justify-content:space-between;align-items:center;gap:48px;min-height:280px;padding:58px 68px;display:flex}.resume-eyebrow,.state-eyebrow{color:#a8ccff;letter-spacing:.24em;margin:0 0 14px;font-size:12px;font-weight:700}.resume-identity h1{letter-spacing:-1px;margin:0;font-size:clamp(42px,6vw,66px);line-height:1.08}.resume-headline{color:#ffffffe6;margin:18px 0 0;font-size:20px;line-height:1.6}.resume-location{color:#ffffffb3;margin-top:10px;font-size:14px;display:block}.resume-hero img,.public-avatar-placeholder{object-fit:cover;border:5px solid #ffffff38;border-radius:50%;flex:none;width:144px;height:144px;box-shadow:0 16px 36px #001e5042}.public-avatar-placeholder{color:#fff;background:#ffffff26;place-items:center;font-size:54px;font-weight:700;display:grid}.resume-content-layout{grid-template-columns:270px minmax(0,1fr);display:grid}.resume-sidebar{border-right:1px solid var(--line);background:#f8fbff;padding:50px 34px}.resume-panel+.resume-panel{margin-top:42px}.resume-panel h2,.resume-section>h2{color:var(--ink);letter-spacing:-.2px;margin:0 0 22px;font-size:19px}.resume-panel h2:after,.resume-section>h2:after{content:"";background:var(--blue);border-radius:3px;width:32px;height:3px;margin-top:10px;display:block}.resume-panel address{gap:12px;font-style:normal;display:grid}.resume-panel address a{color:var(--ink-secondary);overflow-wrap:anywhere;font-size:14px;line-height:1.5;transition:color .16s}.resume-panel address a:hover{color:var(--blue)}.public-skill-group+.public-skill-group{margin-top:24px}.public-skill-group h3{color:var(--ink-secondary);margin:0 0 10px;font-size:14px}.public-skill-group>div{flex-wrap:wrap;gap:7px;display:flex}.public-skill-group span{color:#274568;background:#fff;border:1px solid #cfdded;border-radius:999px;padding:5px 10px;font-size:12px}.resume-main{min-width:0;padding:50px 58px 58px}.resume-section+.resume-section{margin-top:48px}.resume-entry{border-left:2px solid #dbe7f5;padding:0 0 28px 25px;position:relative}.resume-entry:last-child{padding-bottom:0}.resume-entry:before{content:"";border:2px solid var(--blue);background:#fff;border-radius:50%;width:10px;height:10px;position:absolute;top:6px;left:-6px}.resume-entry+.resume-entry{padding-top:2px}.resume-entry-heading{justify-content:space-between;align-items:flex-start;gap:24px;display:flex}.resume-entry-heading h3{color:var(--ink);margin:0;font-size:18px;line-height:1.45}.resume-entry-heading h3 a{color:var(--blue-active)}.resume-entry-heading p{color:var(--ink-secondary);margin:5px 0 0;font-size:14px}.resume-entry-heading time{color:var(--muted);flex:none;font-size:12px;line-height:1.8}.resume-rich-text{color:var(--ink-secondary);overflow-wrap:anywhere;margin-top:14px;font-size:15px;line-height:1.85}.resume-section>.resume-rich-text{margin-top:0;font-size:16px}.resume-rich-text>:first-child{margin-top:0}.resume-rich-text>:last-child{margin-bottom:0}.resume-rich-text a{color:var(--blue);text-underline-offset:3px;text-decoration:underline}.resume-rich-text ul,.resume-rich-text ol{padding-left:1.3em}.resume-rich-text code{background:var(--blue-bg);color:var(--blue-active);border-radius:4px;padding:2px 5px}.resume-updated{border-top:1px solid var(--line);color:var(--muted);text-align:right;padding:18px 58px;font-size:12px}.resume-state{flex-direction:column;justify-content:center;align-items:flex-start;gap:13px;width:min(760px,100% - 40px);min-height:65vh;margin:0 auto;display:flex}.resume-state h1{margin:0;font-size:38px}.resume-state p{color:var(--ink-secondary);margin:0;line-height:1.7}.resume-state button{border:1px solid var(--blue);background:var(--blue);color:#fff;border-radius:8px;min-height:42px;margin-top:8px;padding:0 20px;transition:background-color .16s}.resume-state button:hover{background:var(--blue-hover)}.resume-error .state-eyebrow{color:var(--blue)}.site-footer{border-top:1px solid var(--line);min-height:92px;color:var(--muted);background:#fff;justify-content:space-between;align-items:center;gap:20px;padding:24px max(20px,50% - 590px);font-size:13px;display:flex}.footer-main,.footer-links{flex-wrap:wrap;align-items:center;gap:8px 18px;display:flex}.site-footer a{transition:color .16s}.site-footer a:hover{color:var(--blue)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.article-card{transition:none;transform:none}.article-cover img{transition:none}.article-cover:hover img{transform:none}.masthead-cta{transition:none;transform:none}.tag-row span,.category-filter button,.header-inner nav a,.search-row button,.pagination button,.feed-state button,.resume-panel address a,.resume-state button{transition:none}}@media (width<=820px){.masthead{padding:72px 0 80px}.feed-layout{grid-template-columns:1fr;gap:32px}.feed-sidebar{position:static}.category-filter{flex-flow:wrap}.article-card{grid-template-columns:1fr}.article-cover{aspect-ratio:16/8}.article-header h1{font-size:34px}.article-page{padding:36px 28px 44px}.resume-hero{padding:46px 38px}.resume-content-layout{grid-template-columns:1fr}.resume-sidebar{border-right:0;border-bottom:1px solid var(--line);grid-template-columns:repeat(2,minmax(0,1fr));gap:36px;display:grid}.resume-panel+.resume-panel{margin-top:0}.resume-main{padding:44px 38px}}@media (width<=520px){.site-header{height:58px}.header-inner,.masthead-content,.feed-layout,.article-page,.resume-page{width:calc(100% - 28px)}.header-inner nav{gap:18px}.masthead{padding:56px 0 64px}.feed-band{padding-top:42px}.article-copy{padding:21px 20px}.article-copy h3{font-size:21px}.article-header h1{font-size:30px}.article-header>p{font-size:16px}.article-body{margin-top:38px;font-size:16px}.article-end,.site-footer,.footer-main,.footer-links{flex-direction:column;align-items:flex-start}.resume-page{border-radius:12px;margin-top:22px}.resume-hero{flex-direction:column-reverse;align-items:flex-start;gap:26px;padding:38px 26px 42px}.resume-hero img,.public-avatar-placeholder{width:102px;height:102px;font-size:38px}.resume-identity h1{font-size:42px}.resume-headline{font-size:17px}.resume-sidebar{grid-template-columns:1fr;padding:34px 26px}.resume-panel+.resume-panel{margin-top:4px}.resume-main{padding:36px 26px}.resume-entry-heading{flex-direction:column;gap:5px}.resume-updated{text-align:left;padding:16px 26px}}
