@font-face{font-display:swap;font-family:"Syne";font-style:normal;font-weight:700;src:local(""), url("../fonts/syne-v24-latin-700.woff2") format("woff2")}@font-face{font-display:swap;font-family:"Space Grotesk";font-style:normal;font-weight:500;src:local(""), url("../fonts/space-grotesk-v22-latin-500.woff2") format("woff2")}@font-face{font-display:swap;font-family:"Space Grotesk";font-style:normal;font-weight:700;src:local(""), url("../fonts/space-grotesk-v22-latin-700.woff2") format("woff2")}@font-face{font-display:swap;font-family:"Lexend";font-style:normal;font-weight:400;src:local(""), url("../fonts/lexend-v26-latin-regular.woff2") format("woff2")}:root{--gsap-accent-color:#ffffff;--background-color:#111118;--noise-texture:url("../img/noisy.png");--transition-fast:0.15s;--transition-medium:0.3s;--transition-slow:0.5s;--easing-standard:cubic-bezier(0.25, 0.8, 0.25, 1);--text-color:hsl(258, 10%, 95%);--text-color-muted:hsl(256, 10%, 70%);--border-color:hsl(258, 15%, 25%);--card-background-hsl:258, 20%, 15%;--card-background:hsla(var(--card-background-hsl), 0.6);--accent-color:hsl(258, 80%, 75%);--accent-color-dark:hsl(258, 60%, 60%);--accent-color-dark-rgb:129, 92, 214;--accent-color-light:hsl(258, 90%, 85%);--btn-text-color:hsl(258, 20%, 10%);--spotlight-color-hsl:258, 100%, 98%;--spotlight:var(--spotlight-color-hsl);--error-color:#ef4444;--accent-color-rgb:139, 92, 246;--accent-color-secondary-rgb:244, 114, 182;--accent-color-secondary:hsl(329, 86%, 70%);--accent-color-fade-rgb:190, 170, 250;--accent-color-secondary-fade-rgb:250, 180, 210}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:"Lexend", sans-serif;background-color:var(--background-color);color:var(--text-color);position:relative;overflow-x:hidden;cursor:default}.aurora-layer{width:200vw;height:200vh;position:fixed;top:-50vh;left:-50vw;z-index:0;pointer-events:none;will-change:transform}.aurora-group-1{background:radial-gradient( 50vw circle at 30% 30%, rgba(var(--accent-color-rgb), 0.2) 0%, rgba(var(--accent-color-fade-rgb), 0.1) 40%, transparent 75% ), radial-gradient( 50vw circle at 70% 70%, rgba(var(--accent-color-secondary-rgb), 0.15) 0%, rgba(var(--accent-color-secondary-fade-rgb), 0.08) 40%, transparent 75% );animation:aurora-rotation 50s linear infinite}.aurora-group-2{background:radial-gradient( 50vw circle at 65% 35%, rgba(var(--accent-color-rgb), 0.15) 0%, rgba(var(--accent-color-fade-rgb), 0.08) 40%, transparent 75% ), radial-gradient( 50vw circle at 35% 65%, rgba(var(--accent-color-secondary-rgb), 0.2) 0%, rgba(var(--accent-color-secondary-fade-rgb), 0.1) 40%, transparent 75% );animation:aurora-rotation-cc 40s linear infinite}@keyframes aurora-rotation{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes aurora-rotation-cc{from{transform:rotate(0deg)}to{transform:rotate(-360deg)}}.noise-overlay{position:absolute;inset:0;background-image:var(--noise-texture);z-index:1;opacity:0.05;pointer-events:none}header{position:fixed;top:0;left:0;width:100%;z-index:50;background-color:var(--background-color);border-bottom:1px solid var(--border-color)}nav.navbar{padding:1rem}nav.navbar ul{display:flex;justify-content:center;align-items:center;list-style:none}nav.navbar li{margin:0 0.5rem}nav.navbar a.nav-button{color:var(--text-color);text-decoration:none;padding:0.5rem 1rem;border-radius:0.375rem;border-width:1px;border-style:solid;border-color:transparent;background-color:rgba(255, 255, 255, 0);transition:background-color var(--transition-fast) var(--easing-standard), border-color var(--transition-fast) var(--easing-standard)}nav.navbar a.nav-button .icon{margin-bottom:0.15em;margin-right:0.5em}nav.navbar a.nav-button:focus-within,nav.navbar a.nav-button:hover{background-color:rgba(255, 255, 255, 0.1)}nav.navbar a.nav-button:active{background-color:rgba(255, 255, 255, 0.1);border-color:var(--accent-color)}nav.navbar a.nav-button:focus-visible{outline:2px solid var(--accent-color-secondary);outline-offset:1px}main{position:relative;padding-top:60px;isolation:isolate}footer,main{z-index:2}.text-center{text-align:center}.fixed{position:fixed}.card-header,h1,h2,h3{font-family:"Space Grotesk", monospace}#hero h1{font-family:"Syne", sans-serif;font-weight:700}#hero p{color:var(--text-color-muted)}.button-group{display:flex;justify-content:center;align-items:center;gap:1rem;margin-top:2rem;flex-wrap:wrap}.section{min-height:calc(100vh - 60px);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:4rem 2rem;position:relative;z-index:2}.section h1{font-family:"Syne", sans-serif;font-weight:700;color:var(--text-color);text-shadow:0 0 15px hsla(256, 15%, 85%, 0.3);font-size:3rem;margin-bottom:0.5rem}.section h2{font-family:"Space Grotesk", monospace;font-weight:400;color:var(--text-color);font-size:2rem;margin-bottom:1rem}p{line-height:1.7}.section p{font-size:1.125rem;color:var(--text-color-muted);margin-top:1rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:0.75em;padding:0.8rem 1.6rem;background:transparent;color:var(--text-color);text-decoration:none;font-family:"Space Grotesk", sans-serif;font-weight:500;border:1px solid var(--border-color);border-radius:0.375rem;cursor:pointer;position:relative;overflow:hidden;transition:background-color var(--transition-medium) var(--easing-standard), color var(--transition-medium) var(--easing-standard), border-color var(--transition-medium) var(--easing-standard), transform var(--transition-fast) var(--easing-standard), box-shadow var(--transition-medium) var(--easing-standard)}.btn:focus-within,.btn:hover{border-color:var(--accent-color);color:var(--btn-text-color);box-shadow:0 0 15px -2px var(--accent-color)}.btn:active,.skill-item:active{transform:scale(0.97);transition:transform 0.1s var(--easing-standard)}.btn.primary{background-color:var(--accent-color);border-color:var(--accent-color);color:var(--btn-text-color)}.btn.primary:focus-within,.btn.primary:hover{background-color:var(--accent-color-light);border-color:var(--accent-color-light);box-shadow:0 0 20px -2px var(--accent-color)}.btn.secondary{background-color:rgba(var(--accent-color-dark-rgb), 0);border:1px solid var(--accent-color-dark);color:var(--text-color)}.btn.secondary:focus-within,.btn.secondary:hover{background-color:rgba(var(--accent-color-dark-rgb), 1);border-color:var(--accent-color-dark);color:var(--text-color);box-shadow:0 0 20px -5px var(--accent-color-dark)}.btn:focus-visible{outline:2px solid var(--accent-color-secondary);outline-offset:1px}#projects h1{font-size:3rem;margin-bottom:0.5rem}#tech-stack .skills-legend{font-size:0.9em;color:var(--text-color-muted);font-style:italic}#tech-stack .skills-legend .icon{color:var(--text-color-muted);margin-bottom:0.25em}#tech-stack h1{font-size:3rem;margin-bottom:0.5rem}.tech-stack-body{padding:1rem}.tech-stack-body .tech-category{margin-bottom:1.5rem;text-align:center}.tech-stack-body .tech-category:last-child{margin-bottom:0}.tech-stack-body .tech-category h3{font-family:"Space Grotesk", monospace;font-weight:400;font-size:1.5rem;color:var(--accent-color);margin-bottom:0.5rem;border-bottom:1px solid rgba(var(--accent-color-rgb), 0);padding-bottom:0.25rem;display:inline-block;transition:border-bottom-color var(--transition-medium) var(--easing-standard)}.tech-stack-body .tech-category p{font-size:1rem;color:var(--text-color);line-height:1.6;margin-top:0}.card:hover .tech-stack-body .tech-category h3{border-bottom:1px solid rgba(var(--accent-color-rgb), 0.25)}.skills-list{display:flex;flex-wrap:wrap;justify-content:center;gap:0.75rem;padding-top:0.5rem}.skill-item{display:inline-flex;align-items:center;background-color:rgba(255, 255, 255, 0.07);color:var(--text-color);cursor:pointer;text-decoration:none;padding:0.4rem 0.8rem;border-radius:0.375rem;font-size:0.9rem;font-family:"Lexend", sans-serif;border:1px solid transparent;transition:background-color var(--transition-fast) var(--easing-standard), border-color var(--transition-fast) var(--easing-standard)}.skill-item:focus,.skill-item:hover{background-color:rgba(255, 255, 255, 0.12);border-color:var(--accent-color)}.skill-item:focus-visible{outline:2px solid var(--accent-color-secondary);outline-offset:1px}.skill-item .skill-icon{width:1.1em;height:1.1em;margin-right:0.5em}.skill-item em{font-size:0.85em;opacity:0.8;font-style:normal;margin-left:0.5em}.skill-item-action-icon{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;width:0;opacity:0;overflow:visible;position:relative;height:1.2em;transition:width var(--transition-slow) var(--easing-standard), opacity var(--transition-medium) var(--easing-standard), margin-left var(--transition-slow) var(--easing-standard)}.skill-item:focus .skill-item-action-icon,.skill-item:hover .skill-item-action-icon{width:1.2em;opacity:1;margin-left:0.5em}.skill-item svg.icon.asterisk{transform-origin:center;transform:rotate(0deg);transition:transform var(--transition-medium) var(--easing-standard)}.skill-item:focus svg.icon.asterisk,.skill-item:hover svg.icon.asterisk{animation:rotate var(--transition-medium) var(--easing-standard)}@keyframes rotate{100%{transform:rotate(-180deg)}}.skill-item-action-icon svg.morphing-icon{width:1em;height:1em;display:block;overflow:visible}.skill-item-action-icon svg.morphing-icon path{stroke:var(--text-color)}.card{background-color:var(--card-background);border:1px solid var(--border-color);border-radius:0.5rem;position:relative;overflow:hidden;z-index:2;padding:1.5rem;margin:1.5rem auto;width:90%;max-width:500px;transform:scale(1);backface-visibility:hidden;-webkit-backface-visibility:hidden;transition:transform var(--transition-medium) var(--easing-standard), border-color var(--transition-medium) var(--easing-standard)}.card::before{content:"";position:absolute;inset:0;background:radial-gradient( circle 300px at var(--mouse-x) var(--mouse-y), hsla(var(--spotlight), 0.075) 0%, hsla(var(--spotlight), 0.05) 30%, hsla(var(--spotlight), 0) 100% );pointer-events:none;opacity:0;transition:opacity var(--transition-slow) var(--easing-standard)}.card:hover::before{opacity:1}.card:hover{border-color:hsl(256, 15%, 40%);transform:scale(1.02)}.card-header{font-family:"Space Grotesk", monospace;font-size:2rem;font-weight:700;margin-bottom:0.75rem}.card-body p{font-size:1rem;color:var(--text-color);margin-top:0.5rem;text-align:center}.card-footer{text-align:center;margin-top:1rem}.card-footer .btn{margin-top:0}footer#contact{background-color:var(--background-color);padding:2rem 1rem 0.5rem;margin-top:3rem;text-align:center;border-top:1px solid var(--border-color);position:relative}footer#contact h1{font-family:"Space Grotesk", monospace;font-size:1.875rem;font-weight:700;margin-top:0;margin-bottom:1.5rem}.icon{width:1.2em;height:1.2em;display:inline-block;vertical-align:middle;color:inherit;flex-shrink:0;transform:scale(1);transition:transform var(--transition-fast) var(--easing-standard)}#tech-stack .icon{color:var(--text-color);transition:none}footer#contact .btn{display:inline-flex;align-items:center;justify-content:flex-start;padding:0.75rem 1rem;margin:0.5rem 0.25rem;min-width:200px}.icon-email-hover{display:none}footer#contact .btn:focus-within,footer#contact .btn:hover{color:var(--text-color)}footer#contact .btn:focus-visible{outline:2px solid var(--accent-color-secondary);outline-offset:1px}footer#contact a.btn:hover .icon-email-default{display:none}footer#contact a.btn:hover .icon-email-hover{display:inline-block}a.btn:hover .icon{animation:bouncy var(--transition-medium) var(--easing-standard)}@keyframes bouncy{0%{transform:scale(1)}50%{transform:scale(1.2)}100%{transform:scale(1)}}footer#contact .badge .links{color:var(--accent-color);text-decoration:wavy;text-decoration-line:underline;text-decoration-color:rgba(var(--accent-color-rgb), 0);font-size:0.875rem;line-height:1;transition:font-size var(--transition-fast) var(--easing-standard), text-decoration-color var(--transition-fast) var(--easing-standard)}footer#contact .badge .links:focus-within,footer#contact .badge .links:hover{font-size:1rem;text-decoration-color:rgba(var(--accent-color-rgb), 1)}footer#contact .badge .links:focus-visible{outline:2px solid var(--accent-color-secondary);outline-offset:1px}footer#contact .badge{font-size:0.875rem;color:var(--text-color);display:block;width:100%;margin-top:1rem;margin-bottom:1rem}footer#contact .badge .icon{margin-right:0.2em;margin-bottom:0.175em}footer#contact .nv3{display:flex;flex-direction:column;align-items:center;margin:1.5rem auto 0}footer#contact .nv3 a{display:inline-block;position:relative;text-decoration:none}footer#contact .nv3 img{opacity:0.25;width:10rem;height:auto;display:block;filter: drop-shadow( 0 0 5px rgba(var(--accent-color-secondary-fade-rgb), 0.6) );transition:opacity var(--transition-medium) var(--easing-standard), filter var(--transition-medium) var(--easing-standard)}footer#contact .nv3 a:focus-within img,footer#contact .nv3 a:hover img{opacity:1;filter: drop-shadow(0 0 15px rgba(var(--accent-color-rgb), 0.5))}footer#contact .nv3 a:active img{filter: drop-shadow(0 0 50px rgba(var(--accent-color-rgb), 1))}footer#contact .nv3 a:focus-visible{outline:2px solid var(--accent-color-secondary);outline-offset:1px}footer#contact .nv3 .notice{color:var(--text-color);text-align:center;width:100%;overflow:hidden;opacity:0;transform:translateY(-2rem);margin-top:0;margin-bottom:0;pointer-events:none;transition:opacity var(--transition-fast) var(--easing-standard), transform var(--transition-slow) var(--easing-standard)}footer#contact .nv3 .notice .icon{margin-right:0.5em;margin-bottom:0.15em}footer#contact .nv3 a:focus-visible .notice,footer#contact .nv3 a:hover .notice{opacity:1;transform:translateY(0)}footer#contact .btn.copy-btn{border-color:var(--border-color);color:var(--text-color-muted);box-shadow:0 0 0 0 var(--border-color)}footer#contact .btn.copy-btn:focus-visible,footer#contact .btn.copy-btn:hover{border-color:var(--text-color-muted);color:var(--text-color);box-shadow:0 0 10px 0 var(--border-color)}footer#contact .btn.copy-btn.copied-success{background-color:hsl(140, 50%, 45%);border-color:hsl(140, 50%, 55%);color:var(--text-color);box-shadow:0 0 15px 0 hsl(140, 50%, 55%)}footer#contact .badge .license{color:var(--text-color-muted)}@media (max-width: 1535px){.card::before{display:none}.card:hover{transform:none;border-color:var(--border-color)}.skill-item .skill-item-action-icon{width:1.2em;opacity:0.7;margin-left:0.5em;transition:opacity 0.2s var(--easing-standard)}.skill-item:active .skill-item-action-icon{opacity:1}#hero h1,#projects h1,#tech-stack h1{font-size:2.5rem}#hero h2{font-size:1.5rem}}@media (max-width: 1024px){footer#contact .nv3 .notice,footer#contact .nv3 img{opacity:1}footer#contact .nv3 .notice{transform:translateY(0)}.card{width:90%;padding:1.25rem}nav.navbar ul{flex-wrap:wrap;gap:0.25rem 0.5rem}nav.navbar li{margin:0}}@media (max-width: 768px){nav.navbar a.nav-button .icon{display:none}.section{padding:3rem 1rem}.card{width:95%}footer#contact .btn{display:block;margin:0.75rem auto;width:100%;max-width:280px}footer#contact .btn .icon{margin-right:0.75rem}#hero h1,#projects h1,#tech-stack h1{font-size:2.2rem}#hero h2{font-size:1.3rem}.card-header{font-size:1.5rem}.tech-stack-body .tech-category h3{font-size:1.1rem}.tech-stack-body .tech-category p{font-size:0.9rem}.button-group{flex-direction:column;gap:1rem;width:100%;align-items:center}}@media (prefers-reduced-motion: reduce){*,*::after,*::before{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}.aurora-group-1,.aurora-group-2{animation:none}.skill-item:focus .skill-item-action-icon,.skill-item:hover .skill-item-action-icon{width:1.2em;opacity:1;margin-left:0.5em}}
