@media (hover:hover){.btn-primary:hover{box-shadow:0 5px 15px var(--shadow-accent);transform:translateY(-2px)}}@media (hover:hover){.btn-secondary:hover{background-color:var(--hover-bg);border-color:var(--border-accent);box-shadow:0 5px 15px var(--shadow-medium);transform:translateY(-2px)}}@media (hover:hover){.card:hover{box-shadow:0 15px 35px var(--shadow-dark);border-color:var(--border-accent);transform:scale(1.02)}}@media (hover:hover){.skill-item:hover{border-color:var(--border-accent);box-shadow:0 10px 20px var(--shadow-dark);background:var(--hover-bg);transform:translateY(-5px)}}@media (width<=768px){.skills-grid{gap:var(--spacing-md);grid-template-columns:repeat(auto-fill,minmax(100px,1fr))}.skills-category{padding:var(--spacing-lg)}}@media (width<=480px){.skills-grid{grid-template-columns:repeat(auto-fill,minmax(80px,1fr))}.skill-icon{font-size:1.5rem}}*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--bg-primary);color:var(--text-primary);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}#root{width:100%;height:100vh}html,body{width:100%;height:100%;margin:0;padding:0;overflow:hidden}.app-container{width:100vw;height:100vh;position:relative;overflow:hidden}.vanta-background{z-index:0;background-color:var(--bg-primary);will-change:transform;isolation:isolate;width:100%;height:100%;position:absolute;top:0;left:0}.content{z-index:1;width:100%;height:100%;color:var(--text-primary);text-align:center;box-sizing:border-box;flex-direction:column;padding:2rem;display:flex;position:relative;overflow-y:auto}.hero-section{max-width:800px;padding:var(--spacing-xl);border-radius:var(--radius-2xl);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--border-light);box-shadow:0 20px 40px var(--shadow-dark);background-color:#1d1e2bb3}.title{background:var(--gradient-accent);-webkit-text-fill-color:transparent;text-shadow:0 4px 8px var(--shadow-light);-webkit-background-clip:text;margin-bottom:1rem;font-size:3.5rem;font-weight:700}.subtitle{color:var(--text-secondary);margin-bottom:2.5rem;font-size:1.5rem;line-height:1.6}.features{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:2rem;margin-top:2rem;display:grid}.feature{background:var(--bg-tertiary);opacity:.6;padding:var(--spacing-lg);border-radius:var(--radius-lg);border:1px solid var(--border-light);transition:transform var(--transition-medium), box-shadow var(--transition-medium)}@media (hover:hover){.feature:hover{border-color:var(--border-accent);transform:translateY(-5px);box-shadow:0 10px 25px #0003}}.feature h3{color:var(--text-accent);margin-bottom:.75rem;font-size:1.3rem}.feature p{color:var(--text-secondary);font-size:.95rem;line-height:1.5}.footer{margin-top:var(--spacing-2xl);padding:var(--spacing-md);border-radius:var(--radius-md);border:1px solid var(--border-light);background-color:#1d1e2b80}.footer p{color:var(--text-accent);margin:0;font-size:1.1rem}.tag-filter{margin-bottom:var(--spacing-xl);width:100%;max-width:800px}.tag-filter-bar{gap:var(--spacing-sm);padding:var(--spacing-md);border-radius:var(--radius-xl);border:1px solid var(--border-light);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 10px 25px var(--shadow-dark);background-color:#1d1e2bb3;flex-wrap:wrap;justify-content:center;display:flex}.tag-button{padding:var(--spacing-sm) var(--spacing-md);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;border:1px solid #0000;border-radius:6px;font-family:inherit;font-size:.9rem;font-weight:500}.tag-button:active{transition-duration:50ms;transform:translateY(1px)}.tag-button.selected{background:var(--gradient-primary);color:var(--text-primary);border-color:var(--border-accent);box-shadow:0 4px 12px #5472cc4d}.tag-button.unselected{background-color:var(--bg-tertiary);color:var(--text-secondary);border-color:var(--border-light)}@media (hover:hover){.tag-button:hover{transform:translateY(-2px);box-shadow:0 6px 16px #0003}.tag-button.selected:hover{background:var(--gradient-secondary)}.tag-button.unselected:hover{background-color:var(--bg-secondary);color:var(--text-primary)}}.refresh-button{padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--border-light);cursor:pointer;transition:all var(--transition-fast);background-color:var(--bg-tertiary);color:var(--text-secondary);border-radius:6px;justify-content:center;align-items:center;width:44px;height:44px;font-family:inherit;font-size:1.2rem;font-weight:500;display:flex}.refresh-button:disabled,.refresh-button.disabled{background-color:var(--bg-secondary);color:var(--text-disabled);cursor:not-allowed;border-color:var(--border-light);opacity:.6}.refresh-button:active:not(:disabled){transition-duration:50ms;transform:translateY(1px)}@media (hover:hover){.refresh-button:hover:not(:disabled):not(.disabled){background-color:var(--bg-secondary);color:var(--text-primary);border-color:var(--border-accent);transform:translateY(-2px);box-shadow:0 6px 16px #0003}}.project-grid{gap:var(--spacing-xl);width:100%;max-width:1600px;padding:var(--spacing-md);grid-template-columns:repeat(auto-fill,minmax(350px,1fr));margin:0 auto;display:grid}@media (width>=1200px){.project-grid{grid-template-columns:repeat(3,1fr)}}@media (width<=1199px) and (width>=768px){.project-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=767px){.project-grid{grid-template-columns:1fr}}.project-grid-item{flex-direction:column;display:flex}.project-grid-empty{padding:var(--spacing-2xl);border-radius:var(--radius-xl);border:1px solid var(--border-light);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);min-height:300px;margin:var(--spacing-xl) auto;background-color:#1d1e2b80;flex-direction:column;justify-content:center;align-items:center;max-width:800px;display:flex}@media (width<=768px){.title{font-size:2.5rem}.subtitle{font-size:1.2rem}.features{grid-template-columns:1fr}.hero-section{padding:1.5rem}}@media (width<=480px){.title{font-size:2rem}.subtitle{font-size:1rem}.feature h3{font-size:1.1rem}.feature p{font-size:.9rem}}.layout{width:100%;max-width:1600px;padding:var(--spacing-xl);margin:0 auto}.section{margin:var(--spacing-2xl) 0;padding:var(--spacing-xl);border-radius:var(--radius-2xl);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--border-light);box-shadow:0 20px 40px var(--shadow-dark);background-color:#1d1e2bb3}.hero{padding:var(--spacing-xl);border-radius:var(--radius-2xl);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--border-light);box-shadow:0 20px 40px var(--shadow-dark);background-color:#1d1e2bb3}.hero-content{max-width:1000px;margin:0 auto}.hero-profile{align-items:center;gap:var(--spacing-xl);flex-direction:row;display:flex}.hero-image-container{flex-shrink:0}.hero-image{border-radius:var(--radius-full);object-fit:cover;border:3px solid var(--border-accent);width:200px;height:200px;box-shadow:0 10px 30px var(--shadow-dark)}.hero-text{flex:1}@media (width<=768px){.hero-profile{text-align:center;gap:var(--spacing-lg);flex-direction:column}.hero-text,.hero-text h1,.hero-text h2,.hero-text p{text-align:center}.hero-image{width:160px;height:160px}}.modal-overlay{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:1000;width:100vw;height:100vh;padding:var(--spacing-lg);background-color:#000000bf;justify-content:center;align-items:center;display:flex;position:fixed;top:0;left:0;overflow-y:auto}.modal-content{background-color:var(--bg-primary);border-radius:var(--radius-2xl);border:1px solid var(--border-accent);box-shadow:0 30px 60px var(--shadow-dark);width:100%;max-width:900px;max-height:90vh;padding:var(--spacing-xl);animation:.3s ease-out modalFadeIn;position:relative;overflow-y:auto}@keyframes modalFadeIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.modal-close-btn{color:var(--text-secondary);cursor:pointer;padding:var(--spacing-xs);border-radius:var(--radius-full);transition:all var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;display:flex}.modal-close-btn:active{transition-duration:50ms;transform:scale(.95)}@media (hover:hover){.modal-close-btn:hover{color:var(--text-accent);background-color:var(--hover-bg)}}.modal-close-btn.secondary{background-color:var(--bg-tertiary);color:var(--text-primary);padding:var(--spacing-sm) var(--spacing-lg);border:1px solid var(--border-light)}@media (hover:hover){.modal-close-btn.secondary:hover{background-color:var(--color-1);border-color:var(--border-accent)}}.modal-image-grid{gap:var(--spacing-md);grid-template-columns:repeat(auto-fill,minmax(250px,1fr));display:grid}.modal-image-item{border-radius:var(--radius-md);border:1px solid var(--border-light);background-color:var(--bg-tertiary);transition:transform var(--transition-fast);cursor:zoom-in;overflow:hidden}@media (hover:hover){.modal-image-item:hover{border-color:var(--border-accent);transform:scale(1.05)}.modal-image-item:hover img{transform:scale(1.5)}}.modal-image-item img{transition:transform var(--transition-medium);border-radius:var(--radius-md);width:100%;height:auto}.modal-links{gap:var(--spacing-md);flex-wrap:wrap;display:flex}.modal-link{padding:var(--spacing-sm) var(--spacing-lg);background-color:var(--color-2);color:var(--text-primary);border-radius:var(--radius-full);border:1px solid var(--border-accent);transition:all var(--transition-fast);font-weight:500;text-decoration:none;display:inline-block}.modal-link:active{transition-duration:50ms;transform:translateY(1px)}@media (hover:hover){.modal-link:hover{background-color:var(--color-1);transform:translateY(-2px);box-shadow:0 6px 16px #5472cc4d}}@media (width<=768px){.modal-content{padding:var(--spacing-lg);max-height:95vh}.modal-image-grid{grid-template-columns:1fr}}.lightbox-overlay{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);z-index:2000;background-color:#000000e6;justify-content:center;align-items:center;width:100vw;height:100vh;animation:.3s ease-out lightboxFadeIn;display:flex;position:fixed;top:0;left:0}@keyframes lightboxFadeIn{0%{opacity:0}to{opacity:1}}.lightbox-content{flex-direction:column;justify-content:center;align-items:center;width:90vw;max-width:1200px;height:90vh;display:flex;position:relative}.lightbox-close-btn{top:var(--spacing-md);right:var(--spacing-md);color:var(--text-primary);cursor:pointer;padding:var(--spacing-sm);border-radius:var(--radius-full);transition:all var(--transition-fast);z-index:10;background:0 0;border:none;justify-content:center;align-items:center;display:flex;position:absolute}.lightbox-close-btn:active{transition-duration:50ms;transform:scale(.95)}@media (hover:hover){.lightbox-close-btn:hover{color:var(--text-accent);background-color:var(--hover-bg)}}.lightbox-image-container{border-radius:var(--radius-lg);justify-content:center;align-items:center;width:100%;height:calc(100% - 60px);display:flex;overflow:hidden}.lightbox-image{object-fit:contain;border-radius:var(--radius-md);max-width:100%;max-height:100%;animation:.3s ease-out imageZoomIn;box-shadow:0 20px 60px #000c}@keyframes imageZoomIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.lightbox-navigation{justify-content:center;align-items:center;gap:var(--spacing-xl);margin-top:var(--spacing-lg);display:flex}.lightbox-nav-btn{border:1px solid var(--border-accent);color:var(--text-primary);cursor:pointer;padding:var(--spacing-sm);border-radius:var(--radius-full);transition:all var(--transition-fast);background-color:#1d1e2bcc;justify-content:center;align-items:center;width:44px;height:44px;display:flex}.lightbox-nav-btn:active{transition-duration:50ms;transform:scale(.95)}@media (hover:hover){.lightbox-nav-btn:hover{background-color:var(--color-1);color:var(--text-primary);border-color:var(--border-accent);transform:translateY(-2px)}}.lightbox-counter{color:var(--text-primary);text-align:center;min-width:80px;font-size:1rem;font-weight:500}@media (width<=768px){.lightbox-content{width:95vw;height:95vh}.lightbox-navigation{gap:var(--spacing-lg)}.lightbox-nav-btn{width:40px;height:40px;padding:var(--spacing-xs)}.lightbox-counter{min-width:60px;font-size:.9rem}}.code-block{border-radius:var(--radius-md);border:1px solid var(--border-accent);margin-bottom:var(--spacing-sm);background-color:#1e1e1e;position:relative;overflow:hidden}.code-block-header{color:#ccc;padding:var(--spacing-sm) var(--spacing-md);background-color:#2d2d2d;border-bottom:1px solid #404040;justify-content:space-between;align-items:center;font-family:monospace;font-size:.75rem;display:flex}.code-block-copy-btn{color:#ccc;cursor:pointer;padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm);transition:all var(--transition-fast);background:0 0;border:none;font-size:.75rem}.code-block-copy-btn:active{transition-duration:50ms;transform:scale(.95)}@media (hover:hover){.code-block-copy-btn:hover{color:var(--text-accent);background-color:#ffffff1a}}.markdown-content{margin-bottom:var(--spacing-lg);color:var(--text-secondary);word-wrap:break-word;overflow-wrap:break-word;text-align:left;font-size:1rem;line-height:1.6}.markdown-content h1,.markdown-content h2,.markdown-content h3,.markdown-content h4,.markdown-content h5,.markdown-content h6{color:var(--text-accent);margin-top:var(--spacing-lg);margin-bottom:var(--spacing-sm);font-weight:600}.markdown-content h1{font-size:1.75rem}.markdown-content h2{font-size:1.5rem}.markdown-content h3{font-size:1.25rem}.markdown-content h4{font-size:1.125rem}.markdown-content h5{font-size:1rem}.markdown-content h6{font-size:.875rem}.markdown-content p{margin-bottom:var(--spacing-md)}.markdown-content ul,.markdown-content ol{margin-bottom:var(--spacing-md);padding-left:var(--spacing-lg)}.markdown-content li{margin-bottom:var(--spacing-xs)}.markdown-content a{color:var(--color-1);transition:border-color var(--transition-fast);border-bottom:1px solid #0000;text-decoration:none}.markdown-content a:hover{border-bottom:1px solid var(--color-1)}.markdown-content code{background-color:var(--bg-tertiary);color:var(--text-accent);border-radius:var(--radius-sm);padding:.125rem .25rem;font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace;font-size:.875rem}.markdown-content pre{background-color:var(--bg-tertiary);border-radius:var(--radius-md);padding:var(--spacing-md);margin-bottom:var(--spacing-md);border:1px solid var(--border-light);overflow-x:auto}.markdown-content pre code{color:inherit;background-color:#0000;padding:0}.markdown-content blockquote{border-left:4px solid var(--border-accent);padding-left:var(--spacing-md);margin-left:0;margin-right:0;margin-bottom:var(--spacing-md);color:var(--text-tertiary);font-style:italic}.markdown-content table{border-collapse:collapse;width:100%;margin-bottom:var(--spacing-md);table-layout:fixed}.markdown-content th,.markdown-content td{border:1px solid var(--border-light);padding:var(--spacing-sm);text-align:left;word-break:break-word}.markdown-content th{background-color:var(--bg-tertiary);color:var(--text-accent);font-weight:600}.markdown-content tr:nth-child(2n){background-color:var(--bg-secondary)}.markdown-content hr{border:none;border-top:1px solid var(--border-light);margin:var(--spacing-lg) 0}.markdown-content img{border-radius:var(--radius-md);border:1px solid var(--border-light);max-width:100%;height:auto}:root{--bg-primary:#1d1e2b;--bg-secondary:#292a41;--bg-tertiary:#353652;--color-1:#54aecc;--color-2:#5472cc;--color-3:#7254cc;--text-primary:#fff;--text-secondary:#b0b7d6;--text-tertiary:#8a91b5;--text-accent:#8fd3f4;--border-light:#ffffff1a;--border-medium:#fff3;--border-accent:#54aecc4d;--shadow-light:#0000001a;--shadow-medium:#0003;--shadow-dark:#0000004d;--shadow-accent:#54aecc33;--hover-bg:#54aecc1a;--active-bg:#54aecc33;--focus-ring:#54aecc66;--gradient-primary:linear-gradient(135deg, var(--color-1), var(--color-2));--gradient-secondary:linear-gradient(135deg, var(--color-2), var(--color-3));--gradient-accent:linear-gradient(135deg, #6a98f0, #8fd3f4);--spacing-xs:.25rem;--spacing-sm:.5rem;--spacing-md:1rem;--spacing-lg:1.5rem;--spacing-xl:2rem;--spacing-2xl:3rem;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-2xl:20px;--transition-fast:.15s ease;--transition-medium:.3s ease;--transition-slow:.5s ease}body{background-color:var(--bg-primary);color:var(--text-primary)}.container{width:100%;max-width:1200px;padding:0 var(--spacing-md);margin:0 auto}.text-primary{color:var(--text-primary)}.text-secondary{color:var(--text-secondary)}.text-accent{color:var(--text-accent)}.bg-primary{background-color:var(--bg-primary)}.bg-secondary{background-color:var(--bg-secondary)}.bg-tertiary{background-color:var(--bg-tertiary)}.border-light{border:1px solid var(--border-light)}.border-accent{border:1px solid var(--border-accent)}.shadow-medium{box-shadow:0 10px 25px var(--shadow-medium)}.shadow-dark{box-shadow:0 20px 40px var(--shadow-dark)}.rounded-md{border-radius:var(--radius-md)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.btn{padding:var(--spacing-sm) var(--spacing-lg);border-radius:var(--radius-md);cursor:pointer;transition:transform var(--transition-medium), box-shadow var(--transition-medium);border:none;outline:none;justify-content:center;align-items:center;font-size:1rem;font-weight:500;text-decoration:none;display:inline-flex}.btn-sm{padding:var(--spacing-xs) var(--spacing-md);font-size:.875rem}.btn-lg{padding:var(--spacing-md) var(--spacing-xl);border-radius:var(--radius-lg);font-size:1.125rem}.btn-primary{background:var(--gradient-primary);color:var(--text-primary)}@media (hover:hover){.btn-primary:hover{box-shadow:0 5px 15px var(--shadow-accent);transform:translateY(-2px)}}.btn-primary:focus{outline:2px solid var(--focus-ring);outline-offset:2px}.btn-secondary{background-color:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-light)}@media (hover:hover){.btn-secondary:hover{background-color:var(--hover-bg);border-color:var(--border-accent);box-shadow:0 5px 15px var(--shadow-medium);transform:translateY(-2px)}}.card{background:var(--bg-secondary);border-radius:var(--radius-lg);border:1px solid var(--border-light);padding:var(--spacing-lg);transition:all var(--transition-fast);will-change:transform}@media (hover:hover){.card:hover{box-shadow:0 15px 35px var(--shadow-dark);border-color:var(--border-accent);transform:scale(1.02)}}.heading-1{letter-spacing:-.02em;margin-bottom:var(--spacing-md);font-size:3.5rem;font-weight:700;line-height:1.2}.heading-2{letter-spacing:-.01em;margin-bottom:var(--spacing-md);font-size:2.5rem;font-weight:600;line-height:1.3}.heading-3{letter-spacing:-.01em;margin-bottom:var(--spacing-sm);font-size:1.75rem;font-weight:600;line-height:1.4}.body-text{letter-spacing:.01em;color:var(--text-secondary);font-size:1rem;line-height:1.6}.small-text{color:var(--text-tertiary);font-size:.875rem;line-height:1.5}.skills-section{padding:var(--spacing-2xl) 0}.skills-intro{margin-bottom:var(--spacing-2xl);max-width:600px;margin-left:auto;margin-right:auto}.skills-categories{gap:var(--spacing-2xl);flex-direction:column;display:flex}.skills-category{background:var(--bg-secondary);border-radius:var(--radius-lg);padding:var(--spacing-xl);border:1px solid var(--border-light)}.category-header{align-items:center;gap:var(--spacing-sm);margin-bottom:var(--spacing-lg);display:flex}.category-icon{color:var(--text-accent);font-size:1.5rem}.skills-grid{gap:var(--spacing-lg);grid-template-columns:repeat(auto-fill,minmax(120px,1fr));display:grid}.skill-item{align-items:center;gap:var(--spacing-sm);padding:var(--spacing-md);border-radius:var(--radius-md);background:var(--bg-tertiary);transition:all var(--transition-medium);cursor:default;will-change:transform;border:1px solid #0000;flex-direction:column;display:flex}@media (hover:hover){.skill-item:hover{border-color:var(--border-accent);box-shadow:0 10px 20px var(--shadow-dark);background:var(--hover-bg);transform:translateY(-5px)}}.skill-icon{color:var(--text-accent);justify-content:center;align-items:center;min-height:48px;font-size:2rem;display:flex}.icon-placeholder{background:var(--bg-secondary);border-radius:var(--radius-md);width:48px;height:48px}@media (width<=768px){.skills-grid{gap:var(--spacing-md);grid-template-columns:repeat(auto-fill,minmax(100px,1fr))}.skills-category{padding:var(--spacing-lg)}}@media (width<=480px){.skills-grid{grid-template-columns:repeat(auto-fill,minmax(80px,1fr))}.skill-icon{font-size:1.5rem}}
