:root{--bg: #080808;--bg-1: #0e0e0e;--bg-2: #141414;--border: rgba(255,255,255,0.07);--border-hover: rgba(0,255,136,0.3);--text: #e2e2e2;--text-muted: #6b6b6b;--text-dim: #9a9a9a;--accent: #00ff88;--accent-dim: rgba(0,255,136,0.12);--accent-glow: rgba(0,255,136,0.25);--accent-ring: rgba(0,255,136,0.4);--accent-ring-hover: rgba(0,255,136,0.7);--accent-blob: rgba(0,255,136,0.04);--glass: rgba(255,255,255,0.03);--glass-hover: rgba(255,255,255,0.055);--font-sans: 'Space Grotesk', sans-serif;--font-mono: 'JetBrains Mono', monospace;--terminal-bg: #0b0b0b;--terminal-chrome: #1a1a1a;--traffic-red: #ff5f56;--traffic-yellow: #ffbd2e;--traffic-green: #27c93f;--terminal-prompt: #00ff88;--terminal-command: #63a3ff;--terminal-output: #d0d0d0;--terminal-error: #ff6b6b;--fs-hero: clamp(52px, 8vw, 96px);--fs-h2: clamp(28px, 4vw, 40px);--fs-h3: clamp(20px, 2.5vw, 24px);--fs-body: 16px;--fs-body-lg: 18px;--fs-small: 14px;--fs-mono-label: 11px;--fs-mono-code: 14px}*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);line-height:1.6;overflow-x:hidden}a{color:inherit;text-decoration:none}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:rgba(0,255,136,.2);border-radius:2px}body::before{content:"";position:fixed;inset:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");pointer-events:none;z-index:0;opacity:.4}body.no-noise::before{display:none}img{max-width:100%;height:auto}body{font-family:var(--font-sans);font-size:var(--fs-body);color:var(--text)}h1,h2,h3{font-family:var(--font-sans);font-weight:700;letter-spacing:-0.02em;color:var(--text)}code,pre,.mono{font-family:var(--font-mono);font-size:var(--fs-mono-code)}nav{position:fixed;top:0;left:0;right:0;z-index:100;padding:0 clamp(24px,5vw,80px);height:64px;display:flex;align-items:center;justify-content:space-between;background:rgba(8,8,8,.75);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%);border-bottom:1px solid var(--border)}.nav-logo{font-family:var(--font-mono);font-size:13px;color:var(--accent);letter-spacing:.05em}.nav-links{display:flex;gap:32px;list-style:none;margin:0}.nav-links a{font-size:13px;font-weight:500;color:var(--text-dim);letter-spacing:.02em;transition:color .2s;position:relative}.nav-links a::after{content:"";position:absolute;bottom:-2px;left:0;width:0;height:1px;background:var(--accent);transition:width .2s}.nav-links a:hover{color:var(--text)}.nav-links a:hover::after{width:100%}.site-footer{padding:40px clamp(24px,5vw,80px);max-width:1100px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px;position:relative;z-index:1}.footer-copy{font-family:var(--font-mono);font-size:12px;color:var(--text-muted);letter-spacing:.04em}.footer-links{display:flex;gap:20px}.footer-links a{font-size:13px;color:var(--text-muted);transition:color .2s}.footer-links a:hover{color:var(--accent)}.glass-card{background:var(--glass);border:1px solid var(--border);border-radius:12px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);transition:border-color .25s,background .25s,transform .25s,box-shadow .25s}.glass-card:hover{border-color:rgba(0,255,136,.2);background:var(--glass-hover);transform:translateY(-2px);box-shadow:0 16px 40px rgba(0,0,0,.4),0 0 0 1px rgba(0,255,136,.05)}.divider{height:1px;background:linear-gradient(to right, transparent, var(--border), transparent);margin:0 clamp(24px,5vw,80px)}.btn-primary,.btn-secondary{display:inline-flex;align-items:center;gap:8px;padding:12px 24px;font-family:var(--font-sans);font-size:14px;font-weight:500;border-radius:6px;transition:all .2s;letter-spacing:.01em}.btn-primary{background:var(--accent);color:#080808;font-weight:600;border:none}.btn-primary:hover{background:#3fa;transform:translateY(-1px);box-shadow:0 8px 24px var(--accent-glow)}.btn-secondary{background:rgba(0,0,0,0);color:var(--text-dim);border:1px solid var(--border)}.btn-secondary:hover{border-color:var(--border-hover);color:var(--text);background:var(--glass-hover)}.section{padding:100px clamp(24px,5vw,80px);max-width:1100px;margin:0 auto;position:relative;z-index:1}.section-label{font-family:var(--font-mono);font-size:var(--fs-mono-label);color:var(--accent);letter-spacing:.15em;text-transform:uppercase;margin-bottom:12px}.section-title{font-size:var(--fs-h2);font-weight:700;letter-spacing:-0.02em;color:var(--text);margin-bottom:48px}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}@media(max-width: 700px){.about-grid{grid-template-columns:1fr}}.about-bio{font-size:var(--fs-body);color:var(--text-dim);line-height:1.75;margin-bottom:20px}.about-bio:last-of-type{margin-bottom:0}.about-bio strong{color:var(--text);font-weight:500}.about-bio a{color:var(--accent)}.about-links{display:flex;gap:12px;margin-top:28px}.skills-card{padding:28px}.skills-group{margin-bottom:20px}.skills-group:last-child{margin-bottom:0}.skills-group-label{font-family:var(--font-mono);font-size:10px;color:var(--text-muted);letter-spacing:.12em;text-transform:uppercase;margin-bottom:10px}.skill-chips{display:flex;flex-wrap:wrap;gap:8px}.chip{font-family:var(--font-mono);font-size:12px;padding:4px 10px;border-radius:4px;background:var(--accent-dim);color:var(--accent);border:1px solid rgba(0,255,136,.15);letter-spacing:.02em}.posts-list{display:flex;flex-direction:column;gap:16px}.post-card{padding:24px 28px;display:block;border-left:2px solid rgba(0,0,0,0);transition:border-color .2s}.post-card:hover{border-left-color:var(--accent)}.post-meta{display:flex;gap:12px;align-items:center;font-family:var(--font-mono);font-size:11px;color:var(--text-muted);margin-bottom:10px;letter-spacing:.05em}.post-meta-sep{color:var(--border)}.post-title{font-size:18px;font-weight:600;color:var(--text);letter-spacing:-0.01em;margin-bottom:8px;transition:color .2s}.post-card:hover .post-title{color:var(--accent)}.post-excerpt{font-size:var(--fs-small);color:var(--text-muted);line-height:1.6}.gh-grid{display:grid;grid-template-columns:repeat(3, 1fr);gap:16px;margin-bottom:28px}@media(max-width: 700px){.gh-grid{grid-template-columns:1fr}}.gh-stat{padding:24px;text-align:center}.gh-stat-num{font-size:36px;font-weight:700;color:var(--accent);letter-spacing:-0.02em;line-height:1;margin-bottom:6px;font-family:var(--font-mono)}.gh-stat-label{font-size:12px;color:var(--text-muted);letter-spacing:.05em}.gh-cta{margin-top:24px}.page{max-width:800px;margin:0 auto;padding:120px clamp(20px,5vw,40px) 100px;position:relative;z-index:1}.page-header{margin-bottom:40px}.page-body{font-size:var(--fs-body-lg);line-height:1.75;color:var(--text)}.page-body h2,.page-body h3{margin-top:40px;margin-bottom:16px;letter-spacing:-0.02em}.page-body h2{font-size:24px}.page-body h3{font-size:18px}.page-body p,.page-body ul{margin-bottom:16px}.page-body ul{padding-left:24px}.page-body a{color:var(--accent);text-decoration:underline;text-decoration-color:rgba(0,255,136,.4);text-underline-offset:3px}.not-found{min-height:60vh}.not-found-block{font-family:var(--font-mono);font-size:14px;color:var(--text-dim);background:var(--bg-1);border:1px solid var(--border);border-radius:6px;padding:24px;margin:24px 0;white-space:pre-wrap;line-height:1.6}.not-found-links{display:flex;gap:12px;flex-wrap:wrap;margin-top:24px}.credentials-grid{max-width:900px}.credential-card{padding:24px;display:grid;grid-template-columns:minmax(0, 1.1fr) minmax(0, 1fr);gap:32px;align-items:center}@media(max-width: 900px){.credential-card{grid-template-columns:1fr;gap:20px;padding:20px}}.credential-image-wrap{border-radius:8px;overflow:hidden;border:1px solid var(--border);background:var(--bg-1)}.credential-image{display:block;width:100%;height:auto}.credential-meta{display:flex;flex-direction:column;gap:4px}.credential-issuer{font-family:var(--font-mono);font-size:12px;color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase}.credential-name{font-size:22px;font-weight:600;color:var(--text);letter-spacing:-0.01em;margin-top:2px}.credential-date{font-family:var(--font-mono);font-size:12px;color:var(--accent);letter-spacing:.05em;margin-top:8px}.credential-body{font-size:14px;color:var(--text-dim);line-height:1.7;margin-top:12px}.credential-verify{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:13px;color:var(--accent);margin-top:16px;letter-spacing:.03em;border-top:1px solid var(--border);padding-top:14px}.credential-card:hover .credential-verify{color:var(--text)}.credential-verify-arrow{font-size:15px;transition:transform .2s}.credential-card:hover .credential-verify-arrow{transform:translate(2px, -2px)}#hero{min-height:100vh;display:flex;flex-direction:column;justify-content:center;padding:120px clamp(24px,5vw,80px) 100px;max-width:1100px;margin:0 auto;position:relative;z-index:1}.hero-eyebrow{font-family:var(--font-mono);font-size:12px;color:var(--accent);letter-spacing:.15em;text-transform:uppercase;margin-bottom:20px}.hero-name{font-size:var(--fs-hero);font-weight:700;line-height:1;letter-spacing:-0.03em;color:var(--text);margin-bottom:16px}.hero-name span{color:var(--accent)}.hero-tagline{font-size:clamp(16px,2.5vw,22px);color:var(--text-dim);font-weight:400;max-width:520px;margin-bottom:48px}.hero-ctas{display:flex;gap:12px;flex-wrap:wrap}.hero-scroll{position:absolute;bottom:40px;left:0;right:0;text-align:center}.scroll-line{width:1px;height:48px;background:linear-gradient(to bottom, var(--accent), transparent);margin:8px auto 0;animation:scrollPulse 2s ease infinite}.scroll-label{font-family:var(--font-mono);font-size:10px;color:var(--text-muted);letter-spacing:.1em}@keyframes scrollPulse{0%,100%{opacity:.5;transform:scaleY(1)}50%{opacity:1;transform:scaleY(1.15)}}@keyframes blink{0%,100%{opacity:1}50%{opacity:0}}.cursor-blink{display:inline-block;width:2px;height:1em;background:var(--accent);vertical-align:middle;margin-left:2px;animation:blink 1s step-end infinite}.reveal{opacity:0;transform:translateY(24px);transition:opacity .6s ease,transform .6s ease}.reveal.visible{opacity:1;transform:none}#cursor{width:8px;height:8px;background:var(--accent);border-radius:50%;position:fixed;top:0;left:0;pointer-events:none;z-index:9999;transition:opacity .15s ease;transform:translate(-50%, -50%);opacity:0}#cursor-ring{width:32px;height:32px;border:1px solid var(--accent-ring);border-radius:50%;position:fixed;top:0;left:0;pointer-events:none;z-index:9998;transition:width .3s,height .3s,border-color .3s,opacity .15s ease;transform:translate(-50%, -50%);opacity:0}@media(hover: hover)and (pointer: fine){body{cursor:none}a,button,.glass-card{cursor:none}body.cursor-ready #cursor,body.cursor-ready #cursor-ring{opacity:1}}.glow-blob{position:fixed;width:600px;height:600px;border-radius:50%;background:radial-gradient(circle, var(--accent-blob) 0%, transparent 70%);pointer-events:none;transition:transform 2s ease;z-index:0}@media(hover: none){.glow-blob{display:none}}@media(prefers-reduced-motion: reduce){*,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important}.reveal{opacity:1 !important;transform:none !important}.glow-blob{display:none !important}body{cursor:auto !important}a,button,.glass-card{cursor:auto !important}#cursor,#cursor-ring{opacity:0 !important}}.post{max-width:700px;margin:0 auto;padding:120px clamp(20px,5vw,40px) 100px;position:relative;z-index:1}.post-meta{font-family:var(--font-mono);font-size:var(--fs-mono-label);color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;margin-bottom:20px}.post-title{font-size:clamp(40px,6vw,72px);font-weight:700;letter-spacing:-0.02em;line-height:1.1;color:var(--text);margin-bottom:24px}.post-divider{height:1px;background:linear-gradient(to right, var(--accent), transparent);margin:32px 0;opacity:.4}.post-body{font-size:var(--fs-body-lg);line-height:1.75;color:var(--text)}.post-body h2,.post-body h3{margin-top:40px;margin-bottom:16px;letter-spacing:-0.02em}.post-body h2{font-size:28px}.post-body h3{font-size:22px}.post-body p,.post-body ul,.post-body ol{margin-bottom:20px}.post-body ul,.post-body ol{padding-left:24px}.post-body a{color:var(--accent);text-decoration:underline;text-decoration-color:rgba(0,255,136,.4);text-underline-offset:3px}.post-body a:hover{text-decoration-color:var(--accent)}.post-body code{font-family:var(--font-mono);font-size:var(--fs-mono-code);background:var(--accent-dim);color:var(--accent);padding:1px 6px;border-radius:3px}.post-body pre{background:var(--bg-1);border:1px solid var(--border);border-radius:6px;padding:20px;overflow-x:auto;margin:24px 0}.post-body pre code{background:rgba(0,0,0,0);color:var(--text);padding:0}.post-body blockquote{border-left:2px solid var(--accent);padding-left:20px;margin:24px 0;font-style:italic;color:var(--text-dim)}.post-body img{border-radius:6px;margin:24px 0}.post-toc{display:none}@media(min-width: 1024px){.post-toc{display:block;position:fixed;top:120px;right:max(24px,(100vw - 1100px)/2);width:220px;padding:20px;font-family:var(--font-mono);font-size:12px;z-index:5}.post-toc-label{font-size:11px;color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;margin-bottom:10px}.post-toc ul{list-style:none;padding:0;margin:0}.post-toc li{margin-bottom:8px}.post-toc a{color:var(--text-dim);transition:color .2s}.post-toc a.active,.post-toc a:hover{color:var(--accent)}}.post-nav{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:60px;padding-top:32px;border-top:1px solid var(--border);font-family:var(--font-mono);font-size:13px}.post-nav a{color:var(--text-dim);transition:color .2s}.post-nav a:hover{color:var(--accent)}.projects-section{max-width:1200px}.project-rows{display:flex;flex-direction:column;gap:96px}.project-row{display:grid;grid-template-columns:minmax(0, 1fr) minmax(0, 1fr);gap:48px;align-items:start}@media(max-width: 900px){.project-row{grid-template-columns:1fr;gap:24px}}@media(min-width: 901px){.project-row-flip .project-text{order:2}.project-row-flip .project-showcase{order:1}}.project-text{display:flex;flex-direction:column;gap:20px;padding-top:8px}.project-tags-line{font-family:var(--font-mono);font-size:12px;color:var(--accent);letter-spacing:.15em;text-transform:uppercase;font-weight:500}.project-title{font-size:clamp(28px,4vw,44px);font-weight:700;letter-spacing:-0.02em;line-height:1.1;color:var(--text);margin:0}.project-lede{font-size:var(--fs-body-lg);line-height:1.65;color:var(--text-dim);margin:0}.project-detail{display:flex;flex-direction:column;gap:8px;margin-top:4px}.project-detail-label{font-family:var(--font-mono);font-size:11px;color:var(--accent);letter-spacing:.15em;text-transform:uppercase;margin-top:12px}.project-detail-label:first-child{margin-top:0}.project-detail-body{font-size:var(--fs-body);line-height:1.65;color:var(--text-dim);margin:0}.project-link{display:inline-flex;align-items:center;gap:6px;margin-top:12px;font-family:var(--font-mono);font-size:13px;color:var(--accent);letter-spacing:.03em;text-decoration:none;align-self:flex-start;padding:4px 0;border-bottom:1px solid rgba(0,0,0,0);transition:border-color .2s,color .2s}.project-link:hover{border-bottom-color:var(--accent);color:var(--accent)}.project-link-arrow{transition:transform .2s}.project-link:hover .project-link-arrow{transform:translate(2px, -2px)}.project-showcase{position:relative}.project-terminal{background:var(--terminal-bg, #0b0b0b);border:1px solid var(--border);border-radius:10px;overflow:hidden;box-shadow:0 20px 50px rgba(0,0,0,.35),0 0 0 1px rgba(0,255,136,.03);transition:border-color .25s,box-shadow .25s,transform .25s}.project-terminal:hover{border-color:rgba(0,255,136,.18);box-shadow:0 24px 60px rgba(0,0,0,.45),0 0 0 1px rgba(0,255,136,.06);transform:translateY(-2px)}.project-terminal-titlebar{background:var(--terminal-chrome, #1a1a1a);padding:10px 14px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;border-bottom:1px solid rgba(255,255,255,.06)}.project-terminal-lights{display:flex;gap:8px}.ptl{width:12px;height:12px;border-radius:50%}.ptl-red{background:var(--traffic-red, #ff5f56)}.ptl-yellow{background:var(--traffic-yellow, #ffbd2e)}.ptl-green{background:var(--traffic-green, #27c93f)}.project-terminal-title{text-align:center;font-family:var(--font-mono);font-size:12px;color:var(--text-dim);letter-spacing:.04em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-terminal-spacer{width:52px}.project-terminal-body{padding:16px 18px;font-family:var(--font-mono);font-size:13px;line-height:1.6;color:var(--terminal-output, #d0d0d0);min-height:220px;max-height:340px;overflow-y:auto}.ptline{white-space:pre-wrap;word-break:break-word}.ptline-prompt{color:var(--terminal-command, #63a3ff)}.ptprompt{color:var(--terminal-prompt, #00ff88);margin-right:6px;font-weight:500}.ptline-output{color:var(--terminal-output, #d0d0d0)}.ptline-comment{color:var(--text-muted, #6b6b6b);font-style:italic}.ptline-code{color:var(--text, #e2e2e2)}.ptline-blank{height:.4em}.pt-cursor{display:inline-block;width:.6em;height:1em;background:var(--accent);vertical-align:text-bottom;margin-left:3px;border-radius:1px;box-shadow:0 0 6px rgba(0,255,136,.55),0 0 12px rgba(0,255,136,.2);animation:ptCursorBlink 1.05s step-end infinite;transform:translateY(2px)}@keyframes ptCursorBlink{0%,55%{opacity:1}56%,100%{opacity:0}}.project-terminal[data-animate=ready] .ptline{display:none}.project-terminal[data-animate=ready] .ptline.pt-shown{display:block;opacity:1;transition:opacity .42s ease}.project-terminal[data-animate=ready] .ptline.pt-fading{opacity:0}@media(prefers-reduced-motion: reduce){.pt-cursor{display:none}.project-terminal[data-animate=ready] .ptline{display:block}}.pt-chrome-windows{background:#202020;padding:0;display:flex;justify-content:space-between;align-items:stretch;border-bottom:1px solid rgba(255,255,255,.06);min-height:42px}.win-tabstrip{display:flex;align-items:center;gap:6px;padding:6px 10px 0;min-width:0;flex:1}.win-dropdown{font-family:var(--font-mono);font-size:11px;color:var(--text-dim);padding:2px 6px;cursor:default}.win-tab{display:inline-flex;align-items:center;gap:8px;background:#2b2b2b;color:var(--text);font-family:var(--font-mono);font-size:12px;padding:6px 10px;border-radius:6px 6px 0 0;border-top:2px solid var(--accent);max-width:100%;overflow:hidden}.win-tab-icon{color:var(--accent);font-weight:600}.win-tab-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:.02em}.win-tab-close{color:var(--text-muted);font-size:13px;padding-left:4px}.win-newtab{color:var(--text-dim);font-family:var(--font-mono);font-size:14px;padding:2px 6px}.win-window-controls{display:flex;align-items:stretch}.win-ctl{display:inline-flex;align-items:center;justify-content:center;width:38px;color:var(--text-dim);font-family:var(--font-mono);font-size:13px}.win-ctl-close{color:var(--text)}.pt-chrome-cachy{background:#1e1e20;padding:8px 10px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(255,255,255,.05)}.kde-icon-title{display:flex;align-items:center;gap:10px;min-width:0;padding-left:4px}.kde-icon{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;background:rgba(0,255,136,.14);border:1px solid rgba(0,255,136,.24);border-radius:4px;font-family:var(--font-mono);font-size:11px;color:var(--accent);letter-spacing:-0.05em}.kde-title{font-family:var(--font-mono);font-size:12px;color:var(--text-dim);letter-spacing:.03em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kde-controls{display:flex;align-items:center;gap:4px}.kde-ctl{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;font-family:var(--font-mono);font-size:12px;color:var(--text-dim);border-radius:3px}.kde-ctl:hover{background:rgba(255,255,255,.06);color:var(--text)}.kde-ctl-close:hover{background:rgba(255,80,80,.5);color:#fff}.project-terminal[data-os=windows] .project-terminal-body{background:#0c0c0c}.project-terminal[data-os=cachy] .project-terminal-body{background:#17181c}.project-terminal[data-os=mac] .project-terminal-body{background:var(--terminal-bg, #0b0b0b)}/*# sourceMappingURL=site.css.map */