:root{--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;--s8:72px;--bg:#0a0e13;--surface:#11171f;--border:#222e3b;--text:#e6edf3;--muted:#9aa8b6;--accent:#2dd4bf;--accent-ink:#04201c;--motif:.2;--font:system-ui, -apple-system, "Segoe UI", Roboto, "PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif;--mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--radius:8px;--photo-radius:14px}:root[data-theme=light]{--bg:#fbfbf9;--surface:#fff;--border:#dfe3e6;--text:#12181f;--muted:#4d5a67;--accent:#0f766e;--accent-ink:#fff;--motif:.11}*{box-sizing:border-box}html{color-scheme:light dark;-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font:16px/1.65 var(--font);overflow-wrap:break-word;margin:0}img,svg{max-width:100%}a{color:var(--accent);text-underline-offset:3px}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}h1,h2,h3{margin:0;line-height:1.25}p{margin:0 0 var(--s4)}.muted{color:var(--muted)}.mono{font-family:var(--mono)}.icon{flex:none}.skip{position:absolute;top:0;left:-999px}.skip:focus{left:var(--s2);top:var(--s2);background:var(--surface);color:var(--text);padding:var(--s2) var(--s3);z-index:20;border-radius:var(--radius)}.wrap{width:100%;max-width:1200px;padding:0 var(--s5);margin:0 auto}.narrow{max-width:860px}.site-header{border-bottom:1px solid var(--border);background:color-mix(in srgb, var(--bg) 92%, transparent);backdrop-filter:blur(8px);z-index:10;position:sticky;top:0}.bar{align-items:center;gap:var(--s5);min-height:60px;display:flex}.logo{font-family:var(--mono);color:var(--text);font-size:1.05rem;font-weight:700;text-decoration:none}.nav-panel{align-items:center;gap:var(--s5);flex:1;display:flex}nav{gap:var(--s5);flex:1;display:flex}nav a{color:var(--muted);padding:var(--s2) 0;border-bottom:2px solid #0000;text-decoration:none}nav a:hover{color:var(--text)}nav a[aria-current]{color:var(--text);border-bottom-color:var(--accent)}.tools{align-items:center;gap:var(--s3);display:flex}.lang{display:flex}.lang a{color:var(--muted);padding:var(--s2);text-align:center;min-width:36px;font-size:14px;text-decoration:none}.lang a:hover{color:var(--text)}.lang a[aria-current]{color:var(--accent);font-weight:600}.icon-btn{border:1px solid var(--border);color:var(--text);border-radius:var(--radius);cursor:pointer;background:0 0;place-items:center;width:40px;height:40px;display:inline-grid}.icon-btn:hover{border-color:var(--accent)}.menu-btn{margin-left:auto;display:none}.m-close{display:none}:root[data-menu] .m-close{display:inline}:root[data-menu] .m-open{display:none}.hero{padding:var(--s8) 0 var(--s7);overflow-x:clip}.hero-grid{gap:var(--s6) var(--s7);grid-template-columns:220px minmax(0,1fr);align-items:start;display:grid;position:relative}.photo{aspect-ratio:1;object-fit:cover;object-position:50% 14%;border-radius:var(--photo-radius);border:1px solid var(--border);background:var(--surface);width:220px;height:220px}.motif{width:auto;height:104%;max-height:400px;opacity:var(--motif);pointer-events:none;z-index:0;position:absolute;top:50%;right:0;transform:translateY(-50%)}.motif line{stroke:var(--accent);stroke-width:1.6px;stroke-linecap:round}.motif circle{fill:var(--accent);animation:9s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.4}}.photo,.hero-text{z-index:1;position:relative}h1{letter-spacing:-.02em;font-size:clamp(1.9rem,4.6vw,2.9rem)}.headline{max-width:56ch;font-family:var(--mono);color:var(--accent);margin:var(--s3) 0 var(--s4);font-size:1rem}.intro{max-width:60ch;color:var(--muted);margin-bottom:var(--s5)}.actions{gap:var(--s3);margin-bottom:var(--s5);flex-wrap:wrap;display:flex}.btn{justify-content:center;align-items:center;gap:var(--s2);border:1px solid var(--border);min-height:44px;color:var(--text);padding:0 var(--s5);border-radius:var(--radius);font:inherit;cursor:pointer;background:0 0;font-weight:500;text-decoration:none;display:inline-flex}.btn:hover{border-color:var(--accent);text-decoration:none}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.btn.small{min-height:36px;padding:0 var(--s3);font-size:14px}.social{gap:var(--s5);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.social a{align-items:center;gap:var(--s2);color:var(--muted);min-height:32px;text-decoration:none;display:inline-flex}.social a:hover{color:var(--accent)}.block{padding-top:var(--s7);padding-bottom:var(--s5)}.block-head{justify-content:space-between;align-items:baseline;gap:var(--s4);margin-bottom:var(--s5);flex-wrap:wrap;display:flex}.block-head a,.card-links a,.row-meta a,.lead a{align-items:center;gap:var(--s1);display:inline-flex}h2{margin-bottom:var(--s5);font-size:1.45rem}.block-head h2{margin:0}.page{padding-top:var(--s7);padding-bottom:var(--s7)}.page h1{margin-bottom:var(--s3)}.lead{color:var(--muted);max-width:62ch;margin-bottom:var(--s6);font-size:1.08rem}.mt{margin-top:var(--s7)}.crumb{margin-bottom:var(--s5)}.cards{gap:var(--s5);grid-template-columns:1fr;display:grid}@media (width>=700px){.cards{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=1180px){.cards{gap:var(--s4);grid-template-columns:repeat(4,minmax(0,1fr))}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--s5);gap:var(--s4);flex-direction:column;display:flex}@supports (grid-template-rows:subgrid){.card{grid-template-rows:subgrid;row-gap:var(--s4);grid-row:span 5;display:grid}.cards{row-gap:var(--s5)}}.card h3{font-size:1.15rem}.card p{margin:0}.card-title{color:var(--text);text-decoration:none}.card-title:hover{color:var(--accent)}.summary{font-size:.95rem}.metrics{gap:var(--s4);grid-template-columns:repeat(2,minmax(0,1fr));align-self:start;margin:0;padding:0;list-style:none;display:grid}.metrics li{gap:var(--s1);flex-direction:column;display:flex}.metrics strong{font-family:var(--mono);white-space:nowrap;color:var(--accent);font-size:1.3rem;font-weight:700;line-height:1.15}.metrics span{color:var(--muted);font-size:12.5px;line-height:1.35}.metrics.inline{max-width:460px;margin-bottom:var(--s4)}.tags{margin:0 0 var(--s4);gap:var(--s2);flex-wrap:wrap;align-content:flex-start;padding:0;list-style:none;display:flex}.card .tags{margin:0}.tags li{font-family:var(--mono);border:1px solid var(--border);padding:2px var(--s3);color:var(--muted);border-radius:999px;font-size:12.5px}.card-links{gap:var(--s4);flex-wrap:wrap;align-self:end;align-items:center;font-size:14.5px;display:flex}.skills{gap:var(--s6) var(--s5);grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));display:grid}.skills h3{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin-bottom:var(--s3);font-size:.85rem;font-weight:600}.skills .tags{margin:0}.rows{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);margin:0;padding:0;list-style:none}.row{justify-content:space-between;gap:var(--s5);padding:var(--s5);display:flex}.row+.row{border-top:1px solid var(--border)}.row h3{margin-bottom:var(--s1);font-size:1.05rem}.row p{margin:0}.row-meta{align-items:flex-end;gap:var(--s2);text-align:right;flex-direction:column;max-width:42%;font-size:14px;display:flex}.actions-row{margin:var(--s4) 0 var(--s6)}.prose{max-width:70ch}.prose h2{margin:var(--s7) 0 var(--s3);font-size:1.3rem}.prose ul{padding-left:1.2em}.prose li{margin-bottom:var(--s2)}.prose img{border-radius:var(--radius);height:auto;margin:var(--s5) auto 0;display:block}.prose p:has(>img){margin:0}.prose p:has(>img)+p>em:only-child{text-align:center;color:var(--muted);margin-top:var(--s2);font-size:14px;font-style:normal;display:block}.prose code{font-family:var(--mono);background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:1px 5px;font-size:.9em}.prose pre{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--s4);overflow-x:auto}.prose pre code{background:0 0;border:0;padding:0}.prose table{border-collapse:collapse;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--border);padding:var(--s2) var(--s3)}.cover{border-radius:var(--radius);width:100%;height:auto;margin:var(--s5) 0}.timeline{padding:0 0 0 var(--s5);border-left:1px solid var(--border);margin:0;list-style:none}.timeline>li{padding-bottom:var(--s7);position:relative}.timeline>li:before{content:"";left:calc(-1 * var(--s5) - 5px);background:var(--accent);border-radius:50%;width:9px;height:9px;position:absolute;top:7px}.timeline h2{margin:var(--s1) 0 var(--s3);font-size:1.25rem}.org{color:var(--muted);font-weight:400}.period{color:var(--muted);margin:0;font-size:13.5px}.plain{margin:0 0 var(--s4);padding-left:1.2em}.plain li{margin-bottom:var(--s2)}.sub{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin:var(--s5) 0 var(--s3);font-size:.85rem}.posts{gap:var(--s6);margin:0;padding:0;list-style:none;display:grid}.post-item{gap:var(--s4);grid-template-columns:1fr;display:grid}.post-item:has(.post-thumb){grid-template-columns:240px 1fr}.post-thumb{border-radius:var(--radius);width:100%;height:auto}.post-item h2{margin:var(--s1) 0 var(--s2);font-size:1.25rem}.post-item p{margin:0}.post-item h2 a{color:var(--text);text-decoration:none}.post-item h2 a:hover{color:var(--accent)}.contact-list{margin:0 0 var(--s6);gap:var(--s3);padding:0;list-style:none;display:grid}.contact-list li{align-items:center;gap:var(--s3);padding:var(--s4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap;display:flex}.contact-list a{overflow-wrap:anywhere;min-width:0}.contact-list .label{min-width:88px;color:var(--muted)}.qr{width:min(100%,280px);margin:0}.qr img{border-radius:var(--radius);border:1px solid var(--border);background:#fff;width:100%;height:auto}.qr figcaption{margin-top:var(--s2);text-align:center;font-size:14px}.nf+.nf{margin-top:var(--s6)}.site-footer{padding-top:var(--s6);padding-bottom:var(--s7);color:var(--muted);border-top:1px solid var(--border);margin-top:var(--s7);font-size:14px}@media (width<=1023px){.hero{padding:var(--s7) 0 var(--s6)}.hero-grid{gap:var(--s5) var(--s6);grid-template-columns:200px minmax(0,1fr)}.photo{width:200px;height:200px}.motif{display:none}.nav-panel,nav{gap:var(--s4)}}@media (width<=759px){.wrap{padding:0 var(--s4)}.bar{justify-content:space-between;min-height:56px}.js .menu-btn{display:inline-grid}.js .nav-panel{align-items:stretch;gap:var(--s4);padding:var(--s4);background:var(--bg);border-bottom:1px solid var(--border);flex-direction:column;display:none;position:absolute;top:100%;left:0;right:0}.js[data-menu] .nav-panel{display:flex}.nav-panel{padding:var(--s2) 0 var(--s3);flex-wrap:wrap;order:3;width:100%}.js .nav-panel{padding:var(--s4)}.bar{flex-wrap:wrap}.js .bar{flex-wrap:nowrap}nav{flex-direction:column;gap:0}nav a{padding:var(--s3) 0;border-bottom:1px solid var(--border)}.tools{justify-content:space-between}.hero{padding:var(--s6) 0 var(--s5)}.hero-grid{text-align:center;justify-items:center;gap:var(--s5);grid-template-columns:1fr}.photo{width:160px;height:160px}.motif{display:none}.intro{margin-inline:auto}.actions{flex-direction:column;align-self:stretch}.actions .btn{width:100%}.social{justify-content:center}.block{padding-top:var(--s6)}.row{flex-direction:column}.row-meta{text-align:left;align-items:flex-start;max-width:none}.post-item:has(.post-thumb){grid-template-columns:1fr}.card{padding:var(--s4)}.page{padding-top:var(--s6)}.contact-list .label{flex-basis:calc(100% - 40px);min-width:0}}@media (prefers-reduced-motion:reduce){.motif circle{animation:none}*{scroll-behavior:auto!important;transition:none!important}}
