:root{
  --bg:#fafafa;
  --bg-2:#f0f0ee;
  --paper:#ffffff;
  --ink:#0a0a0a;
  --ink-2:#1f1f1f;
  --muted:#6b6b6b;
  --rule:#0a0a0a;
  --green:#16a34a;
  --magenta:#c026d3;
  --amber:#ca8a04;
}
/* pro5 — Brutal Code 粗野代码: 等宽字, 厚黑边, 终端绿, 注释行 */
*{box-sizing:border-box;}
body{background:var(--bg);color:var(--ink);font-family:"JetBrains Mono","IBM Plex Mono","SF Mono","Source Code Pro",monospace;-webkit-font-smoothing:antialiased;line-height:1.7;font-size:15px;}
::selection{background:var(--green);color:var(--bg);}
::-webkit-scrollbar{width:12px;}
::-webkit-scrollbar-track{background:var(--bg-2);}
::-webkit-scrollbar-thumb{background:var(--ink);border:2px solid var(--bg-2);}

.display{font-family:"JetBrains Mono","IBM Plex Mono",monospace;font-weight:700;letter-spacing:-.025em;line-height:1.04;}
.display-2{font-family:"JetBrains Mono","IBM Plex Mono",monospace;font-weight:500;letter-spacing:0;line-height:1.1;}
.comment{font-family:"JetBrains Mono",monospace;font-size:.78rem;letter-spacing:0;color:var(--muted);}
.comment:before{content:'// ';color:var(--green);}
.kw{color:var(--magenta);}
.fn{color:var(--amber);}
.var{color:var(--green);}

.t-ink{color:var(--ink);} .t-muted{color:var(--muted);} .t-green{color:var(--green);} .t-magenta{color:var(--magenta);}
.bg-paper{background:var(--paper);} .bg-ink{background:var(--ink);color:var(--bg);}

.box{background:var(--paper);border:2px solid var(--ink);}
.box-tight{background:var(--paper);border:1px solid var(--ink);}

.terminal{background:var(--ink);color:#d4d4d4;border:2px solid var(--ink);position:relative;font-family:"JetBrains Mono",monospace;}
.terminal:before{content:'';position:absolute;top:0;left:0;right:0;height:28px;background:#2a2a2a;border-bottom:1px solid #444;}
.terminal:after{content:'● ● ●';position:absolute;top:5px;left:12px;font-size:11px;letter-spacing:6px;color:#d4d4d4;line-height:1;}
.terminal-body{padding:44px 22px 22px;}
.prompt:before{content:'$ ';color:var(--green);}
.output{color:#a3a3a3;}

.work-thumb{display:block;background:var(--bg-2);overflow:hidden;border-bottom:2px solid var(--ink);}
.work-thumb img{display:block;width:100%;height:auto;filter:grayscale(.2) contrast(1.05);transition:filter .4s,transform .6s;}
.work-thumb:hover img{filter:none;transform:scale(1.03);}

.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.85rem 1.7rem;font-family:"JetBrains Mono",monospace;font-weight:700;font-size:.82rem;letter-spacing:.02em;background:var(--ink);color:var(--bg);border:2px solid var(--ink);transition:.15s;}
.btn:hover{background:var(--green);color:var(--ink);border-color:var(--ink);}
.btn-ghost{display:inline-flex;align-items:center;gap:.5rem;padding:.85rem 1.7rem;font-family:"JetBrains Mono",monospace;font-weight:700;font-size:.82rem;background:transparent;color:var(--ink);border:2px solid var(--ink);transition:.15s;}
.btn-ghost:hover{background:var(--ink);color:var(--bg);}
.btn-green{display:inline-flex;align-items:center;gap:.5rem;padding:.85rem 1.7rem;font-family:"JetBrains Mono",monospace;font-weight:700;font-size:.82rem;background:var(--green);color:var(--ink);border:2px solid var(--ink);transition:.15s;}
.btn-green:hover{background:var(--ink);color:var(--green);}

.chip{display:inline-flex;font-family:"JetBrains Mono",monospace;font-weight:600;font-size:.7rem;background:var(--paper);color:var(--ink-2);border:1px solid var(--ink);padding:.3rem .7rem;}
.chip-green{background:var(--green);color:var(--ink);border-color:var(--ink);}
.chip-magenta{background:var(--magenta);color:#fff;border-color:var(--ink);}

.cat-tab{font-family:"JetBrains Mono",monospace;font-weight:600;font-size:.78rem;background:var(--paper);color:var(--ink);border:2px solid var(--ink);padding:.45rem .95rem;transition:.15s;}
.cat-tab:hover{background:var(--bg-2);}
.cat-tab.active{background:var(--ink);color:var(--green);}
.cat-tab.active:before{content:'> ';color:var(--green);}

.nav-link{font-family:"JetBrains Mono",monospace;font-weight:600;font-size:.85rem;color:var(--ink);padding:.5rem .85rem;border:2px solid transparent;transition:.15s;}
.nav-link:hover{background:var(--bg-2);}
.nav-link.active{background:var(--ink);color:var(--green);}
.nav-link.active:before{content:'> ';color:var(--green);}
.nav{display:flex;}
@media(max-width:1023px){
  .nav{position:fixed;top:0;right:0;bottom:0;width:80%;max-width:320px;flex-direction:column;align-items:stretch;background:var(--paper);border-left:2px solid var(--ink);padding:6rem 1.5rem 2rem;transform:translateX(101%);transition:transform .25s;z-index:60;overflow-y:auto;gap:.3rem;}
  .nav.active{transform:translateX(0);}
  .menu-overlay{position:fixed;inset:0;background:rgba(10,10,10,.55);opacity:0;visibility:hidden;transition:opacity .25s;z-index:55;}
  .menu-overlay.active{opacity:1;visibility:visible;}
  body.menu-open{overflow:hidden;}
  .nav-link{padding:.85rem 1.1rem;border:2px solid var(--ink);background:var(--paper);}
}

.skill-bar{height:10px;background:var(--paper);border:1px solid var(--ink);position:relative;font-family:"JetBrains Mono",monospace;}
.skill-bar > span{display:block;height:100%;background:var(--green);}

.timeline{position:relative;padding-left:32px;}
.timeline:before{content:'';position:absolute;left:0;top:6px;bottom:6px;width:2px;background:var(--ink);}
.timeline-item{position:relative;}
.timeline-item:before{content:'';position:absolute;left:-30px;top:8px;width:18px;height:2px;background:var(--green);}
.timeline-item:after{content:'';position:absolute;left:-15px;top:4px;width:10px;height:10px;background:var(--ink);}

.faq-answer{max-height:0;overflow:hidden;opacity:0;transition:max-height .3s,opacity .3s;}
.faq-item.active .faq-icon{transform:rotate(45deg);}
.faq-icon{transition:transform .2s;}

.back-to-top{opacity:0;visibility:hidden;transition:opacity .25s;}
.back-to-top.visible{opacity:1;visibility:visible;}

@media print{header,footer,.no-print{display:none;}}
