:root{--canvas: #f6f7f5;--surface: #ffffff;--surface-muted: #edf0ee;--ink: #202522;--ink-muted: #5e6862;--line: #d7ddd8;--accent: #16736c;--accent-dark: #0d514c;--warm: #ad5c32;--code: #e8ece9;--shell: 1120px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;color:var(--ink);background:var(--canvas)}*{box-sizing:border-box}html{background:var(--canvas);scroll-behavior:smooth}body{min-width:320px;margin:0;color:var(--ink);background:var(--canvas);font-size:16px;line-height:1.7}a{color:var(--accent-dark);text-decoration-thickness:1px;text-underline-offset:3px}a:hover{color:var(--warm)}a:focus-visible,summary:focus-visible{outline:3px solid var(--warm);outline-offset:3px}h1,h2,h3,p,ul,ol,figure,pre{margin-top:0}h1,h2,h3{line-height:1.25;letter-spacing:0}h1{margin-bottom:18px;font-size:48px}h2{font-size:28px}h3{font-size:20px}code,pre{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace}.shell{width:min(var(--shell),calc(100% - 48px));margin-inline:auto}.narrow{width:min(760px,calc(100% - 48px))}.skip-link{position:fixed;z-index:10;top:12px;left:12px;padding:8px 12px;color:#fff;background:var(--ink);transform:translateY(-150%)}.skip-link:focus{transform:translateY(0)}.site-header{border-bottom:1px solid var(--line);background:#f6f7f5fa}.header-inner{position:relative;display:flex;min-height:68px;align-items:center;justify-content:space-between;gap:28px}.site-mark{color:var(--ink);font-size:18px;font-weight:760;text-decoration:none}.desktop-nav{display:flex;align-items:center;gap:24px}.desktop-nav a{color:var(--ink-muted);font-size:14px;text-decoration:none}.desktop-nav a[aria-current=page]{color:var(--accent-dark);font-weight:700}.mobile-nav{display:none}.mobile-nav summary{color:var(--ink);cursor:pointer;font-size:14px}.mobile-nav nav{position:absolute;z-index:5;top:58px;right:0;display:grid;min-width:180px;padding:8px 0;border:1px solid var(--line);border-radius:6px;background:var(--surface);box-shadow:0 8px 20px #19241e1f}.mobile-nav nav a{padding:10px 14px;color:var(--ink);text-decoration:none}.mobile-nav nav a[aria-current=page]{color:var(--accent-dark);font-weight:700}.intro,.page-intro{padding-block:92px 72px}.intro h1{margin-bottom:10px;font-size:58px}.eyebrow{margin-bottom:10px;color:var(--accent-dark);font-size:13px;font-weight:700;text-transform:uppercase}.intro-subtitle{margin-bottom:22px;font-size:21px;font-weight:650}.intro-copy,.page-intro>p:not(.eyebrow),.detail-summary,.article-header>p:not(.eyebrow){max-width:720px;margin-bottom:0;color:var(--ink-muted);font-size:17px}.intro-links{display:flex;flex-wrap:wrap;gap:12px 22px;margin-top:30px}.intro-links a,.text-link{font-weight:700}.content-band{padding-block:56px;border-top:1px solid var(--line)}.muted-band{background:var(--surface-muted)}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:24px;margin-bottom:28px}.section-heading h2,.section-heading .eyebrow{margin-bottom:0}.section-heading>div{display:grid;gap:6px}.section-heading>a{flex:none;font-weight:700}.compact-heading{align-items:center;margin-bottom:20px}.compact-heading span{color:var(--ink-muted);font-size:14px}.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.project-card{display:grid;grid-template-rows:auto 1fr;min-width:0;overflow:hidden;border:1px solid var(--line);border-radius:6px;background:var(--surface)}.project-card-body{display:flex;min-width:0;flex-direction:column;padding:22px}.project-card h3,.project-card h2{margin-bottom:12px}.project-card h3 a,.project-card h2 a{color:var(--ink);text-decoration:none}.project-card h3 a:hover,.project-card h2 a:hover{color:var(--accent-dark);text-decoration:underline}.project-card p,.post-card p{margin-bottom:18px;color:var(--ink-muted)}.cover-placeholder{display:grid;min-height:246px;align-content:center;justify-items:center;gap:8px;padding:24px;border:1px dashed #9da8a1;background:#e4e9e5;color:var(--ink-muted);text-align:center}.cover-placeholder.compact{min-height:170px;border-width:0 0 1px}.cover-placeholder span{color:var(--accent-dark);font-size:13px;font-weight:700}.cover-placeholder strong{max-width:22ch;font-size:16px}.card-meta,.detail-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-bottom:12px;color:var(--ink-muted);font-size:13px}.status{display:inline-flex;align-items:center;min-height:22px;padding:1px 7px;border:1px solid currentColor;border-radius:4px;color:var(--accent-dark);font-size:12px;font-weight:700}.status[data-status=planned],.status[data-status=draft]{color:var(--warm)}.status[data-status=completed],.status[data-status=released]{color:#3e6c39}.tag-list{display:flex;flex-wrap:wrap;gap:7px;padding:0;margin:auto 0 0;list-style:none}.tag-list li{padding:2px 8px;border:1px solid var(--line);border-radius:4px;color:var(--ink-muted);font-size:12px;line-height:1.5}.post-list{display:grid;gap:0}.post-card{display:grid;grid-template-columns:minmax(0,1fr);padding:25px 0;border-bottom:1px solid var(--line)}.post-card:first-child{border-top:1px solid var(--line)}.post-card h3{margin-bottom:10px}.post-card h3 a{color:var(--ink);text-decoration:none}.post-card h3 a:hover{color:var(--accent-dark);text-decoration:underline}.category-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:0;margin:32px 0 0;list-style:none}.category-list li{display:flex;min-width:0;justify-content:space-between;gap:8px;padding:10px 0;border-top:1px solid var(--line);color:var(--ink-muted);font-size:14px}.category-list strong{color:var(--accent-dark)}.project-detail,.article{padding-block:72px 88px}.detail-header{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(280px,.6fr);gap:48px;align-items:start;padding-bottom:42px;border-bottom:1px solid var(--line)}.detail-header .cover-placeholder{aspect-ratio:4 / 3;min-height:0}.detail-layout{display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:52px;padding-top:42px}.detail-aside{display:grid;align-content:start;gap:28px}.detail-aside section{padding-top:16px;border-top:2px solid var(--ink)}.detail-aside h2{margin-bottom:14px;font-size:15px}.detail-aside p{margin:0;color:var(--ink-muted);font-size:14px}.link-list{display:grid;gap:8px;padding-left:18px;margin:0}.prose{min-width:0;color:#303833;font-size:17px}.prose>:last-child{margin-bottom:0}.prose h2{margin-top:44px;margin-bottom:16px;font-size:26px}.prose h3{margin-top:32px;margin-bottom:12px}.prose p,.prose ul,.prose ol{margin-bottom:20px}.prose li+li{margin-top:7px}.prose pre{overflow-x:auto;padding:18px;border:1px solid var(--line);border-radius:6px;background:var(--code);font-size:14px;line-height:1.65}.prose :not(pre)>code{padding:1px 4px;border-radius:3px;background:var(--code);font-size:.88em}.article{max-width:820px}.article-header{padding-bottom:34px;border-bottom:1px solid var(--line)}.article-header h1{max-width:760px}.article-header .detail-meta{margin-top:24px;margin-bottom:0}.article-header .tag-list{margin:0}.article-prose{margin-top:42px}.contact-list{display:grid;gap:0}.contact-list>div{display:grid;grid-template-columns:180px minmax(0,1fr);gap:24px;padding:24px 0;border-top:1px solid var(--line)}.contact-list>div:last-child{border-bottom:1px solid var(--line)}.contact-list h2,.contact-list p{margin:0}.contact-list h2{font-size:17px}.contact-list p{color:var(--ink-muted)}.not-found{min-height:55vh}.site-footer{padding-block:28px;border-top:1px solid var(--line);color:var(--ink-muted);background:var(--surface);font-size:13px}.footer-inner{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 24px}.footer-inner p{margin:0}@media(max-width:760px){.shell,.narrow{width:min(100% - 32px,var(--shell))}h1,.intro h1{font-size:38px}h2{font-size:25px}.desktop-nav{display:none}.mobile-nav{display:block}.intro,.page-intro{padding-block:64px 50px}.intro-subtitle{font-size:18px}.content-band{padding-block:42px}.section-heading{align-items:start;flex-direction:column;gap:12px}.project-grid,.detail-header,.detail-layout{grid-template-columns:1fr}.detail-header{gap:28px}.detail-layout{gap:34px;padding-top:32px}.detail-aside{grid-row:1;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.project-detail,.article{padding-block:52px 64px}.category-list{grid-template-columns:repeat(2,minmax(0,1fr))}.contact-list>div{grid-template-columns:1fr;gap:4px}.prose{font-size:16px}}@media(max-width:480px){.detail-aside,.category-list{grid-template-columns:1fr}.project-card-body{padding:18px}.cover-placeholder.compact{min-height:140px}}
