@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap");:root{--color-background:#FAF4ED;--color-text:#575279;--color-primary:#56949F;--color-secondary:#D7827E;--color-accent:#907AA9;--color-error:#B4637A;--color-warning:#EA9D34;--color-success:#286983;--color-surface:#9893A5;--color-overlay:#F2E9E1;--color-muted:#9893A5;--color-subtle:#575279;--color-border:#9893A5;--color-text-light:#575279;--color-background-light:#F2E9E1;--color-card-background:#FAF4ED;--color-cursor:#575279;--color-selection:#DFDAD9;}.theme-light{--color-background:#FAF4ED;--color-text:#575279;--color-primary:#56949F;--color-secondary:#D7827E;--color-accent:#907AA9;--color-error:#B4637A;--color-warning:#EA9D34;--color-success:#286983;--color-surface:#9893A5;--color-overlay:#F2E9E1;--color-muted:#9893A5;--color-subtle:#575279;--color-border:#9893A5;--color-text-light:#575279;--color-background-light:#F2E9E1;--color-card-background:#FAF4ED;--color-cursor:#575279;--color-selection:#DFDAD9;}.theme-dark{--color-background:#232136;--color-text:#E0DEF4;--color-primary:#9CCFD8;--color-secondary:#EA9A97;--color-accent:#C4A7E7;--color-error:#EB6F92;--color-warning:#F6C177;--color-success:#3E8FB0;--color-surface:#6E6A86;--color-overlay:#393552;--color-muted:#6E6A86;--color-subtle:#E0DEF4;--color-border:#6E6A86;--color-text-light:#E0DEF4;--color-background-light:#393552;--color-card-background:#232136;--color-cursor:#E0DEF4;--color-selection:#44415A;}:root{--color-card-background:var(--color-background) !important;--color-background-light:var(--color-overlay) !important;--spacing-xs:0.25rem;--spacing-sm:0.5rem;--spacing-md:1rem;--spacing-lg:1.5rem;--spacing-xl:2rem;--spacing-xxl:3rem;--font-family-primary:"Inter",-apple-system,blinkmacsystemfont,"Segoe UI",roboto,oxygen,ubuntu,cantarell,"Open Sans","Helvetica Neue",sans-serif;--font-size-xs:0.75rem;--font-size-sm:0.875rem;--font-size-md:1rem;--font-size-lg:1.25rem;--font-size-xl:1.5rem;--font-size-xxl:2rem;--font-size-xxxl:2.5rem;--border-radius-sm:0.25rem;--border-radius-md:0.5rem;--border-radius-lg:1rem;--border-radius-full:9999px;--transition-fast:0.2s ease;--transition-medium:0.3s ease;--transition-slow:0.5s ease;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--shadow-sm:0 1px 2px rgba(0,0,0,0.05);--shadow-md:0 4px 6px rgba(0,0,0,0.1);--shadow-lg:0 10px 15px rgba(0,0,0,0.1);}*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}html,body,h1,h2,h3,h4,h5,h6,p,ul,ol,li,figure,figcaption,blockquote,dl,dd{margin:0;padding:0;}body{min-height:100vh;scroll-behavior:smooth;text-rendering:optimizeSpeed;line-height:1.6;font-family:var(--font-family-primary);color:var(--color-text);background-color:var(--color-background);}img{max-width:100%;display:block;}input,button,textarea,select{font:inherit;}ul,ol{list-style:none;}a{text-decoration:none;color:var(--color-primary);transition:color var(--transition-fast);}a:hover{color:var(--color-secondary);}@media (prefers-reduced-motion:reduce){*{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important;}} :focus{outline:2px solid var(--color-primary);outline-offset:2px;}button:focus,a:focus,input:focus,select:focus,textarea:focus,.btn:focus,.social-link:focus,.theme-switch:focus,[role="button"]:focus,[tabindex]:focus{outline:2px solid var(--color-primary);outline-offset:2px;box-shadow:0 0 0 4px var(--color-background-light);}@media (prefers-contrast:more){:focus{outline:3px solid black;outline-offset:3px;}button:focus,a:focus,input:focus,select:focus,textarea:focus,.btn:focus,.social-link:focus,.theme-switch:focus,[role="button"]:focus,[tabindex]:focus{outline:3px solid black;outline-offset:3px;box-shadow:0 0 0 6px rgba(0,0,0,0.3);}} .skip-link{position:absolute;top:-40px;left:0;background:var(--color-primary);color:white;padding:12px 20px;z-index:100;transition:top 0.3s ease;text-decoration:none;font-weight:600;border-radius:0 0 4px 0;box-shadow:var(--shadow-md);outline:none;}.skip-link:focus{top:0;outline:2px solid white;outline-offset:2px;}.skip-link-secondary{position:absolute;top:-40px;left:120px;background:var(--color-secondary);color:white;padding:12px 20px;z-index:100;transition:top 0.3s ease;text-decoration:none;font-weight:600;border-radius:0 0 4px 0;box-shadow:var(--shadow-md);outline:none;}.skip-link-secondary:focus{top:0;outline:2px solid white;outline-offset:2px;}.container{width:90%;max-width:1200px;margin:0 auto;padding:0 var(--spacing-md);}.container-full{width:100%;max-width:100%;margin:0 auto;padding:0 var(--spacing-md);}.grid{display:grid;gap:var(--spacing-md);}.grid-2-cols{grid-template-columns:repeat(1,1fr);}.grid-3-cols{grid-template-columns:repeat(1,1fr);}.grid-4-cols{grid-template-columns:repeat(1,1fr);}@media (width >= 768px){.grid-2-cols{grid-template-columns:repeat(2,1fr);}.grid-3-cols{grid-template-columns:repeat(2,1fr);}.grid-4-cols{grid-template-columns:repeat(2,1fr);}} @media (width >= 1024px){.grid-3-cols{grid-template-columns:repeat(3,1fr);}.grid-4-cols{grid-template-columns:repeat(4,1fr);}} .flex{display:flex;}.flex-center{justify-content:center;align-items:center;}.flex-between{justify-content:space-between;align-items:center;}.flex-column{flex-direction:column;}.flex-wrap{flex-wrap:wrap;}.flex-gap-sm{gap:var(--spacing-sm);}.flex-gap-md{gap:var(--spacing-md);}.flex-gap-lg{gap:var(--spacing-lg);}main{padding:var(--spacing-xxl) 0;min-height:calc(100vh - 200px);}.section{padding:var(--spacing-xxl) 0;}.section-alt{background-color:var(--color-background-light);}.cv-container{width:90%;max-width:1200px;margin:var(--spacing-xxl) auto;padding:var(--spacing-xxl) var(--spacing-xxl);background-color:var(--color-background-light);box-shadow:var(--shadow-lg);border-radius:var(--border-radius-md);}.cv-section{margin-bottom:var(--spacing-xxl);padding-bottom:var(--spacing-xl);border-bottom:1px solid var(--color-border);}.cv-section:last-child{margin-bottom:0;border-bottom:none;}.skills-grid{display:grid;grid-template-columns:repeat(1,1fr);gap:var(--spacing-lg);}@media (width >= 768px){.skills-grid{grid-template-columns:repeat(2,1fr);}} .item-header{display:flex;flex-direction:column;margin-bottom:var(--spacing-md);}@media (width >= 768px){.item-header{flex-direction:row;justify-content:space-between;align-items:flex-start;}} .item-date{font-weight:500;color:var(--color-text-light);margin-top:var(--spacing-xs);}@media (width >= 768px){.item-date{margin-top:0;text-align:right;}} .blog-grid{display:grid;grid-template-columns:repeat(1,1fr);gap:var(--spacing-lg);}@media (width >= 768px){.blog-grid{grid-template-columns:repeat(2,1fr);}} @media (width >= 1024px){.blog-grid{grid-template-columns:repeat(3,1fr);}} .profile-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:2rem;}.profile-info{text-align:left;flex:1;}.profile-info h1{font-size:2.8rem;margin-bottom:0.5rem;letter-spacing:-0.02em;}.profile-info .tagline{font-size:1.4rem;color:var(--color-primary);margin-bottom:1rem;font-weight:500;}.profile-info p{font-size:1.05rem;line-height:1.7;}.profile-image{margin-left:2.5rem;}.profile-image img{width:160px;height:160px;border-radius:50%;object-fit:cover;border:3px solid var(--color-primary);transition:border-color 0.3s ease;box-shadow:0 4px 12px rgba(0,0,0,0.1);}.projects-grid{display:grid;grid-template-columns:repeat(1,1fr);gap:var(--spacing-xxl);grid-auto-rows:1fr;padding:var(--spacing-xl) 0;}.projects-grid-full-width{grid-template-columns:1fr !important;}.projects-grid-full-width .github-card{max-width:none;}@media (width >= 768px){.projects-grid{grid-template-columns:repeat(2,1fr);}} @media (width >= 1024px){.projects-grid{grid-template-columns:repeat(3,1fr);}} .btn{display:inline-block;padding:var(--spacing-sm) var(--spacing-lg);border-radius:var(--border-radius-md);font-weight:500;text-align:center;cursor:pointer;transition:all var(--transition-medium);border:none;text-decoration:none;}.btn-primary{background-color:var(--color-primary);color:#fff;box-shadow:0 2px 4px rgb(0 0 0 / 10%);}.btn-primary:hover{background-color:var(--color-secondary);color:#fff;}.btn-secondary{background-color:var(--color-background-light);border:2px solid var(--color-primary);color:var(--color-primary);box-shadow:0 2px 4px rgb(0 0 0 / 5%);}.btn-secondary:hover{background-color:var(--color-primary);color:#fff;box-shadow:0 2px 6px rgb(0 0 0 / 10%);}.btn-ghost{background-color:transparent;color:var(--color-primary);padding:var(--spacing-xs) var(--spacing-sm);border-bottom:1px solid var(--color-primary);transition:all var(--transition-medium);}.btn-ghost:hover{color:var(--color-secondary);border-bottom-color:var(--color-secondary);text-decoration:none;}.btn-small{font-size:var(--font-size-sm);padding:var(--spacing-xs) var(--spacing-sm);}.btn-large{font-size:var(--font-size-lg);padding:var(--spacing-md) var(--spacing-xl);}.btn-icon{display:inline-flex;align-items:center;gap:var(--spacing-sm);}.btn-icon i{font-size:1.2em;}.floating-btn{position:fixed;bottom:var(--spacing-xl);right:var(--spacing-xl);border-radius:var(--border-radius-full);width:56px;height:56px;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 8px rgb(0 0 0 / 20%);z-index:100;}.download-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);background-color:var(--color-primary);color:#fff;padding:var(--spacing-sm) var(--spacing-lg);border-radius:var(--border-radius-md);text-decoration:none;font-weight:500;transition:all var(--transition-medium);box-shadow:0 2px 4px rgb(0 0 0 / 10%);white-space:nowrap;min-width:160px;}.download-btn:hover{background-color:var(--color-secondary);transform:translateY(-2px);box-shadow:0 4px 8px rgb(0 0 0 / 15%);}.download-btn i{font-size:1.2em;}.cv-download-section{margin-top:var(--spacing-lg);padding-top:var(--spacing-md);border-top:1px solid var(--color-border-light);}.btn--download{display:inline-flex;align-items:center;gap:var(--spacing-sm);font-weight:600;transition:all 0.3s ease;}.btn--download:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,0.15);}.btn--download i{font-size:1.1em;}@media (width <= 480px){.download-btn{padding:var(--spacing-sm) var(--spacing-md);min-width:auto;width:100%;}.cv-download-section{text-align:center;}.btn--download{width:100%;justify-content:center;}} nav{display:flex;align-items:center;justify-content:space-between;}nav ul{display:flex;list-style:none;margin:0;padding:0;gap:var(--spacing-md);}nav ul li{margin:0;padding:0;}nav ul li a{color:var(--color-text);text-decoration:none;font-weight:500;padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--border-radius-sm);transition:all 0.3s ease;}nav ul li a:hover{color:var(--color-primary);background-color:var(--color-background-light);}nav ul li a.active{color:var(--color-primary);background-color:var(--color-background-light);font-weight:600;position:relative;}nav ul li a.active::after{content:"";position:absolute;bottom:-2px;left:0;width:100%;height:2px;background-color:var(--color-primary);border-radius:var(--border-radius-sm);}@media (max-width:768px){nav{flex-direction:column;align-items:flex-start;}nav ul{flex-direction:column;width:100%;gap:var(--spacing-sm);}nav ul li{width:100%;}nav ul li a{display:block;padding:var(--spacing-sm) var(--spacing-md);width:100%;border-radius:var(--border-radius-md);}nav ul li a:hover,nav ul li a:focus{background-color:var(--color-background-light);opacity:0.9;}nav ul li a.active::after{display:none;}nav ul li a.active{background-color:var(--color-background-light);color:var(--color-primary);font-weight:600;}.theme-switch-wrapper{margin-left:0;margin-top:var(--spacing-md);align-self:center;}} .github-card{background-color:var(--color-card-background);border-radius:12px;box-shadow:var(--shadow-md);margin-bottom:var(--spacing-lg);overflow:hidden;transition:transform 0.3s ease,box-shadow 0.3s ease;display:flex;flex-direction:column;height:100%;}.github-card:hover{transform:translateY(-5px);box-shadow:var(--shadow-lg);}.card-header{display:flex;justify-content:space-between;align-items:center;background-color:var(--color-primary);color:white;padding:20px 24px;transition:background-color 0.3s ease;}.github-card .card-header.rust,.github-card .card-header.javascript,.github-card .card-header.js,.github-card .card-header.swift{background-color:var(--color-warning) !important;}.card-header.typescript,.card-header.ts,.card-header.java,.card-header.cpp,.card-header.go,.card-header.golang,.card-header.dart,.card-header.perl,.card-header.lua{background-color:var(--color-primary) !important;}.github-card .card-header.scala,.github-card .card-header.csharp,.github-card .card-header.php,.github-card .card-header.kotlin,.github-card .card-header.kt,.github-card .card-header.elixir,.github-card .card-header.ex,.github-card .card-header.haskell,.github-card .card-header.hs{background-color:var(--color-error) !important;}.card-header.python,.card-header.py,.card-header.c,.card-header.clojure,.card-header.clj,.card-header.shell,.card-header.bash,.card-header.sh{background-color:var(--color-success) !important;}.card-header.ruby,.card-header.rb{background-color:var(--color-error) !important;}.card-header.html,.card-header.css{background-color:var(--color-secondary) !important;}.card-header.unknown,.card-header.other{background-color:var(--color-surface) !important;}.card-content{padding:24px;flex-grow:1;display:flex;flex-direction:column;}.repo-description{padding:16px 24px;color:var(--color-text);line-height:1.6;flex-grow:1;min-height:60px;}.project-title{font-size:1.4rem;font-weight:600;margin-bottom:0.75rem;color:var(--color-text);display:flex;align-items:center;gap:0.5rem;}.project-title a{color:inherit;text-decoration:none;transition:color 0.3s ease;}.project-title a:hover{color:var(--color-primary);text-decoration:underline;}.project-subtitle{font-size:1rem;color:var(--color-text-light);margin-bottom:1rem;}.project-description{color:var(--color-text);line-height:1.8;margin-bottom:1.5rem;flex-grow:1;}.project-links{display:flex;gap:1rem;margin-bottom:1rem;}.project-link{color:var(--color-primary);text-decoration:none;font-weight:500;transition:color 0.3s ease;}.project-link:hover{color:var(--color-secondary);text-decoration:underline;}.technologies{display:none;}.project-stats{display:flex;gap:2rem;margin-top:auto;padding-top:1rem;}.stat{display:flex;align-items:center;gap:0.5rem;color:var(--color-text-light);font-size:0.9rem;}.stat-icon{color:var(--color-primary);}.stars{display:flex;align-items:center;font-weight:500;color:white;}.stars i{margin-right:4px;}.rust-icon::before,.scala-icon::before,.python-icon::before,.javascript-icon::before,.typescript-icon::before,.go-icon::before,.java-icon::before,.ruby-icon::before,.php-icon::before,.csharp-icon::before{margin-right:0.5rem;font-family:"JetBrainsMono Nerd Font","FiraCode Nerd Font",monospace;font-size:1.2em;}.card-footer{padding:16px 24px;background-color:var(--color-background-light);border-top:1px solid var(--color-border);display:flex;justify-content:space-between;align-items:center;margin-top:auto;}.owner-section{display:flex;align-items:center;gap:12px;}.avatar{width:32px;height:32px;border-radius:50%;object-fit:cover;}.owner-info{display:flex;flex-direction:column;}.owner-name{font-weight:500;color:var(--color-text);font-size:0.9rem;}.owner-link{color:var(--color-text-light);text-decoration:none;font-size:0.85rem;transition:color 0.3s ease;}.owner-link:hover{color:var(--color-primary);}@media (max-width:1024px){.projects-grid{grid-template-columns:repeat(2,1fr);}} @media (max-width:768px){.projects-grid{grid-template-columns:1fr;}.github-card{margin-bottom:var(--spacing-md);}.project-title{font-size:1.2rem;}.project-stats{gap:1rem;}} .social-links{display:flex;justify-content:center;gap:1rem;margin-top:1rem;}.social-link{display:inline-flex;align-items:center;gap:0.5rem;padding:0.5rem 1rem;background-color:var(--color-background-light);border-radius:4px;transition:background-color 0.3s ease;}.social-link:hover{background-color:var(--color-border);}.cv-header-section .social-links{display:flex;justify-content:center;gap:1.5rem;margin-bottom:2.5rem;}.cv-header-section .social-link{display:inline-flex;align-items:center;gap:0.6rem;padding:0.6rem 1.2rem;background-color:var(--color-background-light);border-radius:6px;transition:all 0.3s ease;font-weight:500;font-size:1.05rem;}.footer-social .social-links{display:flex;gap:1rem;}.footer-social .social-link{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background-color:var(--color-background-light);border-radius:50%;transition:background-color 0.3s ease,transform 0.3s ease;}.cv-header-section .social-link:hover{background-color:var(--color-primary);color:white;transform:translateY(-2px);}.footer-social .social-link:hover{background-color:var(--color-accent);color:white;transform:translateY(-3px);}header{background-color:var(--color-background);padding:1rem 0;box-shadow:var(--shadow-sm);transition:background-color 0.3s ease;}header .container{display:flex;flex-direction:column;width:100%;}.header-top{display:flex;justify-content:space-between;align-items:center;width:100%;}.mobile-menu-toggle{display:none;background:none;border:none;cursor:pointer;padding:0.5rem;z-index:10;}.mobile-menu-toggle .bar{display:block;width:24px;height:3px;margin:5px 0;background-color:var(--color-text);transition:var(--transition-medium);border-radius:var(--border-radius-sm);}.mobile-menu-toggle[aria-expanded="true"] .bar:nth-child(1){transform:rotate(45deg) translate(5px,5px);}.mobile-menu-toggle[aria-expanded="true"] .bar:nth-child(2){opacity:0;}.mobile-menu-toggle[aria-expanded="true"] .bar:nth-child(3){transform:rotate(-45deg) translate(7px,-7px);}.mobile-menu-toggle:focus{outline:2px solid var(--color-primary);outline-offset:2px;}header h1{margin-bottom:0;font-size:1.5rem;}.logo-container{display:flex;align-items:center;}.logo{text-decoration:none;color:var(--color-text);display:flex;align-items:center;}.logo h1{font-size:1.8rem;transition:color 0.3s ease;}.logo:hover h1{color:var(--color-accent);}.theme-switch-wrapper{display:flex;align-items:center;margin-left:1.5rem;gap:0.75rem;}.theme-switch,.contrast-switch{display:inline-block;height:24px;position:relative;width:48px;cursor:pointer;border:none;background:none;padding:0;transition:all 0.3s ease;}.slider{background-color:var(--color-muted);bottom:0;cursor:pointer;left:0;position:absolute;right:0;top:0;transition:.4s;border-radius:24px;box-shadow:inset 0 0 2px rgba(0,0,0,0.1);}.slider:before{background-color:var(--color-surface);bottom:4px;content:"";height:16px;left:4px;position:absolute;transition:.4s;width:16px;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,0.2);}.theme-switch.active .slider,.theme-switch[aria-pressed="true"] .slider{background-color:var(--color-accent);}.theme-switch.active .slider:before,.theme-switch[aria-pressed="true"] .slider:before{transform:translateX(24px);}.contrast-switch.active .slider,.contrast-switch[aria-pressed="true"] .slider{background-color:var(--color-error);}.contrast-switch.active .slider:before,.contrast-switch[aria-pressed="true"] .slider:before{transform:translateX(24px);}.contrast-switch .slider{background-color:var(--color-muted);}.contrast-switch .theme-icon{position:absolute;right:-24px;top:50%;transform:translateY(-50%);font-size:1.2rem;}.theme-switch:focus,.contrast-switch:focus{outline:none;}.theme-switch:focus .slider,.contrast-switch:focus .slider{box-shadow:0 0 0 2px var(--color-accent);}.theme-icons{display:flex;align-items:center;margin-left:0.5rem;}.theme-icon{font-size:1rem;color:var(--color-text-light);}@media (min-width:769px){nav#main-navigation{max-height:none !important;opacity:1 !important;visibility:visible !important;overflow:visible !important;display:flex !important;}} @media (max-width:768px){.mobile-menu-toggle{display:block;}header .container{flex-direction:column;align-items:flex-start;}nav#main-navigation{width:100%;max-height:0;overflow:hidden;transition:max-height var(--transition-medium);opacity:0;visibility:hidden;margin-top:1rem;}nav#main-navigation.active{max-height:400px;opacity:1;visibility:visible;margin-top:1rem;}.theme-switch-wrapper{margin-left:0;margin-top:1rem;}} footer{background-color:var(--color-background-light);padding:3rem 0 1.5rem;border-top:1px solid var(--color-border);transition:background-color 0.3s ease;}.footer-content{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:2rem;margin-bottom:2rem;}.footer-nav h3,.footer-social h3,.footer-tech h3{margin-bottom:1rem;font-size:1.2rem;}.footer-nav ul{list-style:none;}.footer-nav ul li{margin-bottom:0.5rem;}.footer-nav ul li a{color:var(--color-text-light);transition:color 0.3s ease;}.footer-nav ul li a:hover{color:var(--color-accent);}.footer-social .social-links{display:flex;gap:1rem;}.footer-social .social-link{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background-color:var(--color-background-light);border-radius:50%;transition:background-color 0.3s ease,transform 0.3s ease;}.footer-social .social-link:hover{background-color:var(--color-accent);color:white;transform:translateY(-3px);}.footer-tech .tech-list{list-style:none;}.footer-tech .tech-list li{margin-bottom:0.8rem;display:flex;align-items:center;gap:0.5rem;color:var(--color-text-light);}.footer-tech .tech-list li i{color:var(--color-accent);font-size:1.1rem;width:1.5rem;text-align:center;}.accordion-header{cursor:pointer;display:flex;align-items:center;font-weight:500;transition:color 0.3s ease;}.accordion-header:hover{color:var(--color-primary);}.accordion-icon{margin-left:8px;transition:transform 0.3s ease;font-size:0.8rem;}.accordion-header.active .accordion-icon{transform:rotate(180deg);}.accordion-content{max-height:0;overflow:hidden;transition:max-height 0.3s ease;padding-left:0;margin:0;list-style:none;}.accordion-content.active{max-height:500px;}.footer-bottom{text-align:center;padding-top:1.5rem;border-top:1px solid var(--color-border);color:var(--color-text-light);}@media (max-width:768px){.footer-content{grid-template-columns:1fr;}.footer-social,.footer-tech{margin-top:1.5rem;}} @import "components/blog.css";@font-face{font-family:"0xProto Nerd Font";src:local("0xProto Nerd Font Regular"),local("0xProtoNerdFont-Regular"),url("../fonts/0xProto/0xProtoNerdFont-Regular.ttf") format("truetype");font-weight:normal;font-style:normal;font-display:swap;}@font-face{font-family:"0xProto Nerd Font";src:local("0xProto Nerd Font Bold"),local("0xProtoNerdFont-Bold"),url("../fonts/0xProto/0xProtoNerdFont-Bold.ttf") format("truetype");font-weight:bold;font-style:normal;font-display:swap;}@font-face{font-family:"0xProto Nerd Font";src:local("0xProto Nerd Font Italic"),local("0xProtoNerdFont-Italic"),url("../fonts/0xProto/0xProtoNerdFont-Italic.ttf") format("truetype");font-weight:normal;font-style:italic;font-display:swap;}[class$="-icon"]{font-family:"0xProto Nerd Font",monospace !important;font-weight:normal;font-style:normal;font-size:1.2em;line-height:1;display:inline-block;vertical-align:middle;margin-right:0.2em;opacity:1;text-shadow:0 0 1px rgba(0,0,0,0.2);color:inherit;}.nf{font-family:"0xProto Nerd Font",monospace;font-weight:normal;font-style:normal;display:inline-block;text-rendering:auto;line-height:1;vertical-align:middle;color:inherit;}.nf-star::before{content:"★";}.nf-github::before{content:"󰊤";}.nf-external-link::before{content:"󰏌";}.nf-grid::before{content:"󰕰";}.nf-arrow-right::before{content:"→";}.nf-arrow-up::before{content:"↑";}.nf-download::before{content:"󰇚";}.nf-sun::before{content:"☀";}.nf-moon::before{content:"󰖔";}.nf-rust::before{content:"󱘗";}.nf-file-pdf::before{content:"󰈦";}.nf-box::before{content:"󰏖";}.nf-cube::before{content:"󰆧";}.nf-chevron-down::before{content:"󰅀";}.nf-refresh::before{content:"󰑐";}.nf-linkedin::before{content:"󰌻";}.nf-twitter::before{content:"󰕄";}.nf-facebook::before{content:"󰈌";}.nf-instagram::before{content:"󰋾";}.nf-youtube::before{content:"󰗃";}.nf-gitlab::before{content:"󰮠";}.nf-bitbucket::before{content:"󰂨";}.mt-0{margin-top:0;}.mt-1{margin-top:var(--spacing-xs);}.mt-2{margin-top:var(--spacing-sm);}.mt-3{margin-top:var(--spacing-md);}.mt-4{margin-top:var(--spacing-lg);}.mt-5{margin-top:var(--spacing-xl);}.mb-0{margin-bottom:0;}.mb-1{margin-bottom:var(--spacing-xs);}.mb-2{margin-bottom:var(--spacing-sm);}.mb-3{margin-bottom:var(--spacing-md);}.mb-4{margin-bottom:var(--spacing-lg);}.mb-5{margin-bottom:var(--spacing-xl);}.ml-0{margin-left:0;}.ml-1{margin-left:var(--spacing-xs);}.ml-2{margin-left:var(--spacing-sm);}.ml-3{margin-left:var(--spacing-md);}.ml-4{margin-left:var(--spacing-lg);}.ml-5{margin-left:var(--spacing-xl);}.mr-0{margin-right:0;}.mr-1{margin-right:var(--spacing-xs);}.mr-2{margin-right:var(--spacing-sm);}.mr-3{margin-right:var(--spacing-md);}.mr-4{margin-right:var(--spacing-lg);}.mr-5{margin-right:var(--spacing-xl);}.mx-0{margin-left:0;margin-right:0;}.mx-1{margin-left:var(--spacing-xs);margin-right:var(--spacing-xs);}.mx-2{margin-left:var(--spacing-sm);margin-right:var(--spacing-sm);}.mx-3{margin-left:var(--spacing-md);margin-right:var(--spacing-md);}.mx-4{margin-left:var(--spacing-lg);margin-right:var(--spacing-lg);}.mx-5{margin-left:var(--spacing-xl);margin-right:var(--spacing-xl);}.my-0{margin-top:0;margin-bottom:0;}.my-1{margin-top:var(--spacing-xs);margin-bottom:var(--spacing-xs);}.my-2{margin-top:var(--spacing-sm);margin-bottom:var(--spacing-sm);}.my-3{margin-top:var(--spacing-md);margin-bottom:var(--spacing-md);}.my-4{margin-top:var(--spacing-lg);margin-bottom:var(--spacing-lg);}.my-5{margin-top:var(--spacing-xl);margin-bottom:var(--spacing-xl);}.m-0{margin:0;}.m-1{margin:var(--spacing-xs);}.m-2{margin:var(--spacing-sm);}.m-3{margin:var(--spacing-md);}.m-4{margin:var(--spacing-lg);}.m-5{margin:var(--spacing-xl);}.pt-0{padding-top:0;}.pt-1{padding-top:var(--spacing-xs);}.pt-2{padding-top:var(--spacing-sm);}.pt-3{padding-top:var(--spacing-md);}.pt-4{padding-top:var(--spacing-lg);}.pt-5{padding-top:var(--spacing-xl);}.pb-0{padding-bottom:0;}.pb-1{padding-bottom:var(--spacing-xs);}.pb-2{padding-bottom:var(--spacing-sm);}.pb-3{padding-bottom:var(--spacing-md);}.pb-4{padding-bottom:var(--spacing-lg);}.pb-5{padding-bottom:var(--spacing-xl);}.pl-0{padding-left:0;}.pl-1{padding-left:var(--spacing-xs);}.pl-2{padding-left:var(--spacing-sm);}.pl-3{padding-left:var(--spacing-md);}.pl-4{padding-left:var(--spacing-lg);}.pl-5{padding-left:var(--spacing-xl);}.pr-0{padding-right:0;}.pr-1{padding-right:var(--spacing-xs);}.pr-2{padding-right:var(--spacing-sm);}.pr-3{padding-right:var(--spacing-md);}.pr-4{padding-right:var(--spacing-lg);}.pr-5{padding-right:var(--spacing-xl);}.px-0{padding-left:0;padding-right:0;}.px-1{padding-left:var(--spacing-xs);padding-right:var(--spacing-xs);}.px-2{padding-left:var(--spacing-sm);padding-right:var(--spacing-sm);}.px-3{padding-left:var(--spacing-md);padding-right:var(--spacing-md);}.px-4{padding-left:var(--spacing-lg);padding-right:var(--spacing-lg);}.px-5{padding-left:var(--spacing-xl);padding-right:var(--spacing-xl);}.py-0{padding-top:0;padding-bottom:0;}.py-1{padding-top:var(--spacing-xs);padding-bottom:var(--spacing-xs);}.py-2{padding-top:var(--spacing-sm);padding-bottom:var(--spacing-sm);}.py-3{padding-top:var(--spacing-md);padding-bottom:var(--spacing-md);}.py-4{padding-top:var(--spacing-lg);padding-bottom:var(--spacing-lg);}.py-5{padding-top:var(--spacing-xl);padding-bottom:var(--spacing-xl);}.p-0{padding:0;}.p-1{padding:var(--spacing-xs);}.p-2{padding:var(--spacing-sm);}.p-3{padding:var(--spacing-md);}.p-4{padding:var(--spacing-lg);}.p-5{padding:var(--spacing-xl);}.text-left{text-align:left;}.text-center{text-align:center;}.text-right{text-align:right;}.text-justify{text-align:justify;}.text-bold{font-weight:700;}.text-semibold{font-weight:600;}.text-medium{font-weight:500;}.text-regular{font-weight:400;}.text-xs{font-size:var(--font-size-xs);}.text-sm{font-size:var(--font-size-sm);}.text-md{font-size:var(--font-size-md);}.text-lg{font-size:var(--font-size-lg);}.text-xl{font-size:var(--font-size-xl);}.text-xxl{font-size:var(--font-size-xxl);}.d-none{display:none;}.d-inline{display:inline;}.d-inline-block{display:inline-block;}.d-block{display:block;}.d-flex{display:flex;}.d-inline-flex{display:inline-flex;}.d-grid{display:grid;}.flex-row{flex-direction:row;}.flex-column{flex-direction:column;}.flex-wrap{flex-wrap:wrap;}.flex-nowrap{flex-wrap:nowrap;}.justify-start{justify-content:flex-start;}.justify-end{justify-content:flex-end;}.justify-center{justify-content:center;}.justify-between{justify-content:space-between;}.justify-around{justify-content:space-around;}.justify-evenly{justify-content:space-evenly;}.items-start{align-items:flex-start;}.items-end{align-items:flex-end;}.items-center{align-items:center;}.items-baseline{align-items:baseline;}.items-stretch{align-items:stretch;}.visible{visibility:visible;}.invisible{visibility:hidden;}.position-static{position:static;}.position-relative{position:relative;}.position-absolute{position:absolute;}.position-fixed{position:fixed;}.position-sticky{position:sticky;}@media (max-width:767px){.hide-mobile{display:none !important;}} @media (min-width:768px) and (max-width:1023px){.hide-tablet{display:none !important;}} @media (min-width:1024px){.hide-desktop{display:none !important;}} .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0;}.not-sr-only{position:static;width:auto;height:auto;padding:0;margin:0;overflow:visible;clip:auto;white-space:normal;}@media (max-width:768px){.touch-target{min-height:44px;min-width:44px;}a,button,.btn,input[type="button"],input[type="submit"],input[type="reset"],select,.nav-link{padding:0.75rem;margin:0.25rem;}.touch-spacing > *{margin-bottom:0.5rem;margin-right:0.5rem;}.touch-feedback:active{transform:scale(0.97);transition:transform 0.1s ease;}} @media (hover:none){a:active,button:active,.btn:active,.nav-link:active{background-color:var(--color-background-light);opacity:0.9;transition:background-color 0.3s ease;}a:hover,button:hover,.btn:hover,.nav-link:hover{background-color:transparent;}} .cv-container,.page-container,.blog-post-container,.blog-container{max-width:1200px;margin:0 auto;padding:2rem;}.cv-section,.page-section,.blog-section{background:var(--color-card-background);border-radius:8px;padding:2rem;margin-bottom:2rem;box-shadow:var(--shadow-sm);}.cv-section-title,.page-section-title,.blog-section-title{font-size:1.75rem;font-weight:600;margin-bottom:1.5rem;color:var(--color-primary);border-bottom:2px solid var(--color-primary);padding-bottom:0.5rem;}.markdown-content{line-height:1.8;color:var(--color-text);}.markdown-content h1{font-size:2.5rem;margin-top:2rem;margin-bottom:1rem;color:var(--color-primary);}.markdown-content h2{font-size:2rem;margin-top:2rem;margin-bottom:1rem;color:var(--color-secondary);}.markdown-content h3{font-size:1.5rem;margin-top:1.5rem;margin-bottom:0.75rem;}.markdown-content p{margin-bottom:1.5rem;}.markdown-content ul,.markdown-content ol{margin-bottom:1.5rem;padding-left:2rem;}.markdown-content li{margin-bottom:0.5rem;}.markdown-content code{background:var(--color-code-background,var(--color-overlay));padding:0.2rem 0.4rem;border-radius:3px;font-family:'JetBrains Mono','Consolas',monospace;font-size:0.9em;}.markdown-content pre{background:var(--color-code-background,var(--color-overlay));padding:1rem;border-radius:5px;overflow-x:auto;margin-bottom:1.5rem;}.markdown-content pre code{background:none;padding:0;}.markdown-content blockquote{border-left:4px solid var(--color-primary);padding-left:1rem;margin:1.5rem 0;font-style:italic;color:var(--color-text-light);}.markdown-content table{width:100%;border-collapse:collapse;margin-bottom:1.5rem;}.markdown-content th,.markdown-content td{padding:0.75rem;text-align:left;border-bottom:1px solid var(--color-border);}.markdown-content th{background:var(--color-background-light);font-weight:600;}.page-container{min-height:calc(100vh - 200px);}.page-header{text-align:center;margin-bottom:3rem;}.page-header h1{font-size:3rem;margin-bottom:1rem;}.blog-posts{} .blog-post-preview{margin-bottom:3rem;padding-bottom:2rem;border-bottom:1px solid var(--color-border);}.blog-post-preview:last-child{border-bottom:none;}.blog-post-preview h2{margin-bottom:0.5rem;}.blog-post-preview h2 a{color:var(--color-primary);text-decoration:none;transition:color 0.3s ease;}.blog-post-preview h2 a:hover{color:var(--color-secondary);}.post-meta{display:flex;gap:1rem;font-size:0.9rem;color:var(--color-text-light);margin-bottom:1rem;}.reading-time{display:inline-flex;align-items:center;}.post-excerpt{margin:1rem 0;color:var(--color-text);}.post-tags{display:flex;flex-wrap:wrap;gap:0.5rem;margin:1rem 0;}.tag{background:var(--color-muted);color:var(--color-text-light);padding:0.25rem 0.75rem;border-radius:15px;font-size:0.85rem;text-decoration:none;transition:background 0.3s ease;}.tag:hover{background:var(--color-overlay);}.read-more{color:var(--color-primary);text-decoration:none;font-weight:500;transition:color 0.3s ease;}.read-more:hover{color:var(--color-secondary);text-decoration:underline;}.post-header{text-align:center;margin-bottom:3rem;}.post-header h1{font-size:2.5rem;margin-bottom:1rem;color:var(--color-primary);}.post-footer{margin-top:3rem;padding-top:2rem;border-top:1px solid var(--color-border);display:flex;justify-content:space-between;align-items:center;}.post-author{color:var(--color-text-light);font-style:italic;}.post-nav a{color:var(--color-primary);text-decoration:none;transition:color 0.3s ease;}.post-nav a:hover{color:var(--color-secondary);text-decoration:underline;}.blog-tags-section{margin-top:3rem;padding:2rem;background:var(--color-background-light);border-radius:8px;}.section-title{font-size:1.5rem;margin-bottom:1rem;color:var(--color-secondary);}.tags-list{display:flex;flex-wrap:wrap;gap:0.75rem;}.no-posts{text-align:center;padding:4rem 2rem;color:var(--color-text-light);}@media (max-width:768px){.markdown-content,.blog-posts,.blog-post-container{padding:1rem;}.page-header h1,.post-header h1{font-size:2rem;}.markdown-content h1{font-size:2rem;}.markdown-content h2{font-size:1.5rem;}.post-footer{flex-direction:column;gap:1rem;text-align:center;}} .experience-item{margin-top:2rem;}.experience-item:first-child{margin-top:0;}.education-item{margin-top:2rem;}.education-item:first-child{margin-top:0;}.cv-section-certifications{background:var(--color-card-background);border-radius:8px;padding:2rem;margin-bottom:2rem;box-shadow:var(--shadow-sm);padding-bottom:2rem !important;}.theme-dark .github-card{background-color:var(--color-overlay);}.theme-dark .card-footer{background-color:var(--color-background);border-top-color:var(--color-border);}.theme-dark .repo-description{background-color:var(--color-overlay);}.theme-dark .project-card{background-color:var(--color-overlay);}