.portfolio-link{color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:.5rem;padding:.375rem .75rem;transition:color .2s,border-color .2s}.portfolio-link:hover{color:var(--color-text);border-color:var(--color-border-hover)}.project-filter-bar{flex-wrap:wrap;gap:.5rem;margin-bottom:2.5rem;display:flex}.project-filter-btn{border:1px solid var(--color-border);color:var(--color-text-dim);background:var(--bg-deep);cursor:pointer;align-items:center;gap:.4rem;padding:.4rem 1rem;transition:color .2s,border-color .2s,background .2s;display:inline-flex}.project-filter-btn:hover{color:var(--color-text)!important;border-color:var(--color-primary)!important}.project-filter-count{background:var(--bg-elevated);min-width:18px;height:18px;color:var(--color-text-muted);border-radius:2px;justify-content:center;align-items:center;padding:0 4px;font-size:.6rem;font-weight:700;transition:background .2s,color .2s;display:inline-flex}.project-card{cursor:pointer;transition:opacity .2s;position:relative}.project-card.project-hidden{display:none}.project-card.project-enter{animation:project-card-enter .38s cubic-bezier(.22, 1, .36, 1) var(--enter-delay,0s) both}@keyframes project-card-enter{0%{opacity:0;transform:translateY(16px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.project-float-icon{z-index:20;background:var(--bg-deep);border:1px solid var(--color-border);justify-content:center;align-items:center;width:42px;height:42px;padding:7px;transition:transform .35s cubic-bezier(.34,1.56,.64,1),border-color .3s,box-shadow .3s;display:flex;position:absolute;top:-13px;right:14px;box-shadow:0 4px 14px #0006}.project-card:hover .project-float-icon{border-color:var(--color-primary);box-shadow:0 8px 24px #0006, 0 0 14px rgb(var(--primary-ch) / .18);transform:translateY(-4px)scale(1.1)}.project-icon-img{object-fit:contain;width:100%;height:100%;display:block}.project-icon-github{filter:invert()brightness(.85)}html.light-mode .project-icon-github{filter:invert(0)brightness(.5)}.project-inner{border:1px solid var(--color-border);background:var(--bg-deep);flex-direction:column;height:100%;transition:transform .4s cubic-bezier(.25,.46,.45,.94),border-color .3s,box-shadow .3s;display:flex;position:relative;overflow:hidden}.project-card:hover .project-inner{border-color:var(--color-primary);box-shadow:0 16px 44px #00000059, 0 0 0 1px rgb(var(--primary-ch) / .12), 0 0 20px rgb(var(--primary-ch) / .06);transform:translateY(-4px)}.project-inner.has-bg-img{background:0 0}.project-bg-img{z-index:0;position:absolute;inset:0;overflow:hidden}.project-bg-img:after{content:"";z-index:1;background:linear-gradient(155deg,#0405076b 0%,#040507ad 100%);transition:background .5s;position:absolute;inset:0}.project-card:hover .project-bg-img:after{background:linear-gradient(155deg,#04050747 0%,#0405078a 100%)}.project-bg-img img{object-fit:cover;filter:blur(24px)saturate(2)brightness(.42)grayscale(.2);width:120%;height:120%;transition:filter .5s;position:absolute;inset:-10%}.project-card:hover .project-bg-img img{filter:blur(18px)saturate(2.4)brightness(.54)grayscale(.2)}.project-company{letter-spacing:.12em;text-transform:uppercase;color:var(--color-primary);margin-bottom:.5rem;font-family:ui-monospace,monospace;font-size:.65rem;font-weight:700}.project-title{color:var(--color-text);transition:color .3s}.project-card:hover .project-title{color:var(--color-primary)}.project-desc{color:var(--color-text-dim)}.has-bg .project-desc{color:rgb(var(--text-muted-ch) / .85)}.project-tag{letter-spacing:.03em;color:var(--color-text-dim);background:var(--bg-base);border:1px solid var(--color-border);padding:.2rem .55rem;font-size:.65rem;transition:color .2s,border-color .2s}.project-card:hover .project-tag{color:var(--color-text-muted);border-color:var(--color-border-hover)}.has-bg .project-tag{color:#9aa3aed9;background:#0405078c}.project-footer{border-top:1px solid var(--color-border);background:#0000001f;align-items:center;gap:.65rem;padding:.6rem 1.1rem;transition:border-top-color .3s,background .3s;display:flex}.project-card:hover .project-footer{border-top-color:rgb(var(--primary-ch) / .25);background:rgb(var(--primary-ch) / .05)}.has-bg .project-footer{background:#00000061;border-top-color:#ffffff14}.has-bg:hover .project-inner .project-footer{background:rgb(var(--primary-ch) / .18);border-top-color:rgb(var(--primary-ch) / .3)}.project-cat-badge{letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-muted);background:rgb(var(--primary-ch) / .04);border:1px solid rgb(var(--primary-ch) / .1);padding:.2rem .6rem;font-size:.55rem;font-weight:700;transition:color .3s,background .3s,border-color .3s}.project-card:hover .project-cat-badge{color:var(--color-primary);background:rgb(var(--primary-ch) / .1);border-color:rgb(var(--primary-ch) / .3)}.project-heroicon{color:rgb(var(--primary-ch) / .35);transition:color .3s}.project-card:hover .project-heroicon{color:rgb(var(--primary-ch) / .7)}.project-heroicon svg{transition:transform .3s,opacity .3s}.project-card:hover .project-heroicon svg{opacity:0;transform:translateY(60px)}.project-open-hint{letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted);user-select:none;align-items:center;gap:.3rem;font-family:ui-monospace,monospace;font-size:.65rem;font-weight:700;transition:color .3s,gap .3s;display:inline-flex}.project-hint-arrow{opacity:.4;transition:transform .35s cubic-bezier(.34,1.56,.64,1),opacity .3s}.project-card:hover .project-open-hint{color:var(--color-primary);gap:.5rem}.project-card:hover .project-hint-arrow{opacity:1;transform:translate(2px,-2px)}html.light-mode .project-inner{background:var(--bg-elevated);border-color:var(--color-border)}html.light-mode .project-card:hover .project-inner{box-shadow:0 16px 40px #0000001a, 0 0 0 1px rgb(var(--primary-ch) / .2)}html.light-mode .project-card.has-bg .project-bg-img{filter:invert(.88)saturate(1.4)brightness(1.1)}html.light-mode .project-card.has-bg:hover .project-bg-img{filter:invert(.88)saturate(1.7)brightness(1.2)}html.light-mode .project-card.has-bg .project-bg-img img{filter:blur(24px)saturate(1.8)brightness(.72)}html.light-mode .project-card.has-bg:hover .project-bg-img img{filter:blur(18px)saturate(2.1)brightness(.82)}html.light-mode .project-card.has-bg .project-bg-img:after{display:none}html.light-mode .project-inner.has-bg-img{background:#ffffff85}html.light-mode .project-card.has-bg .project-title{color:#0f172a}html.light-mode .project-card.has-bg:hover .project-title{color:var(--color-primary)}html.light-mode .project-card.has-bg .project-desc{color:#0f172ab8}html.light-mode .project-card.has-bg .project-company{color:var(--color-primary)}html.light-mode .project-card.has-bg .project-tag{color:#334155;background:#ffffff8c;border-color:#0000001a}html.light-mode .project-footer{border-top-color:var(--color-border);background:#0000000a}html.light-mode .project-card:hover .project-footer{background:rgb(var(--primary-ch) / .05)}html.light-mode .project-card.has-bg .project-footer{background:#ffffff8c;border-top-color:#00000014}html.light-mode .project-card.has-bg:hover .project-footer{background:rgb(var(--primary-ch) / .08)}html.light-mode .project-float-icon{background:var(--bg-elevated);border-color:var(--color-border);box-shadow:0 4px 14px #0000001a}
