:root{--bg:#ffffff;--bg-soft:#f6f7f9;--text:#1f2329;--text-soft:#5c6470;--accent:#00c089;--accent-dark:#00a176;--border:#e5e8ec;--code-bg:#f2f4f6;--max-w:980px}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,sans-serif;font-size:16px;line-height:1.75;overflow-x:hidden}a{color:var(--accent-dark);text-decoration:none}a:hover{text-decoration:underline}.container{max-width:var(--max-w);margin:0 auto;padding:0 20px}.site-header{border-bottom:1px solid var(--border);padding:18px 0;margin-bottom:32px}.site-header .container{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:8px}.site-title{font-size:22px;font-weight:700;color:var(--text);display:inline-flex;align-items:center;gap:10px}.site-avatar{width:34px;height:34px;border-radius:50%;object-fit:cover;display:block;border:1px solid var(--border)}.site-title:hover{text-decoration:none;color:var(--accent-dark)}.site-nav{display:flex;gap:18px;font-size:15px}.site-nav a{color:var(--text-soft)}.site-nav a:hover{color:var(--accent-dark);text-decoration:none}.post-list{list-style:none;margin:0;padding:0}.post-item{padding:20px 0;border-bottom:1px solid var(--border)}.post-item.has-cover{display:flex;gap:20px;align-items:flex-start}.post-item-main{flex:1 1 auto;min-width:0}.post-thumb{flex:0 0 auto;width:168px;height:112px;border-radius:8px;overflow:hidden;border:1px solid var(--border);background:var(--bg-soft)}.post-thumb img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .25s ease}.post-thumb:hover img{transform:scale(1.05)}.post-item h2{margin:0 0 6px;font-size:20px;line-height:1.4}.post-item h2 a{color:var(--text)}.post-item h2 a:hover{color:var(--accent-dark);text-decoration:none}.post-meta{font-size:13px;color:var(--text-soft);display:flex;gap:12px;flex-wrap:wrap}.post-excerpt{margin:8px 0 0;font-size:15px}.badge,.post-excerpt{color:var(--text-soft)}.badge{display:inline-block;background:var(--bg-soft);border:1px solid var(--border);border-radius:4px;padding:0 8px;font-size:12px}.badge:hover{color:var(--accent-dark);border-color:var(--accent);text-decoration:none}.pagination{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:8px;margin:40px 0;font-size:14px}.pagination a,.pagination span{display:inline-flex;align-items:center;justify-content:center;min-width:36px;height:36px;padding:0 10px;border:1px solid var(--border);border-radius:8px;color:var(--text-soft);background:var(--bg);transition:border-color .15s,color .15s,background .15s,transform .1s}.pagination a:hover{border-color:var(--accent);color:var(--accent-dark);background:rgba(0,192,137,.06);text-decoration:none}.pagination a:active{transform:scale(.96)}.pagination .current{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600;box-shadow:0 2px 6px rgba(0,192,137,.3)}.pagination .ellipsis{border:none;background:transparent;min-width:auto;padding:0 2px;color:var(--text-soft);letter-spacing:2px}.pagination .page-nav{padding:0 14px}.pagination .page-nav.disabled{opacity:.4;cursor:default;pointer-events:none}@media (max-width:560px){.pagination .ellipsis,.pagination a:not(.page-nav){display:none}.pagination .current{display:inline-flex}}.post-article h1{font-size:28px;line-height:1.35;margin:0 0 12px}.post-hero{margin:20px 0 4px;border-radius:10px;overflow:hidden;border:1px solid var(--border);background:var(--bg-soft)}.post-hero img{width:100%;max-height:420px;object-fit:cover;display:block}.post-content{margin-top:28px;counter-reset:section}.post-content img{max-width:100%;height:auto;border-radius:6px}.post-content h2{font-size:22px;margin:44px 0 14px;padding-bottom:10px;border-bottom:1px solid var(--border);counter-increment:section;display:flex;align-items:baseline;gap:12px}.post-content h2:before{content:counter(section,decimal-leading-zero);flex-shrink:0;transform:translateY(-2px);background:var(--accent);color:#fff;font-size:14px;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;line-height:1.5;padding:1px 8px;border-radius:6px}.post-content h3{font-size:18px;margin:30px 0 10px}.post-content blockquote{margin:16px 0;padding:4px 16px;border-left:3px solid var(--accent);background:var(--bg-soft);color:var(--text-soft)}.post-content code{background:var(--code-bg);border-radius:4px;padding:2px 6px;font-size:14px;font-family:SF Mono,Menlo,Consolas,monospace}.post-content pre{background:var(--code-bg);border-radius:8px;padding:16px;overflow-x:auto}.post-content pre code{background:none;padding:0}.post-content table{border-collapse:collapse;width:100%;margin:16px 0;font-size:15px}.post-content td,.post-content th{border:1px solid var(--border);padding:8px 12px;text-align:left}.post-content th{background:var(--bg-soft)}.archive-title{font-size:24px;margin:0 0 20px}.term-cloud{display:flex;flex-wrap:wrap;gap:10px;margin:20px 0 40px}.term-cloud .badge{font-size:14px;padding:4px 12px}.search-input{width:100%;padding:12px 16px;font-size:16px;border:1px solid var(--border);border-radius:8px;outline:none;margin-bottom:8px}.search-input:focus{border-color:var(--accent)}.search-hint{font-size:13px;color:var(--text-soft);margin-bottom:24px}.search-input-wrap{position:relative}.search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--text-soft);pointer-events:none}.search-box .search-input-wrap .search-input{padding-left:34px}.archive-head{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:20px}.archive-head .archive-title{margin:0}.section-head-right{display:flex;align-items:center;gap:16px}.archive-search{position:relative;width:220px}.archive-search .search-input{margin-bottom:0;padding:7px 12px;font-size:14px;border-radius:999px}.archive-search .search-results{position:absolute;right:0;top:calc(100% + 8px);width:min(560px,calc(100vw - 40px));max-height:60vh;overflow-y:auto;background:var(--bg);border:1px solid var(--border);border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.1);padding:4px 20px 8px;z-index:60}.archive-search .search-results .search-hint{margin:8px 0 0}.archive-search .search-results .post-item{padding:12px 0}.archive-search .search-results .post-item h2{font-size:16px}.archive-search .search-results .post-excerpt{font-size:14px}@media (max-width:640px){.archive-search{width:100%}.archive-search .search-results{left:0;right:auto;width:100%}}mark{background:#ffe9a8;padding:0 1px;border-radius:2px}.site-footer{border-top:1px solid var(--border);margin-top:48px;padding:24px 0 80px;font-size:13px;color:var(--text-soft);text-align:center}.music-player{position:fixed;right:20px;bottom:20px;z-index:1000;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 6px 24px rgba(0,0,0,.12);width:280px;overflow:hidden;font-size:14px}.music-player.collapsed{width:auto}.mp-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background:var(--bg-soft)}.mp-title{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}.mp-toggle{color:var(--text-soft);font-size:12px;padding-left:10px}.mp-body{padding:10px 14px 14px}.mp-controls{display:flex;align-items:center;justify-content:center;gap:18px;margin:6px 0 10px}.mp-btn{background:none;border:none;cursor:pointer;font-size:18px;color:var(--text);padding:4px}.mp-btn.play{font-size:26px;color:var(--accent-dark)}.mp-btn:hover{color:var(--accent)}.mp-progress{width:100%;height:4px;background:var(--border);border-radius:2px;cursor:pointer}.mp-progress-bar{height:100%;background:var(--accent);border-radius:2px;width:0}.mp-time{display:flex;justify-content:space-between;font-size:11px;color:var(--text-soft);margin-top:4px}@media (max-width:600px){.music-player{width:240px;right:12px;bottom:12px}.post-article h1{font-size:24px}.post-thumb{width:108px;height:76px}.post-item.has-cover{gap:12px}.post-hero img{max-height:240px}}.admin-wrap{max-width:860px;margin:0 auto}.admin-title{font-size:24px;margin:0 0 16px}.admin-card{background:#fff;border:1px solid var(--border);border-radius:10px;padding:20px;margin-bottom:16px}.admin-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.admin-input,.admin-textarea{width:100%;padding:9px 12px;font-size:14px;border:1px solid var(--border);border-radius:6px;outline:none;font-family:inherit;background:#fff;color:var(--text)}.admin-input:focus,.admin-textarea:focus{border-color:var(--accent)}.admin-textarea{font-family:SF Mono,Menlo,Consolas,monospace;font-size:13px;line-height:1.6;min-height:420px;resize:vertical;white-space:pre}.admin-label{font-size:13px;color:var(--text-soft);margin:10px 0 4px;display:block}.admin-btn{padding:9px 22px;border-radius:6px;font-size:14px;font-weight:600;border:1px solid var(--border);background:#fff;color:var(--text);cursor:pointer}.admin-btn:hover{border-color:var(--accent);color:var(--accent-dark)}.admin-btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.admin-btn.primary:hover{background:var(--accent-dark)}.admin-btn:disabled{opacity:.5;cursor:not-allowed}.admin-msg{font-size:13px;margin-top:8px}.admin-msg.error{color:#d33}.admin-msg.ok{color:var(--accent-dark)}.admin-list{list-style:none;margin:0;padding:0}.admin-list li{display:flex;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid var(--border);font-size:14px}.admin-list .a-cover{width:56px;height:38px;border-radius:4px;object-fit:cover;border:1px solid var(--border);background:var(--bg-soft);flex:0 0 auto}.admin-list .a-nocover{width:56px;height:38px;border-radius:4px;border:1px dashed var(--border);display:flex;align-items:center;justify-content:center;color:var(--text-soft);font-size:11px;flex:0 0 auto}.admin-list .a-title{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-list .a-date{color:var(--text-soft);font-size:12px;flex:0 0 auto}.admin-cover-preview{margin-top:8px;max-width:320px;border-radius:8px;border:1px solid var(--border);overflow:hidden}.admin-cover-preview img{width:100%;display:block}.hero{position:relative;text-align:center;margin-top:-32px;padding:72px 0 56px;overflow:hidden;width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}.hero-inner{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;gap:56px;max-width:var(--max-w);margin:0 auto;padding:0 20px;text-align:left}.hero-text{flex:1 1 auto;min-width:0}.hero-text .hero-intro{margin-left:0;margin-right:0}.hero-text .hero-cta{justify-content:flex-start}.hero-portrait{flex:0 0 auto}.hero-portrait img{width:300px;height:auto;display:block;filter:drop-shadow(0 16px 32px rgba(0,0,0,.18))}.hero-blob{position:absolute;border-radius:50%;filter:blur(70px);opacity:.35;pointer-events:none;animation:blob-float 12s ease-in-out infinite}.hero-blob-1{width:260px;height:260px;background:#00c089;top:-60px;left:8%}.hero-blob-2{width:200px;height:200px;background:#7c5cff;top:40px;right:10%;animation-delay:-4s}.hero-blob-3{width:160px;height:160px;background:#ff5c8a;bottom:-40px;left:45%;animation-delay:-8s}@keyframes blob-float{0%,to{transform:translate(0) scale(1)}33%{transform:translate(24px,-18px) scale(1.08)}66%{transform:translate(-18px,14px) scale(.94)}}.hero-greeting{color:var(--text-soft);font-size:16px;margin:0 0 4px;letter-spacing:2px}.hero-name{font-size:52px;font-weight:800;margin:0 0 12px;letter-spacing:2px}.hero-roles{font-size:26px;font-weight:600;height:40px;color:var(--accent-dark)}.typewriter-cursor{display:inline-block;width:3px;height:1.1em;background:var(--accent);margin-left:3px;vertical-align:text-bottom;animation:cursor-blink .9s step-end infinite}@keyframes cursor-blink{0%,to{opacity:1}50%{opacity:0}}.hero-intro{max-width:560px;margin:20px auto 28px;color:var(--text-soft);font-size:16px}.hero-cta{display:flex;justify-content:center;gap:14px}.btn{padding:11px 26px;border-radius:8px;font-size:15px;font-weight:600;transition:transform .15s ease,box-shadow .15s ease}.btn:hover{text-decoration:none;transform:translateY(-2px)}.btn-primary{background:var(--accent);color:#fff;box-shadow:0 4px 14px rgba(0,192,137,.35)}.btn-primary:hover{box-shadow:0 8px 20px rgba(0,192,137,.45)}.btn-ghost{border:1px solid var(--border);color:var(--text);background:#fff}.btn-ghost:hover{border-color:var(--accent);color:var(--accent-dark)}.reveal{opacity:0;transform:translateY(24px);transition:opacity .6s ease,transform .6s ease}.reveal-visible{opacity:1;transform:translateY(0)}.section-title{font-size:24px;font-weight:700;margin:0 0 20px}.home-posts{margin-top:56px}.section-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 16px;margin-bottom:4px}.section-head .section-title{margin-bottom:0}.section-more{font-size:14px}@media (max-width:800px){.hero-inner{flex-direction:column;gap:28px;text-align:center}.hero-text .hero-intro{margin-left:auto;margin-right:auto}.hero-text .hero-cta{justify-content:center}.hero-portrait img{width:200px}}@media (max-width:600px){.hero{padding:48px 0 40px}.hero-name{font-size:38px}.hero-roles{font-size:20px;height:32px}.home-posts{margin-top:36px}}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}
/*!
  Theme: GitHub
  Description: Light theme as seen on github.com
  Author: github.com
  Maintainer: @Hirse
  Updated: 2021-05-15

  Outdated base version: https://github.com/primer/github-syntax-light
  Current colors taken from GitHub's CSS
*/.hljs{color:#24292e;background:#ffffff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#005cc5}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-code,.hljs-comment,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}