
*{margin:0;padding:0;box-sizing:border-box}
:root{
  --bg-primary:#08090d;
  --bg-secondary:#0e1117;
  --bg-card:#111620;
  --bg-card-hover:#161c28;
  --cyan:#00d4ff;
  --cyan-dim:rgba(0,212,255,0.10);
  --cyan-line:rgba(0,212,255,0.08);
  --red:#ff3366;
  --red-dim:rgba(255,51,102,0.10);
  --text-primary:#e4e8ef;
  --text-secondary:#8892a4;
  --text-tertiary:#4e5869;
  --border:rgba(255,255,255,0.06);
  --border-hover:rgba(0,212,255,0.18);
  --font-body:'Inter',system-ui,sans-serif;
  --font-mono:'JetBrains Mono',monospace;
}
html{scroll-behavior:smooth}
body{background:var(--bg-primary);color:var(--text-primary);font-family:var(--font-body);line-height:1.7;overflow-x:hidden}
#matrix{position:fixed;top:0;left:0;width:100%;height:100%;z-index:0;pointer-events:none;opacity:0.04}
::-webkit-scrollbar{width:5px}
::-webkit-scrollbar-track{background:var(--bg-secondary)}
::-webkit-scrollbar-thumb{background:var(--cyan);border-radius:3px}

/* Nav */
nav{position:fixed;top:0;left:0;right:0;z-index:100;padding:0 2rem;height:52px;display:flex;align-items:center;justify-content:space-between;background:rgba(8,9,13,0.92);backdrop-filter:blur(20px);border-bottom:1px solid var(--border)}
.nav-logo{font-family:var(--font-mono);font-weight:600;font-size:0.95rem;color:var(--cyan);letter-spacing:-0.5px;text-decoration:none}
.nav-logo span{color:var(--red)}
.nav-links{display:flex;gap:1.75rem;list-style:none}
.nav-links a{color:var(--text-tertiary);text-decoration:none;font-family:var(--font-mono);font-size:0.72rem;letter-spacing:0.04em;transition:color 0.3s}
.nav-links a .num{color:var(--cyan);margin-right:0.3rem}
.nav-links a:hover,.nav-links a.active{color:var(--text-primary)}

.container{max-width:1060px;margin:0 auto;padding:0 2rem;position:relative;z-index:1}
section{padding:5rem 0;position:relative;z-index:1}

/* Line numbers gutter aesthetic */
.line-num{font-family:var(--font-mono);font-size:0.7rem;color:var(--text-tertiary);opacity:0.4;user-select:none;min-width:28px;text-align:right}

/* Hero / About */
.hero{padding:6.5rem 0 3rem;position:relative}
.hero::after{content:'';position:absolute;top:0;left:0;right:0;bottom:0;background:radial-gradient(ellipse at 70% 20%,rgba(0,212,255,0.03) 0%,transparent 60%);pointer-events:none}
.hero-grid{display:grid;grid-template-columns:1fr 160px;gap:3rem;align-items:center}

/* Terminal-style comment */
.hero-comment{font-family:var(--font-mono);font-size:0.72rem;color:var(--text-tertiary);margin-bottom:1.25rem;display:flex;align-items:center;gap:0.5rem}
.hero-comment::before{content:'//';color:var(--cyan);opacity:0.5}

.hero-title{font-size:2.1rem;font-weight:700;line-height:1.2;margin-bottom:1rem;letter-spacing:-0.03em}
.hero-title .cyan{color:var(--cyan)}
.hero-title .red{color:var(--red)}
.cursor{display:inline-block;width:2px;height:0.9em;background:var(--cyan);margin-left:3px;animation:blink 1s step-end infinite;vertical-align:text-bottom}

.hero-bio{font-size:0.88rem;color:var(--text-secondary);line-height:1.75;margin-bottom:1.5rem;max-width:540px}

/* Cert badges — code style */
.hero-stack{display:flex;gap:0.4rem;flex-wrap:wrap}
.stack-item{font-family:var(--font-mono);font-size:0.68rem;padding:0.3rem 0.7rem;border-radius:4px;border:1px solid var(--border);color:var(--text-tertiary);transition:all 0.3s;position:relative}
.stack-item::before{content:'>';color:var(--cyan);margin-right:0.3rem;opacity:0.5}
.stack-item:hover{border-color:var(--cyan);color:var(--cyan);background:var(--cyan-dim)}

