/* ============================================================
   REFUSAL OS v2026 — cyberpunk / anime personal site
   ============================================================ */
:root{
  --bg:#05070d;
  --bg2:#0a0e1a;
  --panel:#0c1120;
  --cyan:#00f0ff;
  --magenta:#ff2d95;
  --purple:#a855f7;
  --yellow:#ffd166;
  --text:#d7e4ff;
  --dim:#5f7396;
  --line:rgba(0,240,255,.18);
  --glow-cyan:0 0 12px rgba(0,240,255,.55),0 0 40px rgba(0,240,255,.18);
  --glow-magenta:0 0 12px rgba(255,45,149,.55),0 0 40px rgba(255,45,149,.18);
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  font-family:"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  background:var(--bg);
  color:var(--text);
  overflow-x:hidden;
}
a{color:inherit;text-decoration:none}
.hidden{display:none!important}

/* ---------- 背景网格 + 扫描线 ---------- */
body::before{
  content:"";position:fixed;inset:0;z-index:-2;pointer-events:none;
  background:
    linear-gradient(rgba(0,240,255,.05) 1px,transparent 1px),
    linear-gradient(90deg,rgba(0,240,255,.05) 1px,transparent 1px);
  background-size:44px 44px;
}
body::after{
  content:"";position:fixed;inset:0;z-index:99;pointer-events:none;
  background:repeating-linear-gradient(0deg,transparent 0 2px,rgba(0,0,0,.10) 2px 4px);
  mix-blend-mode:overlay;
}
.scanlines{
  position:absolute;inset:0;pointer-events:none;z-index:5;
  background:repeating-linear-gradient(0deg,transparent 0 3px,rgba(0,240,255,.03) 3px 4px);
  animation:flicker 4s infinite;
}
@keyframes flicker{0%,100%{opacity:1}92%{opacity:1}93%{opacity:.6}94%{opacity:1}97%{opacity:.7}98%{opacity:1}}

