@import"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap";:root{--bg: #10141c;--surface: #161b25;--card: #1a202c;--text: #ffffff;--dim: #a0aec0;--accent: #ffffff;--accent-bg: #232a38;--red: var(--accent);--orange: var(--accent);--yellow: var(--accent);--green: var(--accent);--aqua: var(--accent);--purple: var(--accent);--line: #2a3140;--container: 880px}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg)}a{text-decoration:none;color:inherit}::selection{background:#fff3;color:var(--text)}.portfolio{min-height:100vh;display:flex;flex-direction:column;background:var(--bg);color:var(--text);font-family:JetBrains Mono,monospace;-webkit-font-smoothing:antialiased}.navbar{position:sticky;top:0;z-index:100;width:100%;background:var(--bg);border-bottom:1px solid var(--line)}.navbar-inner{max-width:var(--container);margin:0 auto;display:flex;justify-content:space-between;align-items:center;padding:1.25rem 2.5rem}.nav-links{display:flex;gap:1.5rem}.nav-link{font-family:JetBrains Mono,monospace;font-size:.9rem;color:var(--dim);cursor:pointer;transition:color .2s ease;text-decoration:underline;text-underline-offset:4px;text-decoration-color:var(--line)}.nav-link:hover,.nav-link.active{color:var(--accent);text-decoration-color:var(--accent)}.nav-email{font-family:JetBrains Mono,monospace;font-size:.78rem;color:var(--dim);text-decoration:underline;text-underline-offset:3px;transition:color .2s ease}.nav-email:hover{color:var(--yellow)}.page{max-width:var(--container);margin:0 auto;padding:4.5rem 2.5rem;flex:1;width:100%}.hero-page{max-width:700px}.hero-top{margin-bottom:2rem}.hero-photo{width:96px;height:96px;border-radius:10px;object-fit:cover;object-position:60% 25%;border:1px solid var(--line);margin-bottom:1.25rem;display:block}.hero-name{font-family:JetBrains Mono,monospace;font-size:2.1rem;font-weight:700;line-height:1.1;letter-spacing:-.03em;margin-bottom:.5rem}.hero-role{font-family:JetBrains Mono,monospace;font-size:1.05rem;color:var(--accent)}.hero-socials{display:flex;align-items:center;gap:1.1rem}.hero-socials a{color:var(--dim);display:inline-flex;transition:color .2s ease}.hero-socials a:hover{color:var(--accent)}.hero-section{margin-top:3rem}.exp-row{display:flex;align-items:flex-start;gap:1.25rem;padding:1.25rem 0;border-bottom:1px solid var(--line)}.exp-row:last-child{border-bottom:none}.logo-box{width:44px;height:44px;background:var(--card);display:flex;align-items:center;justify-content:center;font-family:JetBrains Mono,monospace;font-size:1rem;font-weight:700;color:var(--dim);flex-shrink:0;border-radius:4px}.logo-img{object-fit:contain;padding:6px;background:#fff;border:1px solid var(--line);border-radius:4px}.exp-info{flex:1;display:flex;flex-direction:column;gap:.2rem}.exp-role{font-family:JetBrains Mono,monospace;font-size:1rem;font-weight:600}.exp-company{font-family:JetBrains Mono,monospace;font-size:.85rem;color:var(--dim)}.exp-company a{transition:color .2s ease}.exp-company a:hover{color:var(--yellow)}.exp-desc{font-family:JetBrains Mono,monospace;font-size:.82rem;color:var(--dim);line-height:1.6;margin-top:.35rem}.exp-date{font-family:JetBrains Mono,monospace;font-size:.78rem;color:var(--dim);text-align:right;flex-shrink:0;align-self:flex-start;margin-top:.15rem;white-space:nowrap}.builds-sub{font-family:JetBrains Mono,monospace;font-size:.92rem;font-style:italic;color:var(--dim);margin-bottom:.75rem}.works-header{display:flex;align-items:center;gap:.75rem;margin-bottom:2rem}.works-label{font-family:JetBrains Mono,monospace;font-size:.7rem;font-weight:600;color:var(--yellow);letter-spacing:.15em;white-space:nowrap}.works-line{flex:1;height:1px;background:var(--line)}.project-list{display:flex;flex-direction:column;gap:1.5rem}.project-row{display:flex;flex-direction:column;gap:.35rem;text-align:left;cursor:pointer}.project-name{font-family:JetBrains Mono,monospace;font-size:1.05rem;font-weight:600;color:var(--text);overflow-wrap:break-word}.project-row:hover .project-name{color:var(--orange)}.project-desc{font-size:.85rem;color:var(--dim);line-height:1.65;overflow-wrap:break-word}.project-tech{font-family:JetBrains Mono,monospace;font-size:.72rem;color:var(--dim)}.footer{width:100%;border-top:1px solid var(--line)}.footer-inner{max-width:var(--container);margin:0 auto;padding:1.25rem 2.5rem}.foot-item{font-family:JetBrains Mono,monospace;font-size:.75rem;color:var(--dim)}.blog-list{display:flex;flex-direction:column;gap:1rem}.blog-card{display:block;width:100%;padding:1.25rem 1.5rem;background:var(--card);border:1px solid var(--line);text-align:left;transition:border-color .2s ease}.blog-card:hover{border-color:var(--text)}.blog-card-header{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:.5rem}.blog-card-title{font-family:JetBrains Mono,monospace;font-size:1rem;font-weight:600;color:var(--text);line-height:1.3}.blog-card-date{font-family:JetBrains Mono,monospace;font-size:.75rem;color:var(--dim);white-space:nowrap;flex-shrink:0}.blog-card-desc{font-family:JetBrains Mono,monospace;font-size:.85rem;color:var(--dim);line-height:1.6;margin-bottom:.85rem}.blog-card-tags{display:flex;flex-wrap:wrap;gap:.4rem}.tag-link{cursor:pointer;transition:border-color .2s ease,color .2s ease}.tag-link:hover{border-color:var(--accent);color:var(--accent)}.blog-post-meta{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.tag-bar{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:2rem}.tag-pill{font-family:JetBrains Mono,monospace;font-size:.72rem;padding:.25rem .65rem;border:1px solid var(--line);border-radius:3px;color:var(--dim);transition:border-color .2s ease,color .2s ease}.tag-pill:hover{border-color:var(--accent);color:var(--accent)}.tag-pill.active{border-color:var(--accent);color:var(--accent);background:var(--accent-bg)}.tag-count{margin-left:.4rem;color:var(--dim)}.tag-pill:hover .tag-count{color:var(--accent)}.blog-back{background:none;border:none;font-family:JetBrains Mono,monospace;font-size:.85rem;color:var(--dim);cursor:pointer;padding:0;margin-bottom:2rem;transition:color .2s ease}.blog-back:hover{color:var(--yellow)}.blog-post{max-width:720px}.blog-post-header{margin-bottom:2.5rem;padding-bottom:1.5rem;border-bottom:1px solid var(--line)}.blog-post-title{font-family:JetBrains Mono,monospace;font-size:2rem;font-weight:700;line-height:1.2;color:var(--text);margin-bottom:.75rem}.blog-post-content{font-family:JetBrains Mono,monospace;font-size:.95rem;color:var(--dim);line-height:1.75;display:flex;flex-direction:column;gap:1.25rem}.blog-post-content h2,.blog-post-content h3{font-family:JetBrains Mono,monospace;color:var(--text);font-weight:600;line-height:1.4;margin-top:.5rem}.blog-post-content h2{font-size:1.15rem}.blog-post-content h3{font-size:1rem}.blog-post-content ul,.blog-post-content ol{padding-left:1.25rem;display:flex;flex-direction:column;gap:.4rem}.blog-post-content strong{color:var(--text);font-weight:600}.blog-post-content code{font-family:JetBrains Mono,monospace;font-size:.85em;background:var(--card);border:1px solid var(--line);border-radius:3px;padding:.1rem .35rem;color:var(--text)}.blog-post-content pre{background:var(--card);border:1px solid var(--line);padding:1rem;overflow-x:auto}.blog-post-content pre code{border:none;padding:0;background:none}.blog-post-content table{width:100%;border-collapse:collapse;font-size:.85rem}.blog-post-content th,.blog-post-content td{padding:.55rem 1rem;text-align:left;border:1px solid var(--line)}.blog-post-content th{background:var(--card);color:var(--text);font-weight:600}.blog-post-content tr:nth-child(2n) td{background:var(--surface)}.blog-post-content a{text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--line);color:var(--text)}.blog-post-content a:hover{color:var(--accent);text-decoration-color:var(--accent)}.blog-post-content blockquote{border-left:2px solid var(--line);padding-left:1rem;font-style:italic}.blog-post-footer{margin-top:3rem;padding-top:1.5rem;border-top:1px solid var(--line)}.blog-post-source{font-family:JetBrains Mono,monospace;font-size:.85rem;color:var(--orange);text-decoration:underline;text-underline-offset:3px;text-decoration-color:#ffffff4d;transition:color .2s ease,text-decoration-color .2s ease}.blog-post-source:hover{color:var(--yellow);text-decoration-color:var(--yellow)}.video-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.25rem}.video-card{display:block;background:var(--card);border:1px solid var(--line);transition:border-color .2s ease;overflow:hidden}.video-card:hover{border-color:var(--text)}.video-thumb{position:relative;aspect-ratio:16 / 9;overflow:hidden;background:var(--surface)}.video-thumb img{width:100%;height:100%;object-fit:cover;display:block}.video-play{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#00000080;color:var(--text);opacity:0;transition:opacity .25s ease}.video-card:hover .video-play{opacity:1}.video-title{font-family:JetBrains Mono,monospace;font-size:.85rem;font-weight:500;color:var(--text);line-height:1.4;padding:.85rem 1rem}.video-channel{margin-top:2rem;text-align:center}.video-channel-link{font-family:JetBrains Mono,monospace;font-size:.85rem;color:var(--orange);text-decoration:underline;text-underline-offset:3px;text-decoration-color:#ffffff4d;transition:color .2s ease,text-decoration-color .2s ease}.video-channel-link:hover{color:var(--yellow);text-decoration-color:var(--yellow)}.project-detail{max-width:800px}.project-detail-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1.5rem;margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid var(--line)}.project-detail-title{font-family:JetBrains Mono,monospace;font-size:2rem;font-weight:700;line-height:1.2;color:var(--text)}.project-detail-links{display:flex;gap:.75rem;flex-shrink:0}.project-detail-link{font-family:JetBrains Mono,monospace;font-size:.85rem;color:var(--orange);text-decoration:underline;text-underline-offset:3px;text-decoration-color:#ffffff4d;transition:color .2s ease,text-decoration-color .2s ease}.project-detail-link:hover{color:var(--yellow);text-decoration-color:var(--yellow)}.project-detail-video{width:100%;margin-bottom:2rem;background:var(--surface);border:1px solid var(--line)}.project-detail-video video{width:100%;height:auto;display:block}.project-detail-body{display:flex;flex-direction:column;gap:1.5rem}.project-detail-desc{font-family:JetBrains Mono,monospace;font-size:.95rem;color:var(--dim);line-height:1.75}.project-detail-tech{display:flex;flex-direction:column;gap:.75rem}.project-detail-tech-label{font-family:JetBrains Mono,monospace;font-size:.85rem;font-weight:600;color:var(--text)}.project-detail-tech-list{display:flex;flex-wrap:wrap;gap:.5rem}.project-detail-tech-tag{font-family:JetBrains Mono,monospace;font-size:.75rem;padding:.3rem .7rem;border:1px solid var(--line);border-radius:3px;color:var(--dim)}@media(max-width:1024px){.page{padding:3.5rem 2rem}.hero-name{font-size:2.8rem}.navbar-inner,.footer-inner{padding:1.15rem 2rem}}@media(max-width:768px){.navbar-inner{padding:1rem 1.5rem}.nav-email{display:none}.nav-links{gap:1.25rem}.nav-link{font-size:.82rem}.page{padding:2.5rem 1.5rem}.hero-name{font-size:2.2rem}.hero-socials{gap:.9rem}.video-grid{gap:1rem}.exp-row{gap:1rem;padding:1rem 0}.exp-role{font-size:.92rem}.exp-company{font-size:.8rem}.exp-desc{font-size:.78rem}.exp-date{font-size:.72rem}.logo-box{width:38px;height:38px;font-size:.88rem}.blog-card{padding:1rem 1.25rem}.blog-card-title{font-size:.92rem}.blog-card-desc{font-size:.8rem}.blog-post-title{font-size:1.6rem}.blog-section-title{font-size:1.05rem}.blog-section-body{font-size:.88rem}.footer-inner{padding:1rem 1.5rem}}@media(max-width:640px){.video-grid{grid-template-columns:1fr;gap:1rem}.hero-name{font-size:1.8rem}.page{padding:2rem 1.25rem}.exp-row{flex-direction:column;gap:.5rem;padding:1rem 0}.exp-date{align-self:flex-start;text-align:left}.exp-info{gap:.15rem}.project-name{font-size:.95rem}.project-desc{font-size:.82rem}.blog-card{padding:.9rem 1rem}.blog-card-header{flex-direction:column;gap:.25rem}.blog-card-title{font-size:.88rem}.blog-card-desc{font-size:.78rem}.blog-post-title{font-size:1.4rem}.blog-post-header{margin-bottom:2rem;padding-bottom:1.25rem}.blog-post-body{gap:1.5rem}.blog-section-title{font-size:.95rem}.blog-section-body{font-size:.85rem}}@media(max-width:480px){.navbar-inner{padding:.85rem 1rem}.nav-links{gap:1rem}.nav-link{font-size:.78rem}.page{padding:1.75rem 1rem}.hero-name{font-size:1.5rem}.project-name{font-size:.88rem}.project-desc{font-size:.78rem}.project-tech{font-size:.65rem}.logo-box{width:34px;height:34px;font-size:.78rem}.blog-back{font-size:.78rem;margin-bottom:1.5rem}.blog-post-title{font-size:1.2rem}.blog-post-header{margin-bottom:1.5rem;padding-bottom:1rem}.blog-post-body{gap:1.25rem}.blog-section-title{font-size:.88rem;margin-bottom:.5rem}.blog-section-body{font-size:.82rem;line-height:1.65}.blog-post-footer{margin-top:2rem;padding-top:1.25rem}.blog-post-source{font-size:.78rem}.footer-inner{padding:.85rem 1rem}}