/* Social row */
.hero-social{display:flex;gap:1.25rem;margin-top:1.25rem}
.hero-social a{font-family:var(--font-mono);font-size:0.72rem;color:var(--text-tertiary);text-decoration:none;transition:color 0.3s;display:flex;align-items:center;gap:0.3rem}
.hero-social a::before{content:'$';color:var(--cyan);opacity:0.4}
.hero-social a:hover{color:var(--cyan)}

/* Photo */
.hero-photo{position:relative}
.photo-frame{width:150px;height:150px;border-radius:10px;overflow:hidden;border:1px solid var(--border);background:var(--bg-card)}
.photo-inner{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0.5rem;background:linear-gradient(160deg,var(--bg-card),rgba(0,212,255,0.02))}
.photo-inner svg{width:40px;height:40px;opacity:0.15}
.photo-inner span{font-size:0.6rem;color:var(--text-tertiary);font-family:var(--font-mono)}
.photo-decor{position:absolute;top:-5px;right:-5px;width:100%;height:100%;border:1px solid var(--cyan);opacity:0.1;border-radius:10px;z-index:-1}
.photo-decor-2{position:absolute;bottom:-5px;left:-5px;width:100%;height:100%;border:1px solid var(--red);opacity:0.07;border-radius:10px;z-index:-1}
.photo-badge{position:absolute;bottom:-10px;left:50%;transform:translateX(-50%);font-family:var(--font-mono);font-size:0.6rem;color:var(--cyan);background:var(--bg-primary);border:1px solid var(--border);padding:0.2rem 0.6rem;border-radius:4px;white-space:nowrap}

/* Divider */
.divider{border:none;border-top:1px solid var(--border);margin:0;position:relative;z-index:1}

/* Section headers — code style */
.section-header{display:flex;align-items:baseline;gap:0.75rem;margin-bottom:2.5rem}
.section-num{font-family:var(--font-mono);font-size:1.5rem;font-weight:700;color:var(--cyan);opacity:0.3;letter-spacing:-0.05em}
.section-title{font-size:1.4rem;font-weight:700;letter-spacing:-0.02em}
.section-title .accent{color:var(--cyan)}
.section-comment{font-family:var(--font-mono);font-size:0.7rem;color:var(--text-tertiary);margin-left:auto}
.section-comment::before{content:'// ';color:var(--cyan);opacity:0.3}

/* Post cards */
.posts-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.25rem}

.post-card{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;overflow:hidden;transition:all 0.4s cubic-bezier(0.25,0.8,0.25,1);cursor:pointer;position:relative}
.post-card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--cyan),var(--red));opacity:0;transition:opacity 0.4s;z-index:2}
.post-card:hover{border-color:var(--border-hover);transform:translateY(-3px);background:var(--bg-card-hover)}
.post-card:hover::before{opacity:1}
.post-card:hover .post-title{color:var(--cyan)}
.post-card:hover .post-arrow{transform:translateX(4px);color:var(--cyan)}

/* Cover image */
.post-cover{height:160px;background:var(--bg-secondary);position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;border-bottom:1px solid var(--border)}
.post-cover-placeholder{font-family:var(--font-mono);font-size:0.65rem;color:var(--text-tertiary);opacity:0.5}
.post-cover-index{position:absolute;top:10px;left:12px;font-family:var(--font-mono);font-size:0.65rem;color:var(--cyan);opacity:0.6;background:rgba(8,9,13,0.7);padding:0.15rem 0.5rem;border-radius:3px;backdrop-filter:blur(6px)}

/* Scan lines on cover */
.post-cover::after{content:'';position:absolute;top:0;left:0;right:0;bottom:0;background:repeating-linear-gradient(0deg,transparent,transparent 3px,rgba(0,212,255,0.015) 3px,rgba(0,212,255,0.015) 4px);pointer-events:none}

.post-body{padding:1.25rem 1.35rem 1.35rem}
.post-tags{display:flex;gap:0.35rem;margin-bottom:0.65rem;flex-wrap:wrap}
.post-tag{font-family:var(--font-mono);font-size:0.62rem;padding:0.15rem 0.5rem;border-radius:3px;background:var(--cyan-dim);color:var(--cyan);letter-spacing:0.02em}
.post-tag.red{background:var(--red-dim);color:var(--red)}
.post-title{font-size:1rem;font-weight:600;line-height:1.4;letter-spacing:-0.01em;margin-bottom:0.5rem;transition:color 0.3s}
.post-excerpt{font-size:0.8rem;color:var(--text-secondary);line-height:1.65;margin-bottom:1rem}
.post-footer{display:flex;justify-content:space-between;align-items:center;font-family:var(--font-mono);font-size:0.68rem;color:var(--text-tertiary)}
.post-arrow{transition:all 0.3s;color:var(--text-tertiary)}

