@font-face{font-family:Inter var;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/Inter-roman.latin.var.woff2) format("woff2")}@font-face{font-family:Inter var;font-style:italic;font-weight:100 900;font-display:swap;src:url(/fonts/Inter-italic.latin.var.woff2) format("woff2");font-named-instance:"Italic"}:root{--bg-color:#070d0c;--card-bg:#111b19;--card-bg-alt:#16211f;--border-color:#1e2a27;--text-color:#effaf8;--text-secondary:#8fa3a0;--accent:#45a99f;--accent-hover:#5fbcb1;--accent-contrast:#04100e;--accent-soft:rgba(69,169,159,.1);--accent-soft-border:rgba(69,169,159,.3);--accent-glow:rgba(69,169,159,.16);--accent-dim-bg:rgba(69,169,159,.14);--link-color:#45a99f;--link-hover:#5fbcb1;--tag-bg:rgba(69,169,159,.1);--tag-text:#a9d6cf;--status-wip-bg:#422006;--status-wip-text:#fbbf24;--status-archived-bg:#1c1917;--status-archived-text:#a8a29e}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:Inter var,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;-webkit-font-smoothing:subpixel-antialiased;font-feature-settings:"case" 1,"cpsp" 1,"dlig" 1,"cv01" 1,"cv02","cv03" 1,"cv04" 1,"liga","clig","calt";font-variation-settings:"wght" 450;font-variant:common-ligatures contextual;letter-spacing:-.02em;background-color:var(--bg-color);color:var(--text-color);line-height:1.7;transition:background-color .3s,color .3s}@media screen and (-webkit-min-device-pixel-ratio:1.5),screen and (min-device-pixel-ratio:1.5),screen and (min-resolution:1.5dppx){body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}}.container{max-width:800px;margin:0 auto;padding:2rem;min-height:100vh;display:flex;flex-direction:column}.header{margin-bottom:2rem;padding-bottom:1rem;border-bottom:1px solid var(--border-color);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem 1.5rem}.site-title{font-size:1.25rem;font-variation-settings:"wght" 700;color:var(--text-color);text-decoration:none;transition:color .2s;white-space:nowrap}.site-title:hover{color:var(--link-color);text-decoration:none}.nav{display:flex;align-items:center;gap:1.5rem}.nav-link{color:var(--text-secondary);text-decoration:none;font-size:.95rem;transition:color .2s}.nav-link.active,.nav-link:hover{color:var(--text-color)}.theme-toggle{background:none;border:none;cursor:pointer;font-size:1.2rem;padding:.25rem}.main-content{flex:1 1}h1,h2,h3,h4,h5,h6{margin-bottom:1rem;line-height:1.3}h1{font-variation-settings:"wght" 850;font-size:2.5rem;margin-bottom:1.5rem}h2{font-variation-settings:"wght" 750;font-size:1.75rem;margin-top:2rem}h3{font-variation-settings:"wght" 650;font-size:1.25rem}p{margin-bottom:1rem}a{color:var(--link-color);text-decoration:none}strong{font-variation-settings:"wght" 650}hr{border:none;margin:2rem 0}.footer,hr{border-top:1px solid var(--border-color)}.footer{margin-top:3rem;padding-top:1.5rem;color:var(--text-secondary);text-align:center}.footer-icons{display:flex;align-items:center;justify-content:center;gap:1.5rem;margin-bottom:1rem}.footer-icons a{transition:transform .2s,opacity .2s;opacity:.8}.footer-icons a:hover{transform:scale(1.1);opacity:1}.center-icons{display:flex;align-items:center;justify-content:space-evenly;margin-top:2rem;padding:1rem 0}.center-icons a{transition:transform .2s}.center-icons a:hover{transform:scale(1.1)}.page-description{color:var(--text-secondary);margin-bottom:2rem;font-size:1rem;line-height:1.6}.tags-filter{margin-bottom:2rem;padding:1rem;background:var(--card-bg);border-radius:12px;border:1px solid var(--border-color)}.filter-label{color:var(--text-secondary);font-size:.875rem;display:block;margin-bottom:.75rem}.tags-list{display:flex;flex-wrap:wrap;gap:.5rem}.tag-filter{background:var(--tag-bg);color:var(--tag-text);padding:.375rem .875rem;border-radius:20px;font-size:.8rem;border:1px solid transparent;cursor:pointer;transition:all .2s}.tag-filter:hover{color:var(--text-color);border-color:var(--link-color)}.tag-filter.active{background:var(--link-color);color:var(--accent-contrast)}.no-posts{color:var(--text-secondary);text-align:center;padding:2rem}.posts-list{display:flex;flex-direction:column;gap:2rem}.post-card-link{text-decoration:none;display:block}.post-card{padding:1.5rem;background:linear-gradient(135deg,var(--card-bg) 0,var(--card-bg-alt) 100%);border-radius:12px;border:1px solid var(--border-color);transition:all .2s ease;cursor:pointer}.post-card:hover{border-color:var(--link-color);box-shadow:0 4px 20px var(--accent-glow);transform:translateY(-2px)}.post-card h2,.post-card h3{font-size:1.25rem;margin:0 0 .5rem;color:var(--text-color);transition:color .2s ease}.post-card:hover h2,.post-card:hover h3{color:var(--link-color)}.post-date{color:var(--text-secondary);font-size:.875rem}.post-description{color:var(--text-secondary);margin-bottom:.75rem}.post-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.75rem}.tag{background:var(--tag-bg);color:var(--tag-text);padding:.25rem .75rem;border-radius:20px;font-size:.75rem}.tag.clickable{cursor:pointer;transition:all .2s}.tag.clickable:hover{background:var(--link-color);color:var(--accent-contrast)}.read-more{color:var(--link-color);font-size:.875rem}.post-content{max-width:100%}.post-header{margin-bottom:2rem}.post-header h1{margin-bottom:.5rem}.prose{line-height:1.8}.prose img{max-width:100%;height:auto}.prose img,.prose pre{border-radius:8px;margin:1.5rem 0}.prose pre{background:var(--card-bg);padding:1rem;overflow-x:auto}.prose code{background:var(--tag-bg);padding:.2rem .4rem;border-radius:4px;font-size:.9em}.prose pre code{background:none;padding:0}.prose ol,.prose ul{margin:1rem 0;padding-left:1.5rem}.prose li{margin-bottom:.5rem}.prose blockquote{border-left:3px solid var(--link-color);padding-left:1rem;margin:1.5rem 0;color:var(--text-secondary)}.podcast{border-radius:12px}.bleed,.podcast{margin:1.5rem 0}.bleed iframe,.prose iframe{width:100%;aspect-ratio:16/9;height:auto;border-radius:8px;border:none}.share-buttons{display:flex;align-items:center;gap:1rem;margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--border-color)}.share-label{color:var(--text-secondary);font-size:.875rem}.share-icons{display:flex;gap:.5rem}.share-button{background:var(--card-bg);border:1px solid var(--border-color);border-radius:8px;padding:.5rem .75rem;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center}.share-button:hover{background:var(--tag-bg);transform:translateY(-2px)}.share-icon{font-size:1.25rem}.latest-post-section{margin-top:2rem}.section-title{font-size:1rem;margin-bottom:1rem;color:var(--text-secondary);letter-spacing:.05em;font-weight:500}.post-card.compact{padding:1rem 1.25rem}.post-card.compact h3{font-size:1.1rem}.post-card.compact .post-description{font-size:.875rem;margin-bottom:.5rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.post-card.compact .read-more{font-size:.8rem}.project-card.compact{padding:1rem 1.25rem}.project-card.compact h3{font-size:1.1rem;margin:0}.project-card.compact .project-description{font-size:.875rem;margin-bottom:.5rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.activity-date-row{display:flex;align-items:center;gap:.5rem}.activity-badge{display:inline-block;font-size:.65rem;padding:.15rem .5rem;border-radius:20px;font-variation-settings:"wght" 600;text-transform:uppercase;letter-spacing:.04em}.activity-post{background:var(--tag-bg);color:var(--tag-text)}.activity-project{background:var(--accent-dim-bg);color:var(--accent)}.view-all-posts{margin-top:1.5rem;text-align:center}.view-all-link{display:inline-block;padding:.75rem 1.5rem;background-color:transparent;border:1px solid var(--accent);color:var(--accent);border-radius:8px;text-decoration:none;transition:all .2s ease}.view-all-link:hover{background-color:var(--accent);color:var(--accent-contrast)}@media (max-width:640px){.container{padding:1rem}.nav{gap:1.125rem}h1{font-size:2rem}.center-icons{gap:1rem}.latest-post-section{margin-top:2rem}.section-title{font-size:1rem}}.skip-to-content{position:absolute;left:-9999px;top:0;z-index:100;padding:.5rem 1rem;background:var(--link-color);color:var(--accent-contrast);font-variation-settings:"wght" 600;text-decoration:none}.skip-to-content:focus{left:0}:focus-visible{outline:2px solid var(--link-color);outline-offset:2px}.post-meta{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem;font-size:.875rem}.post-meta,.post-meta .separator,.reading-time{color:var(--text-secondary)}.reading-time{font-size:.875rem}.breadcrumb{display:flex;align-items:center;gap:.4rem;font-size:.85rem;margin-bottom:1.5rem;color:var(--text-secondary)}.breadcrumb a{color:var(--link-color);text-decoration:none}.breadcrumb a:hover{text-decoration:underline}.breadcrumb .breadcrumb-current,.breadcrumb .breadcrumb-separator{color:var(--text-secondary)}.not-found{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:4rem 0;gap:1rem}.not-found h1{font-size:5rem;font-variation-settings:"wght" 800;color:var(--text-secondary)}.back-home-link{color:var(--link-color);text-decoration:none;font-variation-settings:"wght" 600;margin-top:1rem}.back-home-link:hover{text-decoration:underline}.projects-grid{display:flex;flex-direction:column;gap:1.5rem}.project-card{padding:1.5rem;background:var(--card-bg);border-radius:12px;border:1px solid var(--border-color);transition:all .2s ease}.project-card:hover{border-color:var(--accent);box-shadow:0 4px 20px var(--accent-glow);transform:translateY(-2px)}.project-card-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.75rem}.project-card h2{font-size:1.25rem;margin:0 0 .75rem;color:var(--text-color);transition:color .2s ease}.project-card:hover h2{color:var(--accent)}.project-description{color:var(--text-secondary);font-size:.95rem;margin-bottom:1rem;line-height:1.6}.project-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.project-tag{background:var(--tag-bg);color:var(--tag-text)}.project-status{font-size:.7rem;padding:.2rem .6rem;border-radius:20px;font-variation-settings:"wght" 600;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap}.status-active{background:var(--accent-dim-bg);color:var(--accent)}.status-wip{background:var(--status-wip-bg);color:var(--status-wip-text)}.status-archived{background:var(--status-archived-bg);color:var(--status-archived-text)}.project-links{display:flex;gap:1.25rem}.project-link{color:var(--text-secondary);text-decoration:none;font-size:.875rem;font-variation-settings:"wght" 600;transition:color .2s}.project-link:hover{color:var(--accent);text-decoration:underline}.project-link.demo{color:var(--link-color)}.project-link.demo:hover{color:var(--link-hover)}.see-more-container{margin-top:.25rem;margin-bottom:.5rem}.see-more-btn{background:none;border:none;color:var(--link-color);font-size:.9rem;font-family:inherit;letter-spacing:-.02em;cursor:pointer;padding:0;transition:opacity .2s}.see-more-btn:hover{opacity:.75;text-decoration:underline}.timeline-section{margin-top:1.25rem}.timeline-container{--tl-work:var(--link-color);--tl-edu:var(--accent)}@keyframes timelineItemIn{0%{opacity:0;transform:translateX(-10px)}to{opacity:1;transform:translateX(0)}}@keyframes timelineDraw{0%{transform:scaleY(0)}to{transform:scaleY(1)}}@keyframes timelineDotIn{0%{opacity:0;transform:scale(0)}60%{transform:scale(1.25)}to{opacity:1;transform:scale(1)}}@keyframes timelinePulse{0%{box-shadow:0 0 0 0 rgba(69,169,159,.45)}70%{box-shadow:0 0 0 7px rgba(69,169,159,0)}to{box-shadow:0 0 0 0 rgba(69,169,159,0)}}.timeline{display:flex;flex-direction:column;position:relative}.timeline:before{content:"";position:absolute;left:calc(.75rem - 1px);top:14px;bottom:14px;width:2px;border-radius:2px;background:linear-gradient(to bottom,var(--tl-work),var(--tl-edu));transform:scaleY(0);transform-origin:top center}.reveal-visible .timeline:before{animation:timelineDraw .7s ease-out .1s forwards}.timeline-item{display:grid;grid-template-columns:1.5rem 1fr;grid-gap:0 .875rem;gap:0 .875rem;margin-bottom:1rem;position:relative;opacity:0}.reveal-visible .timeline-item{animation:timelineItemIn .5s ease-out forwards;animation-delay:calc(var(--index, 0) * .1s + .25s)}.timeline-dot-col{display:flex;justify-content:center;padding-top:.5rem}.timeline-dot{width:13px;height:13px;border-radius:50%;border:2.5px solid var(--border-color);background:var(--bg-color);flex-shrink:0;position:relative;z-index:1;opacity:0;transform-origin:center;transition:box-shadow .2s ease}.reveal-visible .timeline-dot{animation:timelineDotIn .45s cubic-bezier(.34,1.56,.64,1) forwards;animation-delay:calc(var(--index, 0) * .1s + .3s)}.timeline-item.timeline-work .timeline-dot{border-color:var(--tl-work);background:color-mix(in srgb,var(--tl-work) 22%,var(--bg-color))}.timeline-item.timeline-education .timeline-dot{border-color:var(--tl-edu);background:color-mix(in srgb,var(--tl-edu) 22%,var(--bg-color))}.timeline-item.timeline-education:hover .timeline-dot,.timeline-item.timeline-work:hover .timeline-dot{box-shadow:0 0 0 4px var(--accent-glow)}.timeline-item.timeline-current .timeline-dot{border-color:var(--tl-edu);background:var(--tl-edu)}.timeline-item.timeline-current .timeline-dot:after{content:"";position:absolute;inset:-2.5px;border-radius:50%;animation:timelinePulse 2.2s ease-out 1.2s infinite}.timeline-content{background:var(--card-bg);border:1px solid var(--border-color);border-radius:10px;padding:.875rem 1.125rem;transition:border-color .2s}.timeline-item.timeline-work .timeline-content:hover{border-color:var(--link-color)}.timeline-item.timeline-education .timeline-content:hover{border-color:var(--accent)}.timeline-type-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.07em;color:var(--text-secondary);font-variation-settings:"wght" 600}.timeline-header{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;margin-top:.2rem}.timeline-title{font-size:.975rem;font-variation-settings:"wght" 650;color:var(--text-color);margin:0;line-height:1.3}.timeline-current-badge{font-size:.62rem;padding:.1rem .5rem;border-radius:20px;background:var(--accent-dim-bg);color:var(--accent);font-variation-settings:"wght" 700;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;flex-shrink:0}.timeline-company{font-size:.875rem;color:var(--link-color);margin:.1rem 0 0}.timeline-period{font-size:.78rem;color:var(--text-secondary);margin:.1rem 0 0}.timeline-description{font-size:.85rem;color:var(--text-secondary);margin:.5rem 0 0;line-height:1.6}.timeline-certifications{margin-top:1.25rem;padding-top:1.25rem;border-top:1px solid var(--border-color)}.timeline-section-heading{font-size:.72rem;text-transform:uppercase;letter-spacing:.07em;color:var(--text-secondary);font-variation-settings:"wght" 600;margin-bottom:.75rem}.certifications-grid{display:flex;flex-wrap:wrap;gap:.5rem}.certification-item{background:var(--card-bg);border:1px solid var(--border-color);border-radius:8px;padding:.35rem .7rem;display:flex;flex-direction:column;gap:.05rem;opacity:0;transition:border-color .2s ease,box-shadow .2s ease}.reveal-visible .certification-item{animation:timelineItemIn .45s ease-out forwards;animation-delay:calc(var(--index, 0) * .05s + .35s)}.certification-item:hover{border-color:var(--link-color);box-shadow:0 0 0 3px var(--accent-glow)}.reveal{opacity:0}.reveal.reveal-visible{opacity:1;animation:revealIn .65s cubic-bezier(.22,.61,.36,1) backwards;animation-delay:var(--reveal-delay,0s)}@keyframes revealIn{0%{opacity:0;transform:translateY(20px)}}.scroll-hint{position:fixed;left:50%;bottom:1.75rem;transform:translateX(-50%);color:var(--text-secondary);opacity:0;pointer-events:none;transition:opacity .5s ease;z-index:10}.scroll-hint-visible{opacity:.8;animation:scrollHintBounce 1.8s ease-in-out infinite}@keyframes scrollHintBounce{0%,to{transform:translateX(-50%) translateY(0)}50%{transform:translateX(-50%) translateY(6px)}}@media (prefers-reduced-motion:reduce){.scroll-hint-visible{animation:none}html{scroll-behavior:auto}.reveal,.reveal.reveal-visible{opacity:1;animation:none}.certification-item,.reveal-visible .certification-item,.reveal-visible .timeline-dot,.reveal-visible .timeline-item,.reveal-visible .timeline:before,.timeline-dot,.timeline-item,.timeline-item.timeline-current .timeline-dot:after,.timeline:before{animation:none;opacity:1;transform:none}}.cert-name{font-size:.78rem;color:var(--text-color);line-height:1.3}.cert-issuer{font-size:.68rem;color:var(--text-secondary)}@media (max-width:640px){.timeline-item{gap:0 .625rem}}.hero-section{padding:3.5rem 0 1rem;margin-bottom:.5rem}.available-badge{display:inline-block;background:var(--accent-soft);border:1px solid var(--accent-soft-border);color:var(--link-color);padding:.35rem 1rem;border-radius:20px;font-size:.8rem;margin-bottom:1.5rem}.hero-title{font-size:clamp(1.75rem,6vw,3.25rem);font-variation-settings:"wght" 850;margin-bottom:.5rem;line-height:1.15}.hero-name{color:var(--accent)}.hero-role{font-size:clamp(.95rem,2.5vw,1.15rem);color:var(--text-secondary);margin-bottom:1.25rem;font-variation-settings:"wght" 500}.hero-description{max-width:620px;margin:0 0 2rem;color:var(--text-secondary);line-height:1.75;font-size:clamp(.95rem,2vw,1.05rem)}.hero-actions{display:flex;gap:1rem;flex-wrap:wrap}.btn-primary{display:inline-block;padding:.75rem 1.75rem;background:var(--accent);border-radius:8px;font-variation-settings:"wght" 650;transition:background .2s,color .2s}.btn-primary,.btn-primary:hover{color:var(--accent-contrast);text-decoration:none}.btn-primary:hover{background:var(--accent-hover)}.btn-secondary{display:inline-block;padding:.75rem 1.75rem;background:transparent;color:var(--text-color);border:1px solid var(--border-color);border-radius:8px;text-decoration:none;font-variation-settings:"wght" 650;transition:border-color .2s,color .2s}.btn-secondary:hover{border-color:var(--accent);color:var(--accent);text-decoration:none}.home-section{margin-top:3rem;padding-top:2.5rem;border-top:1px solid var(--border-color)}.section-heading{font-size:1.6rem;font-variation-settings:"wght" 750;margin-bottom:1.25rem;color:var(--text-color)}.about-text{color:var(--text-secondary);line-height:1.75;margin-bottom:.75rem}.section-subtitle{color:var(--text-secondary);font-size:.95rem;margin-top:-.5rem;margin-bottom:1.5rem}.skills-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));grid-gap:1rem;gap:1rem}.skill-card{background:var(--card-bg);border:1px solid var(--border-color);border-radius:12px;padding:1.25rem;transition:border-color .2s}.skill-card:hover{border-color:var(--accent)}.skill-card-label{font-variation-settings:"wght" 650;font-size:.875rem;color:var(--text-color);margin-bottom:.75rem}.skill-tags{display:flex;flex-wrap:wrap;gap:.4rem}.home-projects-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));grid-gap:1rem;gap:1rem;margin-bottom:1.5rem}.home-project-card{background:var(--card-bg);border:1px solid var(--border-color);border-radius:12px;padding:1.25rem;display:flex;flex-direction:column;gap:.75rem;transition:border-color .2s,transform .2s}.home-project-card:hover{border-color:var(--accent);box-shadow:0 4px 20px var(--accent-glow);transform:translateY(-2px)}.home-project-title{font-size:1rem;font-variation-settings:"wght" 650;color:var(--text-color);margin:0}.home-project-description{font-size:.85rem;color:var(--text-secondary);margin:0;line-height:1.6;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;flex:1 1}.home-project-tags{display:flex;flex-wrap:wrap;gap:.4rem}.home-project-links{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:auto}.project-link-btn{font-size:.8rem;color:var(--accent);border:1px solid var(--border-color);border-radius:6px;padding:.25rem .75rem;text-decoration:none;transition:border-color .2s,background .2s}.project-link-btn:hover{border-color:var(--accent);background:var(--accent-soft)}.contact-social-row{display:flex;flex-wrap:wrap;gap:1.5rem;margin-top:1.25rem}.contact-social-link{display:flex;align-items:center;gap:.625rem;color:var(--text-color);text-decoration:none;font-size:.9rem;transition:color .2s}.contact-social-link:hover{color:var(--accent)}@media (max-width:640px){.hero-section{padding:2rem 0 .5rem}.hero-actions{flex-direction:column;align-items:stretch}.btn-primary,.btn-secondary{width:100%;max-width:280px;text-align:center}.home-projects-grid,.skills-grid{grid-template-columns:1fr}}