/* =====================================================================
   NightOwl · 赛博朋克博客主题
   深色霓虹 + 故障美学 + CRT 扫描线
   ===================================================================== */
:root{
  --void:#05080f;
  --void-2:#070b16;
  --panel:#0b1322;
  --panel-2:#0e1729;
  --cyan:#00e5ff;
  --cyan-dim:#0a8a9c;
  --magenta:#ff2d78;
  --magenta-dim:#a01d4e;
  --violet:#b14eff;
  --amber:#ffb648;
  --text:#d6e6ef;
  --muted:#5f7d92;
  --line:rgba(0,229,255,.10);
  --line-strong:rgba(0,229,255,.22);
  --font-display:"Chakra Petch",sans-serif;
  --font-cjk:"Noto Sans SC","PingFang SC","Microsoft YaHei",sans-serif;
  --font-mono:"Share Tech Mono","Cascadia Code","Consolas",monospace;
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  background:var(--void);
  color:var(--text);
  font-family:var(--font-cjk);
  line-height:1.7;
  min-height:100vh;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--cyan)}

/* ---------- 背景：透视网格 + 辉光 + 扫描线 ---------- */
.bg-grid{
  position:fixed; inset:0; z-index:-2; pointer-events:none;
  background-color:var(--void);
  background-image:
    linear-gradient(var(--line) 1px, transparent 1px),
    linear-gradient(90deg, var(--line) 1px, transparent 1px);
  background-size:46px 46px;
  -webkit-mask-image:radial-gradient(ellipse 90% 70% at 50% 0%, #000 35%, transparent 80%);
          mask-image:radial-gradient(ellipse 90% 70% at 50% 0%, #000 35%, transparent 80%);
}
.bg-glow{
  position:fixed; inset:0; z-index:-3; pointer-events:none;
  background:
    radial-gradient(60% 40% at 12% 0%, rgba(0,229,255,.12), transparent 70%),
    radial-gradient(55% 45% at 92% 8%, rgba(255,45,120,.12), transparent 72%),
    radial-gradient(80% 60% at 50% 120%, rgba(177,78,255,.10), transparent 70%);
}
.scanlines{
  position:fixed; inset:0; z-index:50; pointer-events:none; opacity:.55;
  background:repeating-linear-gradient(to bottom, transparent 0 2px, rgba(0,0,0,.28) 2px 3px);
  mix-blend-mode:multiply;
}
.scanlines::after{
  content:""; position:absolute; left:0; right:0; height:140px;
  background:linear-gradient(to bottom, transparent, rgba(0,229,255,.05), transparent);
  animation:sweep 7s linear infinite;
}
@keyframes sweep{ 0%{top:-140px} 100%{top:100%} }

/* ---------- 容器 ---------- */
.wrap{max-width:1180px; margin:0 auto; padding:0 40px}

/* ---------- 导航 ---------- */
nav{
  position:sticky; top:0; z-index:40;
  backdrop-filter:blur(10px);
  background:linear-gradient(to bottom, rgba(5,8,15,.92), rgba(5,8,15,.62));
  border-bottom:1px solid var(--line-strong);
}
.nav-inner{
  max-width:1180px; margin:0 auto; padding:14px 40px;
  display:flex; align-items:center; justify-content:space-between; gap:24px;
}
.brand{display:flex; align-items:center; gap:12px; text-decoration:none; color:var(--text)}
.brand .mark{
  width:34px; height:34px; flex:none; position:relative;
  border:1px solid var(--cyan); display:grid; place-items:center;
  box-shadow:0 0 12px rgba(0,229,255,.35), inset 0 0 8px rgba(0,229,255,.15);
}
.brand .mark svg{width:20px; height:20px; stroke:var(--cyan)}
.brand .mark::before,.brand .mark::after{
  content:""; position:absolute; width:7px; height:7px; border:1px solid var(--magenta);
}
.brand .mark::before{top:-1px; left:-1px; border-right:0; border-bottom:0}
.brand .mark::after{bottom:-1px; right:-1px; border-left:0; border-top:0}
.brand b{font-family:var(--font-display); font-weight:700; font-size:18px; letter-spacing:1px}
.brand small{font-family:var(--font-mono); color:var(--muted); font-size:11px; letter-spacing:1px; display:block; margin-top:-3px}

.nav-links{display:flex; align-items:center; gap:6px}
.nav-links a{
  position:relative; text-decoration:none; color:var(--text);
  font-family:var(--font-mono); font-size:13px; letter-spacing:1px;
  padding:8px 16px; text-transform:uppercase; transition:color .18s;
}
.nav-links a .zh{font-family:var(--font-cjk); letter-spacing:0; margin-left:6px; font-size:13px; color:var(--muted); transition:color .18s}
.nav-links a::after{
  content:""; position:absolute; left:16px; right:16px; bottom:4px; height:1px;
  background:var(--cyan); transform:scaleX(0); transform-origin:left; transition:transform .22s;
}
.nav-links a:hover{color:var(--cyan)}
.nav-links a:hover .zh{color:var(--cyan)}
.nav-links a:hover::after,.nav-links a.active::after{transform:scaleX(1)}
.nav-links a.active{color:var(--cyan)}

/* 搜索框：默认收起，聚焦展开 */
.nav-search-form{display:flex; align-items:center; gap:0}
.nav-search-input{
  width:0; padding:0; border:1px solid transparent; background:rgba(11,19,34,.6);
  color:var(--text); font-family:var(--font-mono); font-size:12px; letter-spacing:1px;
  height:40px; outline:none; transition:width .25s, padding .25s, border-color .25s; opacity:0;
}
.nav-search-input:focus,.nav-search-form:hover .nav-search-input{
  width:170px; padding:0 12px; border-color:var(--line-strong); opacity:1;
}
.nav-search-input::placeholder{color:var(--muted)}
.nav-search{
  width:40px; height:40px; flex:none; display:grid; place-items:center;
  border:1px solid var(--line-strong); background:transparent; cursor:pointer;
  color:var(--text); transition:.2s;
}
.nav-search svg{width:18px; height:18px; stroke:currentColor}
.nav-search:hover{color:var(--magenta); border-color:var(--magenta); box-shadow:0 0 14px rgba(255,45,120,.4)}
.nav-search:focus-visible{outline:2px solid var(--cyan); outline-offset:2px}

/* ---------- HERO ---------- */
header.hero{position:relative; padding:84px 0 64px}
.hero-tag{
  font-family:var(--font-mono); font-size:12px; letter-spacing:3px; color:var(--cyan);
  text-transform:uppercase; display:flex; align-items:center; gap:10px; margin-bottom:22px;
}
.hero-tag .dot{width:8px; height:8px; background:var(--magenta); border-radius:50%;
  box-shadow:0 0 10px var(--magenta); animation:blink 1.4s steps(2) infinite}
@keyframes blink{50%{opacity:.25}}

.glitch{
  position:relative; font-family:var(--font-display); font-weight:700;
  font-size:clamp(64px,11vw,150px); line-height:.92; letter-spacing:2px;
  color:var(--text); width:max-content; max-width:100%;
}
.glitch::before,.glitch::after{content:attr(data-text); position:absolute; inset:0; overflow:hidden}
.glitch::before{color:var(--cyan); left:2px; text-shadow:-2px 0 var(--cyan);
  clip-path:inset(0 0 55% 0); animation:gl-a 3.2s infinite linear alternate-reverse}
.glitch::after{color:var(--magenta); left:-2px; text-shadow:2px 0 var(--magenta);
  clip-path:inset(60% 0 0 0); animation:gl-b 2.6s infinite linear alternate-reverse}
@keyframes gl-a{0%,72%,100%{transform:translate(0,0)} 74%{transform:translate(4px,-2px)} 77%{transform:translate(-3px,1px)} 80%{transform:translate(2px,0)}}
@keyframes gl-b{0%,82%,100%{transform:translate(0,0)} 84%{transform:translate(-4px,2px)} 88%{transform:translate(3px,-1px)} 92%{transform:translate(-2px,0)}}

.hero-sub{font-family:var(--font-mono); color:var(--muted); font-size:15px; letter-spacing:2px;
  margin-top:18px; display:flex; align-items:center; gap:14px; flex-wrap:wrap}
.hero-sub .pipe{color:var(--cyan-dim)}
.hero-sub .handle{color:var(--cyan)}

.motto{margin-top:30px; max-width:640px; position:relative; padding-left:22px; border-left:2px solid var(--magenta)}
.motto p{font-size:22px; font-weight:300; color:#eaf4fa; line-height:1.5; letter-spacing:.5px}
.motto .en{font-family:var(--font-mono); font-size:12px; color:var(--muted); letter-spacing:1.5px; margin-top:8px; text-transform:uppercase}

.status{margin-top:40px; display:inline-flex; align-items:center; gap:20px; flex-wrap:wrap;
  font-family:var(--font-mono); font-size:12px; letter-spacing:1px; color:var(--muted);
  border:1px solid var(--line); padding:10px 18px; background:rgba(11,19,34,.5)}
.status b{color:var(--text); font-weight:400}
.status .ok{color:#3ff0a8}
.status .sep{width:1px; height:14px; background:var(--line-strong)}
.cursor{display:inline-block; width:8px; height:15px; background:var(--cyan); margin-left:2px;
  vertical-align:-2px; animation:blink2 1s steps(2) infinite}
@keyframes blink2{50%{opacity:0}}

.bracket{position:absolute; width:26px; height:26px; pointer-events:none}
.bracket.tl{top:60px; left:-14px; border-left:2px solid var(--cyan); border-top:2px solid var(--cyan)}
.bracket.br{bottom:34px; right:-8px; border-right:2px solid var(--magenta); border-bottom:2px solid var(--magenta)}

/* ---------- FEED ---------- */
.feed{padding:10px 0 90px}
.feed-head{display:flex; align-items:baseline; justify-content:space-between; gap:16px;
  margin-bottom:30px; padding-bottom:14px; border-bottom:1px solid var(--line-strong)}
.feed-head h2{font-family:var(--font-display); font-weight:600; font-size:24px; letter-spacing:1px; color:var(--text)}
.feed-head h2 .slash{color:var(--magenta)}
.feed-head .meta{font-family:var(--font-mono); font-size:12px; color:var(--muted); letter-spacing:1px}

.post{
  --accent:var(--cyan);
  position:relative; display:grid; grid-template-columns:160px 1fr auto; gap:28px;
  align-items:start; padding:26px 26px 26px 28px; margin-bottom:16px;
  background:linear-gradient(90deg, rgba(0,229,255,.04), rgba(11,19,34,.55) 30%);
  border:1px solid var(--line); border-left:3px solid var(--accent);
  text-decoration:none; color:inherit;
  transition:transform .22s ease, border-color .22s, background .22s, box-shadow .22s;
  opacity:0; transform:translateY(18px);
}
.post.in{opacity:1; transform:translateY(0)}
.post:hover{
  transform:translateX(6px);
  border-color:var(--line-strong); border-left-color:var(--accent);
  box-shadow:-6px 0 0 -3px var(--accent), 0 0 26px rgba(0,229,255,.07);
  background:linear-gradient(90deg, rgba(0,229,255,.07), rgba(14,23,41,.7) 35%);
}
.post:focus-visible{outline:2px solid var(--accent); outline-offset:3px}
.post::after{content:""; position:absolute; top:8px; right:8px; width:14px; height:14px;
  border-top:1px solid var(--accent); border-right:1px solid var(--accent); opacity:0; transition:opacity .22s}
.post:hover::after{opacity:1}

.post-meta{display:flex; flex-direction:column; gap:10px}
.cat{font-family:var(--font-mono); font-size:11px; letter-spacing:1.5px; text-transform:uppercase;
  color:var(--accent); border:1px solid var(--accent); padding:4px 10px; width:max-content;
  background:color-mix(in srgb, var(--accent) 12%, transparent)}
.date{font-family:var(--font-mono); font-size:13px; color:var(--muted); letter-spacing:.5px; display:flex; align-items:center; gap:7px}
.date svg{width:13px; height:13px; stroke:var(--muted); flex:none}

.post-body h3{font-family:var(--font-cjk); font-weight:700; font-size:21px; line-height:1.4; color:#eef6fb;
  margin-bottom:9px; letter-spacing:.3px; transition:color .2s}
.post:hover .post-body h3{color:#fff}
.post-body p{font-size:14.5px; color:#93aebf; font-weight:300; line-height:1.7; max-width:62ch}
.post-foot{display:flex; align-items:center; gap:16px; margin-top:14px}
.read-time{font-family:var(--font-mono); font-size:11px; color:var(--muted); letter-spacing:1px}

.arrow{align-self:center; width:42px; height:42px; flex:none; display:grid; place-items:center;
  border:1px solid var(--line); color:var(--accent); transition:.22s}
.arrow svg{width:18px; height:18px; stroke:currentColor; transition:transform .22s}
.post:hover .arrow{border-color:var(--accent); background:color-mix(in srgb, var(--accent) 14%, transparent)}
.post:hover .arrow svg{transform:translateX(3px)}

/* 分类配色变体 */
.post.neuro{--accent:var(--cyan)}
.post.darknet{--accent:var(--magenta)}
.post.essay{--accent:var(--violet)}
.post.hardware{--accent:var(--amber)}

.feed-more{display:flex; justify-content:center; margin-top:36px}
.feed-more a,.feed-more-link{
  font-family:var(--font-mono); font-size:13px; letter-spacing:2px; text-transform:uppercase;
  color:var(--cyan); text-decoration:none; border:1px solid var(--cyan); padding:13px 34px;
  transition:.2s; display:inline-flex; align-items:center; gap:12px;
}
.feed-more a:hover,.feed-more-link:hover{background:rgba(0,229,255,.1); box-shadow:0 0 22px rgba(0,229,255,.3)}

.no-posts{font-family:var(--font-mono); color:var(--muted); letter-spacing:2px; text-align:center; padding:60px 0}

/* ---------- 文章 / 页面详情 ---------- */
.entry{padding:60px 0 40px; max-width:820px; margin:0 auto}
.entry-header{--accent:var(--cyan); margin-bottom:38px; padding-bottom:26px; border-bottom:1px solid var(--line-strong)}
.entry-header.neuro{--accent:var(--cyan)}
.entry-header.darknet{--accent:var(--magenta)}
.entry-header.essay{--accent:var(--violet)}
.entry-header.hardware{--accent:var(--amber)}
.entry-header .cat{display:inline-block; margin-bottom:18px}
.entry-title{font-family:var(--font-cjk); font-weight:700; font-size:clamp(28px,5vw,44px); line-height:1.25;
  color:#eef6fb; letter-spacing:.3px; position:relative; padding-left:18px}
.entry-title::before{content:""; position:absolute; left:0; top:6px; bottom:6px; width:3px; background:var(--accent); box-shadow:0 0 12px var(--accent)}
.entry-meta{list-style:none; display:flex; flex-wrap:wrap; gap:20px; margin-top:20px;
  font-family:var(--font-mono); font-size:12px; letter-spacing:1px; color:var(--muted)}
.entry-meta li{display:flex; align-items:center; gap:7px}
.entry-meta svg{width:13px; height:13px; stroke:var(--muted)}
.entry-meta a{color:var(--muted); text-decoration:none}
.entry-meta a:hover{color:var(--cyan)}

/* ---------- 正文排版 .fmt（含 EditorMD 渲染内容深色适配） ---------- */
.fmt{font-size:16px; line-height:1.85; color:var(--text); word-wrap:break-word}
.fmt .md_content{background:transparent!important; min-height:0!important}
.fmt .markdown-body{background:transparent!important; color:var(--text)!important; font-family:var(--font-cjk)!important; font-size:16px!important}
.fmt h1,.fmt h2,.fmt h3,.fmt h4,.fmt h5,.fmt h6{
  font-family:var(--font-cjk); color:#eef6fb; line-height:1.4; margin:1.6em 0 .7em; letter-spacing:.3px; border:0!important}
.fmt h1{font-size:1.7em} .fmt h2{font-size:1.45em; padding-bottom:.3em; border-bottom:1px solid var(--line)!important}
.fmt h3{font-size:1.25em; color:var(--cyan)} .fmt h4{font-size:1.1em}
.fmt p{margin:1em 0; color:#c2d6e2}
.fmt a{color:var(--cyan); text-decoration:none; border-bottom:1px solid var(--cyan-dim); transition:.18s}
.fmt a:hover{color:#fff; border-bottom-color:var(--cyan); text-shadow:0 0 8px rgba(0,229,255,.5)}
.fmt ul,.fmt ol{margin:1em 0; padding-left:1.6em}
.fmt li{margin:.4em 0}
.fmt ul li::marker{color:var(--magenta)}
.fmt ol li::marker{color:var(--cyan); font-family:var(--font-mono)}
.fmt blockquote{margin:1.4em 0; padding:.6em 1.2em; border-left:3px solid var(--magenta);
  background:rgba(255,45,120,.06); color:#b9cdd9}
.fmt blockquote p{color:#b9cdd9}
.fmt code{font-family:var(--font-mono); font-size:.9em; background:rgba(0,229,255,.10); color:var(--cyan);
  padding:.15em .45em; border:1px solid var(--line); border-radius:3px}
.fmt pre{margin:1.3em 0; padding:18px 20px; background:var(--void-2)!important; border:1px solid var(--line-strong);
  border-left:3px solid var(--cyan); overflow:auto; box-shadow:inset 0 0 30px rgba(0,229,255,.04)}
.fmt pre code{background:none!important; border:0; color:#cfe3ee; padding:0; font-size:13.5px; line-height:1.7}
.fmt img{max-width:100%; height:auto; border:1px solid var(--line-strong); margin:1.2em 0; display:block}
.fmt hr{border:0; height:1px; background:var(--line-strong); margin:2em 0}
.fmt table{width:100%; border-collapse:collapse; margin:1.3em 0; font-size:14.5px}
.fmt th,.fmt td{border:1px solid var(--line-strong); padding:10px 14px; text-align:left}
.fmt th{background:rgba(0,229,255,.08); color:#eef6fb; font-family:var(--font-mono); letter-spacing:1px}
.fmt strong{color:#fff} .fmt em{color:var(--amber)}

/* ---------- 标签 / 上下篇 ---------- */
.entry-tags{margin:40px auto 0; max-width:820px; display:flex; flex-wrap:wrap; align-items:center; gap:10px;
  font-family:var(--font-mono); font-size:12px; color:var(--muted); letter-spacing:1px}
.entry-tags .tag-label{color:var(--magenta)}
.entry-tags a{color:var(--cyan); text-decoration:none; border:1px solid var(--line-strong); padding:4px 10px; transition:.18s}
.entry-tags a:hover{border-color:var(--cyan); box-shadow:0 0 12px rgba(0,229,255,.25)}
.post-nav{margin:34px auto 0; max-width:820px; display:flex; justify-content:space-between; gap:16px;
  font-family:var(--font-mono); font-size:13px; letter-spacing:1px; border-top:1px solid var(--line); padding-top:22px}
.post-nav a{color:var(--cyan); text-decoration:none}
.post-nav a:hover{text-shadow:0 0 8px rgba(0,229,255,.5)}
.post-nav .prev,.post-nav .next{color:var(--muted)}

/* ---------- 评论区 ---------- */
.comments-area{margin:50px auto 0; max-width:820px}
.comments-title,.respond-title{font-family:var(--font-display); font-weight:600; font-size:20px; letter-spacing:1px;
  color:var(--text); margin-bottom:24px}
.comments-title .slash,.respond-title .slash{color:var(--magenta)}
.comments-area ol,.comments-area ul{list-style:none}
.comments-area .comment-list{margin-bottom:30px}
.comments-area li{margin:0}
.comment-body{padding:18px 20px; margin-bottom:14px; background:rgba(11,19,34,.5);
  border:1px solid var(--line); border-left:2px solid var(--cyan-dim)}
.comment-body .comment-author{display:flex; align-items:center; gap:12px; margin-bottom:8px}
.comment-body .comment-author cite,.comment-body cite.fn{font-style:normal; font-family:var(--font-mono);
  color:var(--cyan); font-size:14px; letter-spacing:.5px}
.comment-body .comment-author img,.comment-body img.avatar{width:40px; height:40px; border:1px solid var(--line-strong)}
.comment-meta,.comment-body .comment-meta a{font-family:var(--font-mono); font-size:11px; color:var(--muted); text-decoration:none}
.comment-content p{margin:.5em 0; color:#c2d6e2}
.comment-reply a,.comment-body .comment-reply a{font-family:var(--font-mono); font-size:11px; color:var(--magenta); text-decoration:none; letter-spacing:1px}
.children{margin-left:24px; margin-top:14px; padding-left:14px; border-left:1px solid var(--line)}

.respond{margin-top:30px; padding:24px; background:rgba(11,19,34,.4); border:1px solid var(--line)}
.cancel-comment-reply{font-family:var(--font-mono); font-size:12px; margin-bottom:10px}
.cancel-comment-reply a{color:var(--magenta)}
.comment-form textarea{width:100%; background:var(--void-2); border:1px solid var(--line-strong); color:var(--text);
  font-family:var(--font-cjk); font-size:14px; padding:12px 14px; resize:vertical; outline:none; transition:border-color .18s}
.comment-form textarea:focus{border-color:var(--cyan); box-shadow:0 0 14px rgba(0,229,255,.15)}
.comment-fields{display:flex; flex-wrap:wrap; gap:12px; margin-top:12px}
.comment-fields input{flex:1; min-width:160px; background:var(--void-2); border:1px solid var(--line-strong); color:var(--text);
  font-family:var(--font-mono); font-size:13px; padding:10px 12px; outline:none; transition:border-color .18s}
.comment-fields input:focus{border-color:var(--cyan); box-shadow:0 0 14px rgba(0,229,255,.15)}
.comment-login{font-family:var(--font-mono); font-size:13px; color:var(--muted); margin-top:12px}
.comment-login a{color:var(--cyan); text-decoration:none}
.comment-submit{margin-top:16px; font-family:var(--font-mono); font-size:13px; letter-spacing:1px; cursor:pointer;
  color:var(--cyan); background:transparent; border:1px solid var(--cyan); padding:12px 28px; transition:.2s}
.comment-submit:hover{background:rgba(0,229,255,.1); box-shadow:0 0 20px rgba(0,229,255,.3)}
.comment-page ul{display:flex; gap:8px; list-style:none; margin-top:20px; font-family:var(--font-mono)}
.comment-page a,.comment-page .current{color:var(--cyan); text-decoration:none; border:1px solid var(--line-strong); padding:6px 12px}

/* ---------- 分页（pageNav） ---------- */
.page-navigator,nav ul.page-navigator{display:flex; gap:8px; list-style:none; justify-content:center; margin:30px 0;
  font-family:var(--font-mono); flex-wrap:wrap}
.page-navigator li a,.page-navigator li.current span,.page-navigator a{
  color:var(--cyan); text-decoration:none; border:1px solid var(--line-strong); padding:8px 14px; transition:.18s; display:inline-block}
.page-navigator li.current span,.page-navigator .current{background:rgba(0,229,255,.12); color:#fff}
.page-navigator li a:hover{border-color:var(--cyan); box-shadow:0 0 12px rgba(0,229,255,.25)}

/* ---------- 404 ---------- */
.error-404{text-align:center; padding:120px 0}
.error-404 .glitch{margin:0 auto 24px; width:max-content}
.error-404 .err-msg{font-family:var(--font-mono); color:var(--muted); letter-spacing:2px; margin-bottom:30px}

/* ---------- 页脚 ---------- */
footer{border-top:1px solid var(--line-strong); padding:26px 0; margin-top:10px}
.foot-inner{max-width:1180px; margin:0 auto; padding:0 40px; display:flex;
  justify-content:space-between; align-items:center; gap:18px; flex-wrap:wrap;
  font-family:var(--font-mono); font-size:11px; color:var(--muted); letter-spacing:1px}
.foot-inner a{text-decoration:none}
.foot-inner .glow-c{color:var(--cyan)}

/* ---------- 响应式 ---------- */
@media (max-width:760px){
  .wrap,.nav-inner,.foot-inner{padding-left:20px; padding-right:20px}
  .nav-links a .zh{display:none}
  .nav-search-input:focus,.nav-search-form:hover .nav-search-input{width:120px}
  .post{grid-template-columns:1fr; gap:14px; padding:22px}
  .arrow{display:none}
  .post-meta{flex-direction:row; align-items:center}
  .entry{padding:40px 0 30px}
}
@media (prefers-reduced-motion:reduce){
  *{animation:none!important; transition:none!important}
  .post{opacity:1; transform:none}
}