/* Featured — full width */
.post-featured{grid-column:1/-1;display:grid;grid-template-columns:1.1fr 1fr;overflow:hidden}
.post-featured .post-cover{height:auto;min-height:240px}
.post-featured .post-body{display:flex;flex-direction:column;justify-content:center;padding:2rem}
.post-featured .post-title{font-size:1.15rem}
.post-featured .post-excerpt{flex:1}
.post-featured-label{font-family:var(--font-mono);font-size:0.6rem;color:var(--red);letter-spacing:0.12em;text-transform:uppercase;margin-bottom:0.6rem;display:flex;align-items:center;gap:0.35rem}
.post-featured-label::before{content:'◆';font-size:0.45rem}

/* Load more */
.load-more{text-align:center;margin-top:2.5rem}
.load-more-btn{font-family:var(--font-mono);font-size:0.75rem;color:var(--text-tertiary);background:none;border:1px solid var(--border);border-radius:6px;padding:0.6rem 2rem;cursor:pointer;transition:all 0.3s;letter-spacing:0.02em}
.load-more-btn::before{content:'$ ';color:var(--cyan);opacity:0.4}
.load-more-btn:hover{border-color:var(--cyan);color:var(--cyan);background:var(--cyan-dim)}

/* Newsletter */
.newsletter{border-top:1px solid var(--border);padding:3rem 0}
.newsletter-inner{display:flex;align-items:center;justify-content:space-between;gap:2rem;flex-wrap:wrap}
.newsletter-text h3{font-size:0.95rem;font-weight:600;margin-bottom:0.2rem;font-family:var(--font-mono)}
.newsletter-text h3::before{content:'> ';color:var(--cyan);opacity:0.4}
.newsletter-text p{font-size:0.78rem;color:var(--text-tertiary)}
.newsletter-form{display:flex;gap:0.5rem}
.newsletter-input{background:var(--bg-card);border:1px solid var(--border);border-radius:5px;padding:0.55rem 0.9rem;color:var(--text-primary);font-family:var(--font-mono);font-size:0.75rem;outline:none;transition:border-color 0.3s;width:210px}
.newsletter-input:focus{border-color:var(--cyan)}
.newsletter-input::placeholder{color:var(--text-tertiary)}
.newsletter-btn{background:var(--cyan);color:var(--bg-primary);border:none;border-radius:5px;padding:0.55rem 1.2rem;font-family:var(--font-mono);font-size:0.72rem;font-weight:600;cursor:pointer;transition:opacity 0.3s}
.newsletter-btn:hover{opacity:0.85}

/* Footer */
footer{padding:1.5rem 0;border-top:1px solid var(--border);position:relative;z-index:1}
.footer-inner{display:flex;justify-content:space-between;align-items:center;font-family:var(--font-mono);font-size:0.65rem;color:var(--text-tertiary)}
.footer-inner a{color:var(--cyan);text-decoration:none}
.footer-right{display:flex;gap:1rem}
.footer-right span::before{content:'• ';color:var(--text-tertiary);opacity:0.3}

/* Animations */
@keyframes blink{0%,100%{opacity:1}50%{opacity:0}}
@keyframes fadeInUp{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}
.reveal{opacity:0;transform:translateY(24px);transition:all 0.7s cubic-bezier(0.25,0.8,0.25,1)}
.reveal.visible{opacity:1;transform:translateY(0)}
.reveal-d1{transition-delay:0.08s}
.reveal-d2{transition-delay:0.16s}
.reveal-d3{transition-delay:0.24s}
.reveal-d4{transition-delay:0.32s}
.reveal-d5{transition-delay:0.40s}

@media(max-width:768px){
  .container{padding:0 1.25rem}
  nav{padding:0 1.25rem}
  .nav-links{gap:1rem}
  .nav-links a .num{display:none}
  .hero-grid{grid-template-columns:1fr;text-align:center}
  .hero-photo{justify-self:center;order:-1}
  .hero-bio{margin:0 auto 1.5rem}
  .hero-stack{justify-content:center}
  .hero-social{justify-content:center}
  .hero-title{font-size:1.6rem}
  .posts-grid{grid-template-columns:1fr}
  .post-featured{grid-template-columns:1fr}
  .post-featured .post-cover{min-height:180px}
  .section-comment{display:none}
  .newsletter-inner{flex-direction:column;text-align:center}
  .newsletter-form{width:100%}
  .newsletter-input{flex:1}
  .footer-inner{flex-direction:column;gap:0.5rem;text-align:center}
  .footer-right{justify-content:center}
}


