.button{align-items:center;background:var(--button);border:none;border-radius:30px;color:var(--button-text);cursor:pointer;display:flex;font-size:1rem;font-weight:700;justify-content:center;padding:.7rem 1.8rem;text-align:center;transition:opacity .3s ease;-webkit-user-select:none;user-select:none;white-space:nowrap}.button:hover{opacity:.7}.secondary-button{background:var(--btn-secondary-bg);color:var(--btn-secondary-text)}.secondary-button:hover{opacity:.7}.button-container .button{align-items:center;display:flex;justify-content:center;margin:2rem auto 0;max-width:300px;width:100%}.button-disabled{opacity:.5;pointer-events:none}.social-buttons{flex-shrink:0;gap:15px;margin:20px auto 0;max-width:400px}.social-button,.social-buttons{display:flex;justify-content:center}.social-button{align-items:center;background:var(--card-bg);border:1px solid var(--border);border-radius:50%;color:var(--social-icon-fill);height:45px;transition:transform .2s ease,background .2s ease,border-radius .2s ease;width:45px;will-change:transform}.social-button:hover{background:var(--card-bg-hover);border-radius:25%}.social-button img,.social-button svg{height:24px;transition:fill .2s;width:24px}.skill-item{align-items:center;background:var(--card-bg);border:1px solid var(--border);border-radius:18px;display:flex;flex-direction:row;gap:1rem;justify-content:center;min-width:100px;padding:1rem;text-align:center;transition:background .2s,color .2s ease}.skill-item:hover{background:var(--card-bg-hover)}.skill-logo{font-size:1.2rem;object-fit:contain}.skill-item p{font-size:.9rem;font-weight:600;margin:0}.projects-grid .project-card{background:var(--card-bg);border:1px solid var(--border);border-radius:20px;box-shadow:0 0 20px var(--hero-accent);color:var(--text);cursor:pointer;display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden;padding:1.2rem;text-align:left;text-decoration:none;transition:transform .2s ease,background .2s ease;-webkit-user-select:auto;user-select:auto}.projects-grid .project-card:hover:not(:has(.button:hover)){background:var(--card-bg-hover)}.projects-grid .card-header-row{align-items:flex-start;display:flex;flex-grow:1;gap:15px;margin-bottom:1rem;width:100%}.projects-grid .project-logo-wrapper{border-radius:20%;flex-shrink:0;height:60px;overflow:hidden;width:60px}.projects-grid .project-logo-wrapper img{border-radius:0;height:100%;object-fit:cover;width:100%}.projects-grid .project-info{display:flex;flex-direction:column;height:60px;justify-content:space-between;overflow:hidden;text-align:left;width:100%}.projects-grid .project-card h3{font-size:1.1rem;font-weight:600;margin:0;max-height:1.43rem;min-height:1.43rem}.projects-grid .project-card h3,.projects-grid .project-description{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;line-height:1.3;overflow:hidden;text-overflow:ellipsis}.projects-grid .project-description{font-size:.85rem;margin:.1rem 0;max-height:1.105rem;min-height:1.105rem;opacity:.8}.projects-grid .meta-row{align-items:center;color:var(--meta-text);display:flex;flex-wrap:nowrap;font-size:.7rem;font-weight:500;gap:3px;justify-content:flex-start;line-height:1.3;margin-top:auto;overflow:hidden;text-overflow:ellipsis}.projects-grid .meta-separator{color:var(--meta-text);margin:0 3px;opacity:.5}.projects-grid .meta-item{align-items:center;display:flex;flex-shrink:0;gap:3px;white-space:nowrap}.projects-grid .meta-item svg{height:12px;margin-right:2px;vertical-align:middle;width:12px}.projects-grid .meta-item.status-active{color:var(--active-color)}.projects-grid .meta-item.status-inactive{color:var(--inactive-color)}.projects-grid .meta-item.status-discontinued{color:var(--discontinued-color)}.button-group-active{align-self:center;display:flex;gap:10px;justify-content:center;margin-top:.3rem;max-width:400px;width:100%}.button-group-active .button{align-self:unset;border-radius:50px;flex:1 1 50%;font-size:.9rem;font-weight:600;margin-top:0;max-width:180px;white-space:nowrap}.projects-grid .project-card.project-discontinued{text-align:left}.projects-grid .project-discontinued>.button{align-self:flex-start;box-shadow:none;margin-top:1rem;max-width:250px;width:80%}.projects-grid .project-discontinued>.button:hover{box-shadow:none;opacity:1;transform:none}.featured-screenshot-container{display:flex;gap:12px;margin-top:1.5rem;overflow-x:scroll;padding:.5rem 0;width:100%;-webkit-overflow-scrolling:touch;border-top:1px solid var(--border);justify-content:flex-start}.featured-screenshot-container .screenshot{aspect-ratio:16/9;border-radius:8px;box-shadow:0 2px 6px #0000001a;flex-shrink:0;height:auto;min-width:200px;object-fit:cover;width:35%}.featured-screenshot-container::-webkit-scrollbar{display:none}.featured-screenshot-container{-ms-overflow-style:none;scrollbar-width:none}.social-card{background:var(--card-bg);border:1px solid var(--border);border-radius:20px;box-shadow:0 0 20px var(--hero-accent);color:var(--text);cursor:pointer;display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden;padding:1.2rem;text-align:left;text-decoration:none;transition:transform .2s ease,background .2s ease;-webkit-user-select:auto;user-select:auto}.social-card:hover:not(:has(.button:hover)){background:var(--card-bg-hover)}.social-card-header{align-items:center;display:flex;gap:15px}.social-pfp{align-items:center;background:var(--card);border:1px solid var(--border);border-radius:20%;color:var(--text);display:flex;flex-shrink:0;height:60px;justify-content:center;width:60px}.social-pfp svg{height:40px;width:40px}.social-names{display:flex;flex-direction:column;line-height:1.3;overflow:hidden}.social-name{color:var(--text);font-size:1.1rem;font-weight:600}.social-name,.social-username{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.social-username{color:var(--meta-text);font-size:.9rem}.social-card .button{margin-top:1rem}.social-button-link{font-size:.9rem;font-weight:600;padding:.6rem 1.5rem}.modal{align-items:center;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);background:var(--overlay-bg);display:flex;top:0;right:0;bottom:0;left:0;justify-content:center;opacity:0;pointer-events:none;position:fixed;transition:opacity .3s ease;z-index:1005}.modal.active{opacity:1;pointer-events:auto}@keyframes modal-animation{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.modal-content{background:var(--modal-bg);border-radius:18px;color:var(--modal-text);max-width:500px;opacity:0;padding:2rem;position:relative;text-align:center;transform:scale(.7);transition:none;width:90%}.modal.active .modal-content{animation:modal-animation .3s cubic-bezier(.2,.5,.5,1) forwards;opacity:1;transform:scale(1)}.modal-close{background:none;border:none;color:var(--text);cursor:pointer;font-size:2rem;font-weight:400;opacity:.7;position:absolute;right:20px;top:15px;transition:color .2s ease,opacity .2s ease}.modal-close:hover{opacity:1}.modal-logo{align-items:center;background:var(--logo-bg);border-radius:15%;display:flex;height:100px;justify-content:center;margin:auto;width:100px}.modal-logo img{border-radius:20%;height:100%;justify-content:center;object-fit:cover;width:100%}.modal-logo .logo-dark,body.dark-mode .modal-logo .logo-light{display:none}body.dark-mode .modal-logo .logo-dark{display:block}.modal-title{font-size:1.2rem;margin-bottom:.3rem;margin-top:1rem}.modal-description{font-size:.9rem;margin-bottom:1.5rem;opacity:.8}.modal-info{font-size:.8rem;margin-top:1rem;opacity:.8}.modal-buttons{display:flex;flex-wrap:wrap;gap:1rem;justify-content:center;margin-top:1.5rem}.modal-buttons .button,.modal-website{border-radius:30px;box-shadow:none;flex:1;font-weight:700;max-width:180px;padding:.7rem 1.8rem}.modal-website{background:var(--button);color:var(--button-text)}.modal-buttons .button:not(.modal-website){background:var(--btn-secondary-bg);color:var(--btn-secondary-text)}.search-overlay{align-items:center;backdrop-filter:blur(0);-webkit-backdrop-filter:blur(0);background:var(--overlay-bg);display:flex;flex-direction:column;height:100vh;top:0;right:0;bottom:0;left:0;overflow-y:auto;padding:2rem 1rem;position:fixed;width:100vw;z-index:1000;-webkit-overflow-scrolling:touch;opacity:0;overscroll-behavior:contain;transform:scale(1.1);transition:opacity .4s cubic-bezier(.4,0,.2,1),visibility .4s,transform .4s cubic-bezier(.4,0,.2,1),backdrop-filter .4s ease;visibility:hidden}.search-overlay.active{backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);opacity:1;transform:scale(1);visibility:visible}.search-modal-content{align-items:center;display:flex;margin-bottom:2rem;max-width:800px;position:relative;top:0;width:100%;z-index:20}.search-modal-content.is-sticky{border-radius:12px;position:sticky;top:0;z-index:20}.search-modal-content.is-sticky:before{backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);background:var(--header-bg);border-bottom:1px solid var(--border);content:"";height:calc(100% + 4rem);left:50%;opacity:0;pointer-events:none;position:absolute;top:-2rem;transform:translate(-50%);transition:opacity .3s ease;width:100vw;z-index:-1}.search-overlay.scrolled-down .search-modal-content.is-sticky:before{opacity:1}.search-input-full{align-items:center;background:var(--search-input-bg);border:1px solid var(--border);border-radius:12px;color:var(--text);display:flex;flex-grow:1;font-size:1rem;justify-content:center;opacity:0;outline:none;padding:.8rem 3rem .8rem 1rem;transform:translateY(20px);transition:opacity .5s cubic-bezier(.2,.8,.2,1) .1s,transform .5s cubic-bezier(.2,.8,.2,1) .1s}.search-overlay.active .search-input-full{opacity:1;transform:translateY(0);visibility:visible}.search-overlay .search-results-title{color:var(--text);font-size:1.5rem;font-weight:700;margin-bottom:1rem;text-align:center;transition:color .2s ease,border-color .2s ease}.search-close{align-items:center;background:none;border:none;color:var(--text);cursor:pointer;display:flex;font-size:1.7rem;height:100%;opacity:.7;padding:0;position:absolute;right:15px;top:0;transform:scale(.5) rotate(-90deg);transition:color .2s ease,opacity .5s cubic-bezier(.34,1.56,.64,1) .2s,transform .5s cubic-bezier(.34,1.56,.64,1) .2s}.search-overlay.active .search-close{transform:scale(1) rotate(0)}.search-close:hover{opacity:1}.search-results-grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));margin:0 auto;max-width:1200px;overflow:visible;padding:1rem 0 2rem;width:100%}.search-results-grid .project-card,.search-results-grid .social-card{box-shadow:none}.header-toggle{align-items:center;background:none;border:1px solid var(--border);border-radius:50%;color:var(--text);cursor:pointer;display:flex;flex-shrink:0;height:40px;justify-content:center;padding:0;transition:background .2s,border-color .2s,border-radius .2s ease;width:40px}.header-toggle:hover{background:var(--card-bg-hover);border-radius:12px}.header-toggle svg{height:22px;width:22px}.settings-overlay{align-items:center;backdrop-filter:blur(0);-webkit-backdrop-filter:blur(0);background:var(--overlay-bg);display:flex;height:100vh;top:0;right:0;bottom:0;left:0;justify-content:center;opacity:0;position:fixed;transition:background .3s ease,opacity .3s ease,visibility .3s,backdrop-filter .3s ease;visibility:hidden;width:100vw;z-index:2000}.settings-overlay.active{backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);opacity:1;visibility:visible}.settings-content{background:var(--settings-bg);border:1px solid var(--border);border-radius:24px;box-shadow:var(--settings-shadow);max-width:500px;opacity:0;padding:2rem;perspective:1000px;position:relative;transform:scale(.8) translateY(20px) rotateX(-10deg);transition:transform .5s cubic-bezier(.34,1.56,.64,1),opacity .3s ease;width:90%}.settings-overlay.active .settings-content{opacity:1;transform:scale(1) translateY(0) rotateX(0)}.settings-section{opacity:0;transform:translateY(10px);transition:opacity .4s ease,transform .4s ease}.settings-overlay.active .settings-section:first-child{opacity:1;transform:translateY(0);transition-delay:.1s}.settings-overlay.active .settings-section:nth-child(2){opacity:1;transform:translateY(0);transition-delay:.2s}.settings-overlay.active .settings-section:nth-child(3){opacity:1;transform:translateY(0);transition-delay:.3s}.settings-close{align-items:center;background:none;border:none;color:var(--text);cursor:pointer;display:flex;font-size:2rem;justify-content:center;line-height:1;opacity:.7;position:absolute;right:1.5rem;top:2rem;transition:transform .2s ease,color .2s ease,opacity .2s ease;z-index:10}.settings-close:hover{opacity:1}.settings-section{margin-bottom:2rem}.settings-section h3{font-size:1.1rem;margin-bottom:.5rem}.settings-desc{color:var(--meta-text);font-size:.9rem;margin-bottom:1rem}.theme-grid{display:grid;gap:10px;grid-template-columns:repeat(4,1fr)}.theme-option{align-items:center;background:none;border:none;color:var(--text);cursor:pointer;display:flex;flex-direction:column;gap:8px;transition:opacity .2s}.theme-option.active,.theme-option:hover{opacity:1}.theme-preview{align-items:center;aspect-ratio:1;border:2px solid var(--border);border-radius:12px;display:flex;justify-content:center;transition:border-color .2s;width:100%}.theme-option.active .theme-preview{border-color:var(--text);border-width:2px}.theme-preview.system{background:linear-gradient(135deg,#fff 50%,#000 0);color:var(--text)}.theme-preview.light{background:#fff;color:var(--text)}.theme-preview.dark{background:#1e1e1e;color:var(--text)}.theme-preview.amoled{background:#000;color:var(--text)}.setting-row{align-items:center;display:flex;gap:1rem;justify-content:space-between}.setting-info{display:flex;flex-direction:column}.setting-title{font-size:1rem;font-weight:600}.setting-subtitle{color:var(--meta-text);font-size:.8rem;max-width:250px}.toggle-switch{display:inline-block;flex-shrink:0;height:28px;position:relative;width:50px}.toggle-switch input{height:0;opacity:0;width:0}.slider{background-color:var(--settings-toggle-off);border-radius:50px;cursor:pointer;top:0;right:0;bottom:0;left:0}.slider,.slider:before{position:absolute;transition:.2s}.slider:before{background-color:var(--settings-knob-off);border-radius:50%;bottom:4px;box-shadow:0 2px 4px #0003;content:"";height:20px;left:4px;width:20px}input:checked+.slider{background-color:var(--settings-toggle-on)}input:checked+.slider:before{background-color:var(--settings-knob);transform:translate(22px)}.hamburger{cursor:pointer;height:14px;position:relative;width:20px}.hamburger .bar{background:var(--text);border-radius:9px;display:block;height:2px;left:0;position:absolute;transition:.25s ease-in-out;width:100%}.hamburger .bar:first-child{top:0}.hamburger .bar:nth-child(2){top:6px}.hamburger .bar:nth-child(3){top:12px}.menu-toggle.active .bar:first-child{top:6px;transform:rotate(135deg)}.menu-toggle.active .bar:nth-child(2){left:-20px;opacity:0}.menu-toggle.active .bar:nth-child(3){top:6px;transform:rotate(-135deg)}.fullscreen-menu{align-items:center;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);background:var(--menu-bg);clip-path:inset(0 0 0 100%);display:flex;flex-direction:column;height:100vh;justify-content:center;overflow:hidden;padding:1rem;position:fixed;right:0;top:0;transition:clip-path .5s cubic-bezier(.16,1,.3,1),visibility 0s linear .5s;visibility:hidden;width:100%;z-index:890}.fullscreen-menu.active{clip-path:inset(0 0 0 0);transition:clip-path .5s cubic-bezier(.16,1,.3,1),visibility 0s;visibility:visible}.fullscreen-nav{max-width:400px;width:100%}.fullscreen-nav ul{align-items:center;display:flex;flex-direction:column;gap:15px;list-style:none;margin:0;padding:0}.fullscreen-nav a{border-radius:50px;color:var(--nav-a);display:block;font-size:1.4rem;font-weight:500;padding:.6rem 1.5rem;text-align:center;text-decoration:none;transition:background .2s ease,color .2s ease}.fullscreen-nav a.active,.fullscreen-nav a:hover{background:var(--nav-a-bg);color:var(--text)}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.fade-in-slide{animation:fadeInUp .3s cubic-bezier(.2,.5,.5,1) forwards;opacity:0;will-change:transform,opacity}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(10px)}}.fade-out-slide{animation:fadeOutDown .3s ease-in forwards;pointer-events:none}