/* ============ 开机画面 ============ */
.boot{
  position:fixed;inset:0;z-index:1000;
  background:radial-gradient(ellipse at 50% 40%,#0d1428 0%,#05070d 70%);
  display:flex;align-items:center;justify-content:center;
  transition:opacity .6s;
}
.boot.gone{opacity:0;pointer-events:none}
.boot-inner{max-width:640px;width:90%;text-align:center}
.boot-logo{
  font-size:2.6rem;font-weight:800;letter-spacing:.3em;color:var(--cyan);
  text-shadow:var(--glow-cyan);margin-bottom:2rem;
  animation:logoPulse 2.4s ease-in-out infinite;
}
.boot-logo span{color:var(--magenta);text-shadow:var(--glow-magenta)}
@keyframes logoPulse{0%,100%{opacity:1}50%{opacity:.55}}
.boot-terminal{
  font-family:Consolas,monospace;font-size:.85rem;color:#9fe8ff;
  text-align:left;background:rgba(0,20,40,.5);border:1px solid var(--line);
  padding:1.2rem 1.4rem;min-height:190px;border-radius:6px;
  box-shadow:inset 0 0 30px rgba(0,240,255,.06);
  white-space:pre-wrap;word-break:break-all;line-height:1.6;
}
.boot-terminal .ok{color:#3dff8f}
.boot-terminal .warn{color:var(--yellow)}
.boot-enter{
  margin-top:2rem;padding:.9rem 2.6rem;font-size:1.05rem;font-weight:700;
  color:#001018;background:var(--cyan);border:none;border-radius:4px;cursor:pointer;
  text-transform:uppercase;letter-spacing:.18em;
  box-shadow:var(--glow-cyan);transition:transform .15s,box-shadow .15s;
  animation:blinkEnter 1.6s infinite;
}
.boot-enter:hover{transform:scale(1.05);box-shadow:0 0 22px rgba(0,240,255,.9)}
@keyframes blinkEnter{0%,100%{opacity:1}50%{opacity:.75}}

/* ============ OS 布局 ============ */
.os{min-height:100vh;display:flex;flex-direction:column}
.topbar{
  position:fixed;top:0;left:0;right:0;z-index:50;height:46px;
  display:flex;align-items:center;justify-content:space-between;padding:0 1.2rem;
  background:rgba(5,8,16,.92);border-bottom:1px solid var(--line);
  backdrop-filter:blur(8px);font-size:.8rem;letter-spacing:.08em;
}
.os-logo{color:var(--cyan);font-weight:800;text-shadow:0 0 8px rgba(0,240,255,.6)}
.os-logo span{color:var(--magenta)}
.topbar-tag{color:var(--dim);margin-left:.5rem;font-size:.68rem}
.topbar-right{display:flex;align-items:center;gap:.6rem}
.status-dot{width:8px;height:8px;border-radius:50%;background:#3dff8f;box-shadow:0 0 8px #3dff8f;animation:dotPulse 2s infinite}
@keyframes dotPulse{0%,100%{opacity:1}50%{opacity:.4}}
.topbar-status{color:#3dff8f;font-size:.72rem}
.topbar-clock{color:var(--dim);font-family:Consolas,monospace}

.sidebar{
  position:fixed;top:46px;left:0;bottom:0;z-index:40;width:178px;
  background:rgba(6,10,20,.94);border-right:1px solid var(--line);
  display:flex;flex-direction:column;padding:1.4rem .9rem;gap:.3rem;
  backdrop-filter:blur(8px);
}
.nav-link{
  padding:.7rem .9rem;font-size:.82rem;letter-spacing:.12em;color:var(--dim);
  border-left:2px solid transparent;transition:.2s;position:relative;
}
.nav-link:hover{color:var(--cyan);background:rgba(0,240,255,.06)}
.nav-link.active{
  color:var(--cyan);border-left-color:var(--cyan);
  background:linear-gradient(90deg,rgba(0,240,255,.12),transparent);
  text-shadow:0 0 10px rgba(0,240,255,.5);
}
.menu-toggle{display:none}

.content{
  margin:46px 0 40px 178px;padding:2.4rem 2.6rem;flex:1;
}
.botbar{
  position:fixed;bottom:0;left:0;right:0;z-index:50;height:38px;
  display:flex;align-items:center;justify-content:space-between;padding:0 1.2rem;
  background:rgba(5,8,16,.92);border-top:1px solid var(--line);
  font-size:.68rem;color:var(--dim);letter-spacing:.1em;
  backdrop-filter:blur(8px);
}
.botbar span:last-child{color:rgba(0,240,255,.55)}

.panel{display:none;animation:panelIn .45s ease}
.panel.active{display:block}
@keyframes panelIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.sec-title{
  font-size:1.15rem;letter-spacing:.2em;margin-bottom:1.6rem;color:var(--text);
  padding-bottom:.7rem;border-bottom:1px solid var(--line);
}
.sec-title .tick{color:var(--magenta);text-shadow:var(--glow-magenta)}
.panel-note{color:var(--dim);font-size:.8rem;margin-bottom:1.4rem}

/* ============ HOME ============ */
.hero{display:flex;align-items:center;gap:3rem;flex-wrap:wrap;padding:1rem 0 2rem}
.avatar-wrap{position:relative;flex-shrink:0;margin:0 auto}
.avatar-ring{
  position:absolute;inset:-14px;border-radius:50%;
  border:2px solid transparent;
  border-top-color:var(--cyan);border-right-color:var(--magenta);
  animation:spin 6s linear infinite;
  box-shadow:0 0 30px rgba(0,240,255,.25);
}
.avatar-ring::after{
  content:"";position:absolute;inset:8px;border-radius:50%;
  border:1px dashed rgba(255,45,149,.5);animation:spin 9s linear infinite reverse;
}
@keyframes spin{to{transform:rotate(360deg)}}
.avatar{
  width:210px;height:210px;border-radius:50%;object-fit:cover;
  border:2px solid var(--cyan);box-shadow:var(--glow-cyan),0 0 60px rgba(255,45,149,.2);
}
.avatar-hud{
  position:absolute;left:50%;bottom:-38px;transform:translateX(-50%);
  font-size:.62rem;color:var(--cyan);letter-spacing:.14em;white-space:nowrap;
  background:rgba(0,20,40,.85);border:1px solid var(--line);padding:.35rem .7rem;border-radius:4px;
  font-family:Consolas,monospace;
}
.hero-text{flex:1;min-width:280px}
.glitch{
  font-size:4.2rem;font-weight:900;color:#fff;letter-spacing:.06em;position:relative;
  text-shadow:0 0 20px rgba(0,240,255,.6);
}
.glitch::before,.glitch::after{
  content:attr(data-text);position:absolute;inset:0;opacity:.85;
}
.glitch::before{color:var(--magenta);animation:glitchA 3s infinite steps(1)}
.glitch::after{color:var(--cyan);animation:glitchB 2.7s infinite steps(1)}
@keyframes glitchA{
  0%,88%,100%{transform:none;opacity:0}
  89%{transform:translate(-3px,2px);opacity:.8}
  91%{transform:translate(2px,-1px);opacity:.8}
  93%{transform:none;opacity:0}
}
@keyframes glitchB{
  0%,80%,100%{transform:none;opacity:0}
  81%{transform:translate(3px,-2px);opacity:.8}
  84%{transform:translate(-2px,1px);opacity:.8}
  86%{transform:none;opacity:0}
}
.hero-tags{
  margin-top:1rem;color:var(--cyan);font-size:.78rem;letter-spacing:.22em;
  text-shadow:0 0 8px rgba(0,240,255,.5);
}
.hero-slogan{
  margin-top:.5rem;color:var(--magenta);font-style:italic;font-size:.92rem;
  text-shadow:0 0 8px rgba(255,45,149,.4);letter-spacing:.08em;
}
.hero-desc{margin-top:.9rem;color:var(--dim);font-size:.9rem;line-height:1.8}
.hero-actions{margin-top:1.8rem;display:flex;gap:1rem;flex-wrap:wrap}
.btn{
  padding:.75rem 1.6rem;font-size:.82rem;font-weight:700;letter-spacing:.16em;
  border-radius:4px;transition:.2s;cursor:pointer;
}
.btn-primary{background:var(--cyan);color:#001018;box-shadow:var(--glow-cyan)}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 0 24px rgba(0,240,255,.9)}
.btn-ghost{border:1px solid var(--magenta);color:var(--magenta)}
.btn-ghost:hover{background:rgba(255,45,149,.12);transform:translateY(-2px)}

/* ============ WORKS ============ */
.filters{display:flex;gap:.6rem;flex-wrap:wrap;margin-bottom:1.6rem}
.filter-btn{
  padding:.45rem 1.1rem;font-size:.76rem;letter-spacing:.1em;color:var(--dim);
  border:1px solid var(--line);background:transparent;border-radius:3px;cursor:pointer;transition:.2s;
}
.filter-btn:hover{color:var(--cyan);border-color:var(--cyan)}
.filter-btn.active{
  color:#001018;background:var(--magenta);border-color:var(--magenta);
  box-shadow:var(--glow-magenta);font-weight:700;
}
.work-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:1.3rem}
.work-card{
  position:relative;background:var(--panel);border:1px solid var(--line);border-radius:6px;
  overflow:hidden;cursor:pointer;transition:.25s;
}
.work-card:hover{transform:translateY(-5px);border-color:var(--cyan);box-shadow:var(--glow-cyan)}
.work-card img{width:100%;height:210px;object-fit:cover;display:block;transition:.3s}
.work-card:hover img{transform:scale(1.05)}
.work-card .work-meta{
  padding:.8rem .9rem;display:flex;justify-content:space-between;align-items:center;
  font-size:.72rem;letter-spacing:.1em;
}
.work-card .work-name{color:var(--text)}
.work-card .work-cat{color:var(--magenta);text-shadow:0 0 6px rgba(255,45,149,.5)}
.work-card .work-id{
  position:absolute;top:.5rem;right:.6rem;font-family:Consolas,monospace;font-size:.6rem;
  color:rgba(0,240,255,.7);background:rgba(0,0,0,.55);padding:.15rem .45rem;border-radius:3px;
}
.work-card .cat-bar{position:absolute;bottom:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--cyan),var(--magenta));opacity:0;transition:.25s}
.work-card:hover .cat-bar{opacity:1}

/* ============ VIDEO / MUSIC ============ */
.media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1.3rem}
.media-card{background:var(--panel);border:1px solid var(--line);border-radius:6px;overflow:hidden;transition:.25s}
.media-card:hover{transform:translateY(-4px);border-color:var(--magenta);box-shadow:var(--glow-magenta)}
.media-thumb{
  height:130px;display:flex;align-items:center;justify-content:center;position:relative;
  font-size:2.2rem;
}
.media-thumb.dy{background:linear-gradient(135deg,#1e3c42,#0b121c);}
.media-thumb.bili{background:linear-gradient(135deg,#1c2a45,#0b121c);}
.media-thumb.yt{background:linear-gradient(135deg,#3a1c2e,#0b121c);}
.media-icon{filter:drop-shadow(0 0 10px rgba(255,255,255,.5))}
.media-badge{
  position:absolute;top:.5rem;left:.6rem;font-size:.6rem;letter-spacing:.12em;
  color:var(--cyan);border:1px solid var(--line);padding:.15rem .5rem;border-radius:3px;
  background:rgba(0,0,0,.5);
}
.media-info{padding:.8rem .9rem;font-size:.76rem;color:var(--dim);letter-spacing:.08em}
.music-box{
  border:1px dashed var(--line);border-radius:8px;padding:3rem 1.5rem;text-align:center;
  background:rgba(0,240,255,.02);
}
.music-eq{display:flex;justify-content:center;gap:5px;align-items:flex-end;height:44px;margin-bottom:1.2rem}
.music-eq i{width:6px;background:var(--magenta);box-shadow:var(--glow-magenta);animation:eq 1s ease-in-out infinite}
.music-eq i:nth-child(1){animation-delay:0s}.music-eq i:nth-child(2){animation-delay:.15s}
.music-eq i:nth-child(3){animation-delay:.3s}.music-eq i:nth-child(4){animation-delay:.45s}
.music-eq i:nth-child(5){animation-delay:.6s}
@keyframes eq{0%,100%{height:8px}50%{height:44px}}
.music-txt{color:var(--dim);font-size:.8rem;letter-spacing:.14em;line-height:2}
.music-box.has-player{border-style:solid;padding:1.2rem;background:var(--panel)}
.netease-wrap iframe{border:none;border-radius:6px;max-width:100%;display:block;margin:0 auto}

/* ============ ABOUT / CONTACT ============ */
.about-card,.contact-card{
  background:var(--panel);border:1px solid var(--line);border-radius:8px;
  padding:1.8rem;line-height:2;font-size:.9rem;color:var(--text);
}
.about-card p{color:var(--dim)}
.contact-card{color:var(--dim)}

/* ============ LIGHTBOX ============ */
.lightbox{
  position:fixed;inset:0;z-index:900;background:rgba(2,4,10,.94);
  display:flex;align-items:center;justify-content:center;flex-direction:column;gap:1rem;
  backdrop-filter:blur(6px);
}
.lightbox img{max-width:90vw;max-height:80vh;border:1px solid var(--cyan);box-shadow:var(--glow-cyan);border-radius:6px}
.lb-caption{color:var(--cyan);font-size:.8rem;letter-spacing:.12em}
.lb-close{
  position:absolute;top:1.4rem;right:1.6rem;background:transparent;border:1px solid var(--magenta);
  color:var(--magenta);width:40px;height:40px;border-radius:4px;font-size:1.1rem;cursor:pointer;transition:.2s;
}
.lb-close:hover{background:var(--magenta);color:#001018;box-shadow:var(--glow-magenta)}

/* ============ HOME 统计 + 最新作品 ============ */
.home-stats{display:flex;gap:1rem;flex-wrap:wrap;margin:1.5rem 0 2.2rem}
.stat{
  flex:1;min-width:130px;background:var(--panel);border:1px solid var(--line);
  border-radius:8px;padding:1rem 1.2rem;text-align:center;transition:.2s;
}
.stat:hover{border-color:var(--cyan);box-shadow:var(--glow-cyan)}
.stat-num{display:block;font-family:Consolas,monospace;font-size:1.6rem;font-weight:800;color:var(--cyan);text-shadow:0 0 12px rgba(0,240,255,.5)}
.stat-label{display:block;margin-top:.3rem;font-size:.66rem;letter-spacing:.16em;color:var(--dim)}
.home-latest{margin-top:.4rem}
.home-latest-title{font-size:.9rem;letter-spacing:.16em;color:var(--text);margin-bottom:1rem}
.home-latest-title .tick{color:var(--magenta);text-shadow:var(--glow-magenta)}
.home-latest-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem}

/* ============ 音乐播放器（歌单切换） ============ */
.music-player{background:rgba(255,255,255,.03);border:1px solid var(--line);border-radius:8px;padding:.35rem;margin-bottom:1.1rem}
.music-player iframe{border:none;border-radius:6px;display:block;width:100%;height:66px}
.music-list{list-style:none;display:flex;flex-direction:column;gap:.5rem}
.music-item{
  display:flex;justify-content:space-between;align-items:center;gap:1rem;
  padding:.75rem 1rem;border:1px solid var(--line);border-radius:6px;cursor:pointer;
  transition:.2s;background:var(--panel);font-size:.82rem;letter-spacing:.05em;
}
.music-item:hover{border-color:var(--cyan);transform:translateX(4px)}
.music-item.on{border-color:var(--magenta);box-shadow:var(--glow-magenta)}
.mi-title{color:var(--text)}
.mi-artist{color:var(--dim);font-size:.72rem;letter-spacing:.08em}
.music-item.on .mi-title{color:var(--magenta);text-shadow:0 0 8px rgba(255,45,149,.5)}
.music-item.on .mi-artist{color:var(--cyan)}

/* ============ 响应式 ============ */
@media(max-width:860px){
  .content{margin-left:0;padding:1.4rem 1.1rem}
  .sidebar{
    width:auto;left:0;right:0;top:46px;bottom:auto;
    flex-direction:row;flex-wrap:wrap;padding:.5rem .8rem;gap:.2rem;
  }
  .nav-link{font-size:.72rem;padding:.5rem .7rem;border-left:none;border-bottom:2px solid transparent}
  .nav-link.active{border-left:none;border-bottom-color:var(--cyan)}
  .menu-toggle{display:none}
  .glitch{font-size:2.8rem}
  .hero{gap:2rem;text-align:center;justify-content:center}
  .hero-text{min-width:auto}
  .hero-actions{justify-content:center}
  .avatar{width:160px;height:160px}
  .botbar{display:none}
  .content{margin-bottom:0}
}
