@import"https://fonts.googleapis.com/css2?family=Neonderthaw&display=swap";@import"https://fonts.googleapis.com/css2?family=Montserrat+Alternates:ital,wght@0,100..900;1,100..900";*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root{--color-beige-0: #FFFCF2;--color-beige-1: #f0f2a6;--color-link-0: #007acc;--color-black-0: #1a1b25;--color-shadow-box: #1d203f;--thin-gap: .4rem;--light-gap: .8rem;--border-radius-circle: 50%;--border-radius-large: 14px;--border-radius-medium: 12px;--border-radius-medium-small: 8px;--border-radius-small: 6px;--border-radius-xsmall: 4px;--animation-delay: .12s;--animation-duration: .75s;font-family:Monserrat,sans-serif,Neonderthaw,sans-serif;line-height:1.5;font-weight:400;--background-color: #24242472;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{height:100vh;margin:0;--x: calc(var(--posX, 0) * 1px);--y: calc(var(--posY, 0) * 1px);background-image:linear-gradient(115deg,#d3ffd7,#000),radial-gradient(90% 100% at calc(50% + var(--x)) calc(0% + var(--y)),#c8c8c8,#16002d),radial-gradient(100% 100% at calc(80% - var(--x)) calc(0% - var(--y)),#faff00,#240000),radial-gradient(150% 210% at calc(100% + var(--x)) calc(0% + var(--y)),#14af7d,#000aff),radial-gradient(100% 100% at calc(100% - var(--x)) calc(30% - var(--y)),#ff4d00,#00c8ff),linear-gradient(60deg,red,#7856ff);background-blend-mode:overlay,overlay,difference,difference,difference,normal}h1{font-size:3.2em;line-height:1.1;text-align:center}.titleContainer[data-v-aed181cb]{display:flex;flex-direction:column;align-items:center;font-family:Neonderthaw;width:260px}.titleContainer h1[data-v-aed181cb]{text-decoration:underline;text-underline-offset:var(--light-gap);text-decoration-skip:objects}.slide-up-enter-active[data-v-aed181cb],.slide-up-leave-active[data-v-aed181cb]{transition:all .3s ease}.slide-up-enter-from[data-v-aed181cb],.slide-up-leave-to[data-v-aed181cb]{transform:translateY(10px);opacity:0}/*!
 * Hamburgers
 * @description Tasty CSS-animated hamburgers
 * @author Jonathan Suh @jonsuh
 * @site https://jonsuh.com/hamburgers
 * @link https://github.com/jonsuh/hamburgers
 */.hamburger[data-v-b7afb03a]{padding:15px;display:inline-block;position:absolute;right:0;z-index:4;cursor:pointer;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible}.hamburger[data-v-b7afb03a]:hover,.hamburger.isActive[data-v-b7afb03a]:hover{opacity:.7}.hamburger.isActive .hamburger-inner[data-v-b7afb03a],.hamburger.isActive .hamburger-inner[data-v-b7afb03a]:before,.hamburger.isActive .hamburger-inner[data-v-b7afb03a]:after{background-color:var(--color-beige-0)}.hamburger-box[data-v-b7afb03a]{width:40px;height:24px;display:inline-block;position:relative}.hamburger-inner[data-v-b7afb03a]{display:block;top:50%;margin-top:-2px}.hamburger-inner[data-v-b7afb03a],.hamburger-inner[data-v-b7afb03a]:before,.hamburger-inner[data-v-b7afb03a]:after{width:40px;height:4px;background-color:var(--color-beige-0);border-radius:4px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner[data-v-b7afb03a]:before,.hamburger-inner[data-v-b7afb03a]:after{content:"";display:block}.hamburger-inner[data-v-b7afb03a]:before{top:-10px}.hamburger-inner[data-v-b7afb03a]:after{bottom:-10px}.hamburger--spin .hamburger-inner[data-v-b7afb03a]{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin .hamburger-inner[data-v-b7afb03a]:before{transition:top .1s .25s ease-in,opacity .1s ease-in}.hamburger--spin .hamburger-inner[data-v-b7afb03a]:after{transition:bottom .1s .25s ease-in,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.isActive[data-v-b7afb03a]{color:#3a5a40}.hamburger--spin.isActive .hamburger-inner[data-v-b7afb03a]{transform:rotate(225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin.isActive .hamburger-inner[data-v-b7afb03a]:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s .12s ease-out}.hamburger--spin.isActive .hamburger-inner[data-v-b7afb03a]:after{bottom:0;transform:rotate(-90deg);transition:bottom .1s ease-out,transform .22s .12s cubic-bezier(.215,.61,.355,1)}.hamburger--spin-r .hamburger-inner[data-v-b7afb03a]{transition-duration:.22s;transition-timing-function:cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r .hamburger-inner[data-v-b7afb03a]:before{transition:top .1s .25s ease-in,opacity .1s ease-in}.hamburger--spin-r .hamburger-inner[data-v-b7afb03a]:after{transition:bottom .1s .25s ease-in,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r.isActive .hamburger-inner[data-v-b7afb03a]{transform:rotate(-225deg);transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hamburger--spin-r.isActive .hamburger-inner[data-v-b7afb03a]:before{top:0;opacity:0;transition:top .1s ease-out,opacity .1s .12s ease-out}.hamburger--spin-r.isActive .hamburger-inner[data-v-b7afb03a]:after{bottom:0;transform:rotate(90deg);transition:bottom .1s ease-out,transform .22s .12s cubic-bezier(.215,.61,.355,1)}.nav__container[data-v-b7afb03a]{width:100%;height:auto;position:relative}.nav__menu--box[data-v-b7afb03a]{background-color:var(--color-black-0);position:absolute;right:0;padding-top:3em;z-index:2;text-align:right;border:1px solid var(--color-beige-0);border-radius:var(--border-radius-medium);transition:all .2s ease-in}.slide-fade-enter-active[data-v-b7afb03a]{transition:all .3s ease-out}.slide-fade-leave-active[data-v-b7afb03a]{transition:all .4s cubic-bezier(1,.5,.8,1)}.slide-fade-enter-from[data-v-b7afb03a],.slide-fade-leave-to[data-v-b7afb03a]{transform:translate(20px);opacity:0}nav ul[data-v-b7afb03a]{margin:0 1em}nav ul li[data-v-b7afb03a]{list-style:none;cursor:pointer;margin-bottom:30px;transition:all .2s ease-out}nav ul li[data-v-b7afb03a]:hover{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:6px;text-shadow:2px 2px 14px var(--color-beige-1);-webkit-background-clip:text;-moz-background-clip:text;background-clip:text;transform:scale(1.15)}nav ul .link[data-v-b7afb03a]{color:var(--color-beige-0);font-family:Neonderthaw;font-size:38px;padding:10px 30px;display:block;text-decoration:none}.HeaderContainer[data-v-f5f5b9b1]{display:flex;justify-content:space-between;color:var(--color-beige-0);width:100%;height:auto;padding:1.5rem;position:relative}.closingButton[data-v-f5f5b9b1]{outline:none;max-height:fit-content;color:var(--color-beige-0)}.footerContainer[data-v-d2d0a1aa]{display:flex;position:relative;padding-bottom:.5rem;padding-left:1.4rem;align-items:center;justify-content:center}.footerContainer p[data-v-d2d0a1aa]{color:var(--color-beige-0);font-size:1em}.background{display:flex;align-items:center;justify-content:center;margin:0;min-width:320px;min-height:100vh}.container{position:relative;display:flex;border-radius:var(--border-radius-large);flex-direction:column;justify-content:space-between;background-color:var(--color-black-0);background-clip:content-box;width:calc(100vw - 15em);max-width:1200px;max-height:900px;height:calc(100vh - 10rem);box-shadow:-8px 8px 30px 2px var(--color-shadow-box);-webkit-box-shadow:-8px 8px 30px 2px var(--color-shadow-box);-moz-box-shadow:-8px 8px 30px 2px var(--color-shadow-box);transition:all .3s ease-out}.component{padding:0 4rem}.fade-enter-active,.fade-leave-active{transition:all .3s ease}.fade-enter-from,.fade-leave-to{transform:translateY(4rem);opacity:0}@media (max-width: 1200px){.container{width:90%;height:calc(100vh - 8rem)}.component{padding:0 2rem}}@media (max-width: 768px){.container{width:95%;height:calc(100vh - 6rem)}.component{padding:0 1rem}}@media (max-width: 480px){.container{width:100%;height:calc(100vh - 4rem)}.component{margin:0 2.5rem;padding:0}}@keyframes lineAppear{0%{opacity:0;transform:translateY(2em)}to{opacity:1;transform:translateY(0)}}@keyframes photoSlideIn{0%{opacity:0;transform:translate(-4em)}to{opacity:1;transform:translate(0)}}#home{font-family:Montserrat Alternates,sans-serif;color:var(--color-beige-0);margin:.4em 4em;max-height:calc(100vh - 2rem);overflow-y:auto;padding:0 4rem 0 0}#home p{font-size:1.5em;font-weight:300}.fancyStyle{font-family:Neonderthaw;font-size:1.25em}.fancyStyle a{color:var(--color-beige-0);text-decoration:none}.content{display:flex;justify-content:space-between;flex-direction:row;gap:4em}.image-container{width:30%;height:100%;border-radius:var(--border-radius-small);overflow:hidden}.image-container .photo-slide-in{width:100%;height:100%;object-fit:cover;animation:photoSlideIn var(--animation-duration) cubic-bezier(.65,.05,.36,1) forwards}.text-container{width:70%;align-items:flex-end}.text-container .line-appear{font-size:1.5em;font-weight:300;opacity:0;animation:lineAppear var(--animation-duration) cubic-bezier(.65,.05,.36,1) forwards}.text-container .line-appear:nth-child(1){animation-delay:.12s}.text-container .line-appear:nth-child(2){animation-delay:.24s}.text-container .line-appear:nth-child(3){animation-delay:.36s}.text-container .line-appear:nth-child(4){animation-delay:.48s}.text-container .line-appear:nth-child(5){animation-delay:.6s}.text-container .line-appear:nth-child(6){animation-delay:.72s}.text-container .line-appear:nth-child(7){animation-delay:.84s}.text-container .line-appear:nth-child(8){animation-delay:.96s}.text-container .line-appear:nth-child(9){animation-delay:1.08s}.text-container .line-appear:nth-child(10){animation-delay:1.2s}.card[data-v-96c169fa]{--img-scale: 1.001;--title-color: #790}.card__container[data-v-96c169fa]{display:flex;flex-direction:column;justify-content:space-between;max-width:350px;min-height:400px;background:var(--color-beige-0);border-radius:var(--border-radius-medium);box-shadow:0 2px 8px #0000001a;transform-origin:center;transition:all .4s ease-in-out;overflow:hidden;position:relative}.card--image[data-v-96c169fa]{position:relative;height:200px;overflow:hidden}.card--image img[data-v-96c169fa]{object-fit:cover;object-position:center;height:100%;width:100%;transform-origin:center;transform:scale(var(--img-scale));transition:transform .4s ease-in-out}.card--overlay[data-v-96c169fa]{position:absolute;top:12px;right:12px;z-index:1}.card--body[data-v-96c169fa]{color:var(--color-black-0);height:auto;width:100%;border-radius:0 0 var(--border-radius-medium) var(--border-radius-medium);padding:20px;display:flex;flex-direction:column;flex-grow:1}.card--header[data-v-96c169fa]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.card--title[data-v-96c169fa]{font-size:1.2rem;font-weight:600;margin:0;color:var(--title-color);flex:1;line-height:1.3}.card--stats[data-v-96c169fa]{display:flex;gap:8px;margin-left:12px}.card--stats .stat[data-v-96c169fa]{font-size:.85rem;color:#666;white-space:nowrap}.card--footer[data-v-96c169fa]{margin-top:auto;padding-top:16px}.card--meta[data-v-96c169fa]{margin-bottom:16px}.card--meta .last-updated[data-v-96c169fa]{font-size:.8rem;color:#888;display:block;margin-bottom:8px}.card--topics[data-v-96c169fa]{display:flex;flex-wrap:wrap;gap:4px}.card--topics .topic-tag[data-v-96c169fa]{background:#e1e5e9;color:#586069;padding:2px 8px;border-radius:var(--border-radius-medium);font-size:.75rem;font-weight:500}.card--actions[data-v-96c169fa]{display:flex;gap:8px;flex-wrap:wrap}.card .description[data-v-96c169fa]{margin:0 0 16px;font-size:.9rem;line-height:1.4;color:#586069;flex-grow:1}.card .language-badge[data-v-96c169fa]{background:#007acc;color:#fff;padding:4px 8px;border-radius:var(--border-radius-xsmall);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.card .btn--primary[data-v-96c169fa],.card .btn--secondary[data-v-96c169fa]{display:inline-block;padding:8px 16px;border-radius:var(--border-radius-small);text-decoration:none;font-size:.85rem;font-weight:500;transition:all .2s ease;text-align:center;flex:1;min-width:80px}.card .btn--primary[data-v-96c169fa]{background:#007acc;color:#fff}.card .btn--primary[data-v-96c169fa]:hover{background:#005a9e;transform:translateY(-1px)}.card .btn--secondary[data-v-96c169fa]{background:transparent;color:#007acc;border:1px solid #007acc}.card .btn--secondary[data-v-96c169fa]:hover{background:#007acc;color:#fff;transform:translateY(-1px)}article[data-v-96c169fa]:has(:hover,:focus){--img-scale: 1.1;--title-color: var(--color-beige-1) --box-shadow: rgba(0, 0, 0, .16) 0px 10px 36px 0px, rgba(0, 0, 0, .06) 0px 0px 0px 1px}#projects{padding:40px 24px;max-width:1200px;margin:0 auto;align-items:unset}button{background-color:var(--color-beige-0);color:var(--color-black-0)}.projects-header{text-align:center}.projects-header h1{font-size:2.5rem;font-weight:700;margin-bottom:12px;color:var(--color-black-0, #2d3748)}.projects-header p{font-size:1.1rem;color:#666;margin-bottom:24px}.projects-header .refresh-btn{background:var(--color-beige-0);color:var(--color-black-0);border:none;padding:12px 24px;border-radius:var(--border-radius-medium-small);font-size:1rem;font-weight:500;cursor:pointer;transition:all .2s ease}.projects-header .refresh-btn:hover:not(:disabled){background:var(--color-beige-1);transform:translateY(-2px)}.projects-header .refresh-btn:disabled{background:#ccc;cursor:not-allowed;transform:none}.gallery{display:flex;flex-wrap:nowrap;gap:24px;margin-top:1.4em;overflow-x:auto;padding-bottom:16px;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}.gallery>*{flex-shrink:0;min-width:320px;scroll-snap-align:start}.loading-state,.error-state,.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.loading-state .loader,.error-state .loader,.empty-state .loader{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #007acc;border-radius:50%;animation:spin 1s linear infinite;margin-bottom:20px}.loading-state .error-icon,.loading-state .empty-icon,.error-state .error-icon,.error-state .empty-icon,.empty-state .error-icon,.empty-state .empty-icon{font-size:4rem;margin-bottom:20px}.loading-state h3,.error-state h3,.empty-state h3{font-size:1.5rem;font-weight:600;margin-bottom:12px;color:var(--color-black-0, #2d3748)}.loading-state p,.error-state p,.empty-state p{font-size:1rem;color:#666;margin-bottom:24px;max-width:400px}.loading-state .retry-btn,.error-state .retry-btn,.empty-state .retry-btn{background:#007acc;color:#fff;border:none;padding:12px 24px;border-radius:var(--border-radius-medium-small);font-size:1rem;font-weight:500;cursor:pointer;transition:all .2s ease}.loading-state .retry-btn:hover,.error-state .retry-btn:hover,.empty-state .retry-btn:hover{background:#005a9e;transform:translateY(-2px)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 768px){main{padding:20px 16px}.projects-header h1{font-size:2rem}.gallery>*{min-width:280px}}#skills{padding:40px 24px;max-width:1200px;height:100%;margin:0 auto;display:flex;flex-direction:column;align-items:stretch;min-height:0}.skills-header{margin-bottom:1rem}.filters{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center}.pill{padding:.4rem .9rem;font-size:.9rem;font-family:inherit;color:#f8f8f2;background:#f8f8f21a;border:1px solid rgba(248,248,242,.3);border-radius:999px;cursor:pointer;transition:background .2s,border-color .2s,color .2s}.pill:hover{background:#f8f8f226;border-color:#f8f8f280}.pill.active{background:#f92672;border-color:#f92672;color:#fff}.code-block{font-size:1.25rem;color:#f8f8f2;font-family:Fira Code,monospace;white-space:pre-wrap;word-break:break-word;overflow:auto;flex:1;min-height:0;max-height:60vh;padding:1rem;margin:0;border-radius:var(--border-radius-medium-small);background:#0003}.keyword{color:#f92672!important;font-weight:700}.variable{color:#66d9ef!important;font-weight:700}.property{color:#a6e22e!important;font-weight:700}.string{color:#e6db74!important;font-style:italic}.operator{color:#f8f8f2!important}main[data-v-812e62d5]{display:flex;flex-direction:column;gap:2em;margin:.4em 4em;position:relative;color:var(--color-beige-0)}main h2[data-v-812e62d5]{font-size:1.9em}main ul li[data-v-812e62d5]{list-style:none;height:fit-content}main ul li a[data-v-812e62d5]{display:flex;align-items:center;gap:1em;font-size:1.5em;color:inherit;text-decoration:none;transition:all .3s ease}main ul li a label[data-v-812e62d5]{align-self:center;font-size:1.2em}main ul li a label i[data-v-812e62d5]{width:1em}main ul li a[data-v-812e62d5]:hover{text-decoration:underline;text-decoration-thickness:4px;text-underline-offset:var(--thin-gap)}main ul li a .link[data-v-812e62d5]{line-height:3;font-weight:800}
