@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";@import"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&display=swap";.layout{min-height:100vh;display:flex;flex-direction:column}.main{flex:1 1;padding-top:80px}.footer{background:#1f2937;border-top:1px solid #374151;padding:1.5rem 0;margin-top:auto}.footer .container{text-align:right}.footer p{margin:0;color:#d1d5db;font-size:.875rem}.navbar{position:fixed;top:0;left:0;right:0;background:rgba(17,24,39,.95);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid #374151;z-index:1000}.navbar .container{padding:.5rem 1rem}@media(min-width:768px){.navbar .container{padding:.5rem 1.5rem}}.navbar-content{display:flex;align-items:center;justify-content:space-between}.navbar-brand .brand-text{font-size:1.25rem;font-weight:700;color:#2563eb;cursor:pointer;transition:color .15s ease-in-out;background:none;border:none}.navbar-brand .brand-text:hover{color:#1e40af}.navbar-links{display:none;gap:1.5rem}@media(min-width:768px){.navbar-links{display:flex}}.nav-link{color:#f9fafb;font-weight:500;padding:.5rem 0;position:relative;transition:color .15s ease-in-out;background:none;border:none;cursor:pointer}.nav-link:hover{color:#2563eb}.nav-link:after{content:"";position:absolute;bottom:0;left:0;width:0;height:2px;background:#2563eb;transition:width .15s ease-in-out}.nav-link:hover:after{width:100%}.navbar-toggle{display:flex;flex-direction:column;gap:4px;padding:.5rem;background:none;border:none;cursor:pointer}@media(min-width:768px){.navbar-toggle{display:none}}.toggle-line{width:24px;height:2px;background:#f9fafb;transition:all .3s ease-in-out}.navbar-toggle.active .toggle-line:first-child{transform:rotate(45deg) translate(3px,6px)}.navbar-toggle.active .toggle-line:nth-child(2){opacity:0}.navbar-toggle.active .toggle-line:nth-child(3){transform:rotate(-45deg) translate(3px,-6px)}.navbar-mobile{display:none;flex-direction:column;gap:.5rem;padding:1rem 0;border-top:1px solid #374151;background:#111827;align-items:center}.navbar-mobile.active{display:flex}@media(min-width:768px){.navbar-mobile{display:none!important}}.nav-link-mobile{color:#f9fafb;font-weight:500;padding:.5rem 0;position:relative;transition:color .15s ease-in-out;background:none;border:none;cursor:pointer;width:-moz-fit-content;width:fit-content;text-align:center}.nav-link-mobile:hover{color:#2563eb}.nav-link-mobile:after{content:"";position:absolute;bottom:0;left:0;width:0;height:2px;background:#2563eb;transition:width .15s ease-in-out}.nav-link-mobile:hover:after{width:100%}.project-card{background:#1f2937;border:1px solid #374151;border-radius:.5rem;padding:1.5rem;box-shadow:0 1px 2px 0 rgba(0,0,0,.05);transition:all .3s ease-in-out;display:flex;flex-direction:column;height:100%;overflow:hidden}.project-card:hover{box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);transform:translateY(-5px)}.project-card:hover .project-image img{transform:scale(1.05)}.project-image{position:relative;width:100%;height:200px;overflow:hidden;border-radius:.375rem .375rem 0 0}.project-image img{width:100%;height:100%;object-fit:cover;transition:transform .3s ease-in-out}.project-content{padding:1rem;flex:1 1;display:flex;flex-direction:column}.project-title{font-size:1.25rem;font-weight:600;margin-bottom:.25rem;color:#f9fafb}.project-timeframe{color:#d1d5db;font-size:.875rem;font-weight:500;margin-top:1rem;margin-bottom:.5rem;opacity:.8}.project-description{color:#d1d5db;margin-bottom:1rem;flex:1 1}.project-tech{display:flex;flex-wrap:wrap;gap:.25rem;margin-bottom:1.5rem}.project-actions{gap:1.5rem;margin-top:auto}.project-actions,.project-links{display:flex;flex-direction:column}.project-links{gap:.5rem}.project-links .btn-full-width{width:100%}.project-repositories{display:flex;flex-direction:column;gap:.5rem;width:100%}.project-repositories .private-repo{color:#d1d5db;text-align:center}.project-repository-buttons{display:flex;flex-direction:column;gap:.25rem}.btn{display:inline-flex;align-items:center;justify-content:center;padding:.5rem 1rem;border-radius:.375rem;text-decoration:none;font-size:.875rem}.btn,.btn.btn-primary{font-weight:500;transition:all .15s ease-in-out;cursor:pointer;border:none}.btn.btn-primary{background:#2563eb;color:#fff;border-radius:.375rem;padding:.5rem 1.5rem}.btn.btn-primary:hover{background:#1e40af}.btn.btn-primary:focus{outline:none;box-shadow:0 0 0 3px rgba(37,99,235,.2)}.btn.btn-primary:hover{transform:translateY(-2px)}.btn.btn-secondary{background:rgba(0,0,0,0);color:#f9fafb;border:1px solid #374151}.btn.btn-secondary:hover{background:#111827;border-color:#2563eb;color:#2563eb;transform:translateY(-2px)}.project-detail .container{max-width:800px}.project-header{text-align:center;margin-bottom:3rem}.project-header .project-title{margin-top:1.5rem;font-size:2.25rem;margin-bottom:.25rem}@media(max-width:768px){.project-header .project-title{font-size:1.875rem}}.project-header .project-timeframe{color:#d1d5db;font-size:1rem;font-weight:500;margin-bottom:1rem;opacity:.8}.project-header .project-description{font-size:1.125rem;color:#d1d5db;max-width:650px;margin:0 auto}.project-info{padding:1.5rem;display:grid;grid-template-columns:1fr;grid-gap:2rem;gap:2rem;margin-top:3rem}@media(min-width:768px){.project-info{grid-template-columns:4fr 3fr}}.project-tech-list h3{margin-bottom:1rem;color:#f9fafb}.tech-grid{display:flex;flex-wrap:wrap;gap:.5rem}.project-image-carousel{width:800px;display:flex;flex-direction:column;align-items:center;justify-content:center;margin:0 auto 3rem}@media(max-width:1024px){.project-image-carousel{width:100%;max-width:700px}}@media(max-width:768px){.project-image-carousel{max-width:500px}}.carousel-controls{display:flex;align-items:center;width:100%}.carousel-button{background:hsla(0,0%,100%,.2);border:1px solid hsla(0,0%,100%,.3);border-radius:50%;width:48px;height:42px;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:.8;transition:all .2s;padding:0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.carousel-button:hover{opacity:1;background:hsla(0,0%,100%,.3);transform:scale(1.05)}.carousel-button.prev{margin-right:16px}.carousel-button.next{margin-left:16px}@media(max-width:768px){.carousel-button{width:40px;height:40px}.carousel-button.prev{margin-right:12px}.carousel-button.next{margin-left:12px}}.carousel-button-icon{font-size:2rem;color:#fff;display:flex;align-items:center;justify-content:center;width:100%;height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none}@media(max-width:768px){.carousel-button-icon{font-size:1.5rem}}.carousel-image-container{width:800px;height:500px;display:flex;align-items:center;justify-content:center;background:#222;border-radius:8px;overflow:hidden}@media(max-width:1024px){.carousel-image-container{width:100%;height:400px}}@media(max-width:768px){.carousel-image-container{height:300px}}@media(max-width:640px){.carousel-image-container{height:250px}}.carousel-image{object-fit:contain;width:100%;height:100%;border-radius:8px;background:#121826}.project-links-section h3{margin-bottom:1rem;color:#f9fafb}.links-grid{display:flex;flex-direction:column;gap:.5rem}.links-grid .private-repo{color:#d1d5db}.project-content h3{color:#f9fafb;margin-bottom:1rem;margin-top:2rem}.project-content h4{color:#f9fafb;margin-bottom:1rem;margin-top:1.5rem;font-size:1.125rem}.project-content p{margin-bottom:1rem;line-height:1.7}.project-content ul{margin-bottom:1rem}.project-content ul li{margin-bottom:.25rem;color:#d1d5db}.back-link{display:inline-flex;align-items:center;color:#2563eb;font-weight:500;margin-bottom:2rem;transition:color .15s ease-in-out}.back-link:hover{color:#1e40af}.project-nav{margin-bottom:2rem}.about-section,.contact-section,.hero,.projects-section,.section-padding,.skills-section{padding:4rem 0}@media(max-width:768px){.about-section,.contact-section,.hero,.projects-section,.section-padding,.skills-section{padding:3rem 0}}.hero{background:linear-gradient(135deg,#111827,#1f2937)}.hero-content{text-align:center;max-width:800px;margin:0 auto}.hero-title{font-size:clamp(2rem,5vw,3.5rem);margin-bottom:1rem}.hero-title .text-primary{color:#2563eb}.hero-title .shine-text{position:relative;display:inline-block;cursor:pointer;background:linear-gradient(120deg,#2563eb,#2563eb 45%,rgba(255,255,255,.8) 50%,#2563eb 55%,#2563eb);background-size:500% 100%;background-position:20% 0;background-clip:text;-webkit-background-clip:text;color:rgba(0,0,0,0);transition:background-position 1.4s ease}.hero-title .shine-text:hover{background-position:-100% 0}.hero-subtitle{font-size:1.25rem;color:#d1d5db;margin-bottom:1.5rem;font-weight:500}@media(max-width:768px){.hero-subtitle{font-size:1.125rem}}.hero-description{font-size:1.125rem;color:#d1d5db;margin-bottom:3rem;line-height:1.6;max-width:600px;margin-left:auto;margin-right:auto}@media(max-width:768px){.hero-description{font-size:1rem;margin-bottom:2rem}}.hero-actions{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.hero-actions .btn{display:inline-flex;align-items:center;justify-content:center;border-radius:.375rem;text-decoration:none;font-size:1rem;gap:.25rem}.hero-actions .btn,.hero-actions .btn.btn-primary{padding:.5rem 1.5rem;font-weight:500;transition:all .15s ease-in-out;cursor:pointer;border:none}.hero-actions .btn.btn-primary{background:#2563eb;color:#fff;border-radius:.375rem}.hero-actions .btn.btn-primary:hover{background:#1e40af}.hero-actions .btn.btn-primary:focus{outline:none;box-shadow:0 0 0 3px rgba(37,99,235,.2)}.hero-actions .btn.btn-primary:hover{transform:translateY(-2px)}.hero-actions .btn.btn-secondary{background:rgba(0,0,0,0);color:#f9fafb;border:1px solid #374151}.hero-actions .btn.btn-secondary:hover{background:#111827;border-color:#2563eb;color:#2563eb;transform:translateY(-2px)}.hero-actions .btn .btn-icon,.hero-actions .btn.btn-secondary .btn-icon{filter:brightness(0) invert(1)}.hero-actions .btn .btn-icon{width:20px;height:20px}.hero-actions .btn.btn-secondary .btn-icon{filter:none;opacity:.7}.hero-actions .btn.btn-secondary:hover .btn-icon{opacity:1}.hero-actions+.hero-actions{margin-top:1.5rem}.projects-section{background:#1f2937}.projects-grid{display:grid;grid-template-columns:1fr;grid-gap:2rem;gap:2rem}@media(min-width:768px){.projects-grid{grid-template-columns:repeat(2,1fr)}}@media(min-width:1024px){.projects-grid{grid-template-columns:repeat(3,1fr)}}.skills-section{background:#111827}.about-section{background:#1f2937}.about-content{max-width:800px;margin:0 auto}.about-text-section{margin-bottom:3rem}.about-text-section:last-child{margin-bottom:0}.about-subtitle{font-size:1.25rem;margin-bottom:1rem;color:#2563eb;font-weight:600}.about-text{font-size:1rem;line-height:1.7;color:#d1d5db;margin-bottom:1.5rem}.about-text:last-child{margin-bottom:0}.contact-section{background:#111827}.contact-content{text-align:center;max-width:600px;margin:0 auto}.contact-description{font-size:1.125rem;color:#d1d5db;margin-bottom:2rem;line-height:1.6}@media(max-width:768px){.contact-description{font-size:1rem}}.contact-link{text-decoration:none;gap:.5rem}.contact-link,.icon-wrapper{display:flex;align-items:center}.icon-wrapper{width:24px;height:24px;color:#fff;justify-content:center;margin-right:.5rem}.section-title{text-align:center;margin-bottom:3rem;font-size:1.875rem}@media(max-width:768px){.section-title{font-size:1.5rem;margin-bottom:2rem}}.skills-grid{display:grid;grid-template-columns:1fr;grid-gap:2rem;gap:2rem}@media(min-width:768px){.skills-grid{grid-template-columns:repeat(2,1fr)}}@media(min-width:1024px){.skills-grid{grid-template-columns:repeat(3,1fr)}}.skill-category{text-align:center}.skill-category h3{font-size:1.25rem;margin-bottom:1rem;color:#f9fafb}.skill-tags{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center}.skill-tag{background:#1f2937;color:#d1d5db;padding:.5rem 1rem;border-radius:.375rem;font-size:.875rem;font-weight:500;transition:all .15s ease-in-out;border:1px solid #374151}.skill-tag:hover{background:#2563eb;color:#fff;transform:translateY(-2px);border-color:rgba(0,0,0,0)!important}.skill-tag[data-tech=react]:hover,.skill-tag[data-tech=typescript]:hover{background:#3178c6;color:#fff}.skill-tag[data-tech=javascript]:hover{background:#f1e05a;color:#000}.skill-tag[data-tech=python]:hover{background:#3572a5;color:#fff}.skill-tag[data-tech=java]:hover{background:#b07219;color:#fff}.skill-tag[data-tech=c-]:hover{background:#178600;color:#fff}.skill-tag[data-tech=scss]:hover{background:#c16a98;color:#fff}.skill-tag[data-tech=node-js]:hover{background:#3c783a;color:#fff}.skill-tag[data-tech=fastapi]:hover{background:#419186;color:#fff}.skill-tag[data-tech=unity-3d]:hover,.skill-tag[data-tech=unity]:hover{background:#000;color:#fff}.skill-tag[data-tech=electron]:hover{background:#303241;color:#fff}.skill-tag[data-tech=vite]:hover{background:#f3b03d;color:#000}.skill-tag[data-tech=sqlcipher]:hover,.skill-tag[data-tech=sqlite]:hover{background:#c9f877;color:#000}.skill-tag[data-tech=wpilib]:hover{background:#ac2b37;color:#fff}.skill-tag[data-tech=-net]:hover{background:#4d2dcc;color:#fff}.skill-tag[data-tech=git]:hover{background:#f1502f;color:#fff}.skill-tag[data-tech=github]:hover{background:#572e88;color:#fff}.skill-tag[data-tech=next-js]:hover{background:#000;color:#fff}.skill-tag[data-tech=c]:hover{background:#555;color:#fff}.skill-tag[data-tech=c--]:hover{background:#f34b7d;color:#fff}.skill-tag[data-tech=html]:hover{background:#e34c26;color:#fff}.skill-tag[data-tech=visual-studio]:hover{background:#ae7fe2;color:#fff}.skill-tag[data-tech=vs-code]:hover{background:#007acc;color:#fff}.contact-section{text-align:center;max-width:600px;margin:0 auto}.contact-section h2{font-size:1.5rem;margin-bottom:1rem;color:#f9fafb}.contact-section p{font-size:1.125rem;color:#d1d5db;margin-bottom:2rem;line-height:1.6}.contact-links{display:flex;gap:1.5rem;justify-content:center;flex-wrap:wrap}.contact-link{color:#2563eb;font-weight:500;padding:.5rem 1.5rem;border:2px solid #2563eb;border-radius:.375rem;transition:all .15s ease-in-out}.contact-link:hover{background:#2563eb;color:#fff;transform:translateY(-2px)}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.7);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:10000;padding:1.5rem}.modal-content,.modal-overlay{overflow-y:auto;overscroll-behavior:contain}.modal-content{background:#111827;border-radius:.5rem;max-width:1000px;width:100%;max-height:90vh;position:relative;padding:3rem;margin:auto;border:1px solid #374151;box-shadow:0 20px 60px rgba(0,0,0,.6);-webkit-overflow-scrolling:touch}@media(max-width:768px){.modal-content{padding:2rem;margin:1rem;max-height:calc(100vh - 3rem)}}.modal-close{position:-webkit-sticky;position:sticky;top:-1.5rem;right:-1.5rem;background:rgba(32,39,58,.9);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid hsla(0,0%,100%,.1);font-size:2rem;line-height:1;cursor:pointer;color:#d1d5db;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .15s ease-in-out;z-index:10;margin-left:auto;margin-right:-1.5rem;margin-top:-1.5rem;box-shadow:0 2px 8px rgba(0,0,0,.3);float:right}.modal-close:hover{background:#20273a;color:#f9fafb;transform:scale(1.1);box-shadow:0 4px 12px rgba(0,0,0,.4)}@media(max-width:768px){.modal-close{top:-1rem;right:-1rem;font-size:1.5rem;width:32px;height:32px;margin-right:-1rem;margin-top:-1rem}}.project-links-heading{font-weight:600;font-size:1rem;display:block;text-align:center}*,:after,:before{box-sizing:border-box;margin:0;padding:0}body,html{max-width:100vw;overflow-x:hidden}html{scroll-behavior:smooth}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:1rem;line-height:1.6;color:#f9fafb;background:#111827;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,h5,h6{font-weight:700;line-height:1.2;margin-bottom:1rem}h1{font-size:2.25rem}@media(max-width:768px){h1{font-size:1.875rem}}h2{font-size:1.875rem}@media(max-width:768px){h2{font-size:1.5rem}}h3{font-size:1.5rem}@media(max-width:768px){h3{font-size:1.25rem}}h4{font-size:1.25rem}h5{font-size:1.125rem}h6{font-size:1rem}p{margin-bottom:1rem;color:#d1d5db}a{color:#2563eb;text-decoration:none;transition:color .15s ease-in-out}a:hover{color:#1e40af}code{font-size:.9em;padding:.2em .4em;border-radius:.25rem;border:1px solid #374151}code,pre{font-family:JetBrains Mono,Fira Code,Consolas,Liberation Mono,Menlo,Courier,monospace;background:#1f2937}pre{padding:1rem;border-radius:.375rem;border:1px solid #374151;overflow-x:auto;margin-bottom:1rem}pre code{background:none;border:none;padding:0}ol,ul{margin-bottom:1rem;padding-left:1.5rem}li{margin-bottom:.25rem}img{max-width:100%;height:auto;border-radius:.375rem}input,select,textarea{font-family:inherit;font-size:inherit;padding:.5rem 1rem;border:1px solid #374151;border-radius:.375rem;background:#111827;color:#f9fafb;transition:border-color .15s ease-in-out}input:focus,select:focus,textarea:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px rgba(37,99,235,.1)}button{font-family:inherit;font-size:inherit;cursor:pointer;border:none;background:none}.container{max-width:1200px;margin:0 auto;padding:0 1rem}@media(min-width:768px){.container{padding:0 1.5rem}}.flex-center{justify-content:center}.flex-between,.flex-center{display:flex;align-items:center}.flex-between{justify-content:space-between}.text-center{text-align:center}.text-primary{color:#f9fafb}.text-secondary{color:#d1d5db}.text-light{color:#9ca3af}.bg-primary{background:#2563eb}.bg-secondary{background:#1f2937}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.fade-in{animation:fadeIn .6s ease-in-out}.slide-up{animation:slideUp .6s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}