/* Single post */
.post-single{padding:6rem 0 4rem}
.post-header{margin-bottom:3rem}
.post-header-meta{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;font-family:var(--font-mono);font-size:0.75rem}
.post-back{color:var(--cyan);text-decoration:none;transition:opacity 0.3s}
.post-back:hover{opacity:0.7}
.post-date-single{color:var(--text-tertiary)}
.post-title-single{font-size:2rem;font-weight:700;letter-spacing:-0.03em;line-height:1.25;margin-bottom:1.25rem}
.post-meta-single{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem}
.post-reading-time{font-family:var(--font-mono);font-size:0.72rem;color:var(--text-tertiary)}
.post-cover-single{margin-top:2rem;border-radius:10px;overflow:hidden;border:1px solid var(--border)}
.post-cover-single img{width:100%;height:auto;display:block}

/* Post content */
.post-content{font-size:0.95rem;line-height:1.85;color:var(--text-secondary);max-width:100%}
.post-content h1,.post-content h2,.post-content h3,.post-content h4{color:var(--text-primary);margin:2.5rem 0 1rem;letter-spacing:-0.02em}
.post-content h1{font-size:1.6rem}
.post-content h2{font-size:1.35rem}
.post-content h3{font-size:1.15rem}
.post-content p{margin-bottom:1.25rem}
.post-content a{color:var(--cyan);text-decoration:none;border-bottom:1px solid rgba(0,212,255,0.2);transition:border-color 0.3s}
.post-content a:hover{border-color:var(--cyan)}
.post-content img{max-width:100%;height:auto;border-radius:8px;border:1px solid var(--border);margin:1.5rem 0}
.post-content code{font-family:var(--font-mono);font-size:0.85em;background:var(--bg-card);padding:0.15rem 0.4rem;border-radius:3px;color:var(--cyan)}
.post-content pre{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;padding:1.25rem;overflow-x:auto;margin:1.5rem 0}
.post-content pre code{background:none;padding:0;font-size:0.82rem;line-height:1.6;color:var(--text-primary)}
.post-content blockquote{border-left:3px solid var(--cyan);padding-left:1.25rem;margin:1.5rem 0;color:var(--text-secondary);font-style:italic}
.post-content ul,.post-content ol{margin:1rem 0 1.5rem 1.5rem}
.post-content li{margin-bottom:0.4rem}
.post-content strong{color:var(--text-primary);font-weight:600}
.post-content table{width:100%;border-collapse:collapse;margin:1.5rem 0;font-size:0.85rem}
.post-content th,.post-content td{padding:0.6rem 1rem;border:1px solid var(--border);text-align:left}
.post-content th{background:var(--bg-card);color:var(--cyan);font-family:var(--font-mono);font-size:0.78rem}
.post-content hr{border:none;border-top:1px solid var(--border);margin:2.5rem 0}

/* Post footer */
.post-footer-single{margin-top:4rem;padding-top:2rem;border-top:1px solid var(--border);clear:both;overflow:hidden}
.post-author-card{display:flex;align-items:center;gap:1rem;margin-bottom:2.5rem}
.post-author-label{font-family:var(--font-mono);font-size:0.7rem;color:var(--text-tertiary);display:block}
.post-author-name{font-weight:600;font-size:1rem}
.post-nav{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:1rem}
.post-nav-link{display:block;padding:1rem;background:var(--bg-card);border:1px solid var(--border);border-radius:8px;text-decoration:none;transition:all 0.3s}
.post-nav-link:hover{border-color:var(--border-hover);background:var(--bg-card-hover)}
.post-nav-label{font-family:var(--font-mono);font-size:0.7rem;color:var(--cyan);display:block;margin-bottom:0.3rem}
.post-nav-title{font-size:0.85rem;color:var(--text-secondary);line-height:1.4}
.post-nav-next{text-align:right}

/* Post title link */
.post-title-link{font-size:1rem;font-weight:600;line-height:1.4;letter-spacing:-0.01em;margin-bottom:0.5rem;transition:color 0.3s;display:block;color:var(--text-primary);text-decoration:none}
.post-title-link::after{content:'';position:absolute;top:0;left:0;right:0;bottom:0;z-index:1}
.post-card{position:relative}
.post-card:hover .post-title-link{color:var(--cyan)}

/* Photo image */
.photo-img{width:100%;height:100%;object-fit:cover}

/* Cover image in cards */
.post-cover-img{width:100%;height:100%;object-fit:cover;position:absolute;top:0;left:0}

/* List section */
.list-section{padding:7rem 0 4rem}
