.card-thumbnail-wrap{border-radius:var(--radius-lg) var(--radius-lg) 0 0;flex-shrink:0;height:130px;margin:-24px -24px 18px;position:relative;overflow:hidden}.card-thumbnail{object-fit:cover;object-position:center;width:100%;height:100%;transition:transform .4s;display:block}.project-card:hover .card-thumbnail{transform:scale(1.04)}.card-thumbnail-wrap:after{content:"";background:linear-gradient(#0000,#2a2a2a);height:40px;position:absolute;bottom:0;left:0;right:0}.filter-bar{flex-wrap:wrap;gap:8px;margin-bottom:48px;display:flex}.filter-btn{color:#aaa;font-size:12px;font-weight:500;font-family:var(--font-mono);letter-spacing:.1em;cursor:pointer;transition:all var(--transition-fast);background:0 0;border:1px solid #ffffff14;border-radius:20px;padding:6px 16px}.filter-btn:hover{color:#0f8;border-color:#00ff8840}.filter-btn.active{color:#0f8;background:#00ff8812;border-color:#00ff8859;font-weight:600}.projects-grid{grid-auto-rows:1fr;gap:24px;display:grid}.projects-grid.cols-1{grid-template-columns:minmax(0,400px);justify-content:center}.projects-grid.cols-2{grid-template-columns:repeat(2,1fr)}.projects-grid.cols-3{grid-template-columns:repeat(3,1fr)}.projects-grid.cols-auto{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.project-card{border-radius:var(--radius-lg);transition:transform var(--transition-base), border-color var(--transition-base), box-shadow var(--transition-base);box-sizing:border-box;background:#2a2a2a;border:1px solid #3b4b3d40;flex-direction:column;height:100%;padding:24px;display:flex;position:relative;overflow:hidden}.card-top-accent{opacity:0;height:1.5px;transition:opacity var(--transition-base);background:linear-gradient(90deg,#0000,#0f8,#00b4ff,#0000);position:absolute;top:0;left:0;right:0}.project-card:hover .card-top-accent{opacity:1}.project-card:after{content:"";border-radius:inherit;opacity:0;transition:opacity var(--transition-base);pointer-events:none;position:absolute;inset:0;box-shadow:inset 0 0 10px #00ff880f,0 0 32px #00ff880a}.project-card:hover{border-color:#00ff884d;transform:translateY(-4px);box-shadow:0 8px 32px #0006}.project-card:hover:after{opacity:1}.project-card-overlay{z-index:30;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#00ff88f5;justify-content:center;align-items:center;transition:transform .35s cubic-bezier(.23,1,.32,1);display:flex;position:absolute;inset:0;transform:translateY(101%)}.project-card:hover .project-card-overlay{transform:translateY(0)}.overlay-content{color:#0a0a0a;flex-direction:column;align-items:center;gap:12px;display:flex}.overlay-text{text-transform:uppercase;letter-spacing:.1em;font-size:14px;font-weight:800;font-family:var(--font-mono,monospace)}.overlay-content svg{transition:transform .3s}.project-card:hover .overlay-content svg{transform:translate(4px)}.project-card-btn{font-size:13px;font-weight:500;font-family:var(--font-sans);color:#0f8;cursor:pointer;background:0 0;border:1px solid #0f8;border-radius:6px;align-items:center;gap:8px;padding:10px 20px;transition:all .2s;display:inline-flex}.project-card-btn:hover{color:#000;background:#0f8}.card-header{justify-content:space-between;align-items:center;margin-bottom:18px;display:flex}.card-category-tag{letter-spacing:.15em;text-transform:uppercase;color:#0f8;background:#00ff881a;border:1px solid #0f83;border-radius:4px;padding:3px 10px;font-size:10px;font-weight:700}.github-link{color:#aaa;transition:all var(--transition-fast);border-radius:8px;justify-content:center;align-items:center;padding:6px;display:flex}.github-link svg{width:18px;height:18px}.github-link:hover{color:#0f8;background:#00ff8812;transform:scale(1.1)}.project-title{font-family:var(--font-display);font-size:var(--text-h3);font-weight:var(--text-h3-weight);color:#fff;transition:color var(--transition-fast);letter-spacing:-.01em;margin:12px 0 8px;line-height:1.25}.project-card:hover .project-title{color:#0f8}.project-description{color:#aaa;-webkit-line-clamp:4;line-clamp:4;-webkit-box-orient:vertical;flex:1;margin-bottom:16px;font-size:14px;font-weight:400;line-height:1.65;display:-webkit-box;overflow:hidden}.card-result-line{color:#0f8;margin-bottom:16px;font-size:15px;font-weight:600;line-height:1.4}.project-tech-list{flex-wrap:wrap;gap:8px;margin-top:auto;display:flex}.project-tech-list .tech-tag{color:#848585;white-space:nowrap;letter-spacing:.04em;transition:all var(--transition-fast);background:#1c1b1b;border:1px solid #3b4b3d59;border-radius:4px;padding:4px 10px;font-size:11px;font-weight:500}.project-card:hover .project-tech-list .tech-tag{color:#00e479;background:#00e4790a;border-color:#00e47940}@media (max-width:1024px){.projects-grid.cols-3{grid-template-columns:repeat(2,1fr)}}@media (max-width:768px){.projects-grid.cols-1,.projects-grid.cols-2,.projects-grid.cols-3,.projects-grid.cols-auto{grid-template-columns:1fr;grid-auto-rows:auto}.filter-btn{min-height:40px;padding:9px 18px;font-size:13px}.filter-bar{gap:8px;margin-bottom:32px}.project-card-overlay{display:none}.project-card:hover{transform:none}.card-permalink-btn{opacity:1}.project-title{font-size:clamp(16px,4.5vw,20px)}.project-description{-webkit-line-clamp:5}.card-btn-casestudy{min-height:44px}}@media (max-width:480px){.project-card{padding:18px}}.card-action-row{border-top:1px solid #ffffff0f;flex-wrap:wrap;gap:8px;padding-top:8px;display:flex}.card-btn-livedemo{color:#00b3fe;height:32px;font-size:12px;font-family:var(--font-mono,monospace);background:#00b3fe1f;border:1px solid #00b3fe4d;border-radius:6px;align-items:center;padding:0 14px;font-weight:600;text-decoration:none;transition:all .2s ease-in-out;display:inline-flex;box-shadow:0 0 10px #00b3fe1a}.card-btn-livedemo:hover{color:#fff;background:#00b3fe33;border-color:#00b3fe80;box-shadow:0 0 15px #00b3fe33}.card-btn-github{color:#aaa;height:32px;font-size:12px;font-family:var(--font-mono,monospace);border:1px solid #ffffff1f;border-radius:6px;align-items:center;padding:0 14px;text-decoration:none;transition:border-color .2s,color .2s;display:inline-flex}.card-btn-github:hover{color:#fff;border-color:#ffffff40}.card-btn-casestudy{color:#0f8;height:32px;font-size:12px;font-family:var(--font-mono,monospace);background:#00ff8814;border:1px solid #0f83;border-radius:6px;flex:1;justify-content:center;align-items:center;padding:0 14px;text-decoration:none;transition:background .2s;display:inline-flex}.card-btn-casestudy:hover{background:#00ff8826}.card-permalink-btn{color:#666;cursor:pointer;opacity:0;background:#ffffff0a;border:1px solid #ffffff14;border-radius:6px;justify-content:center;align-items:center;width:28px;height:28px;transition:opacity .2s,color .2s,background .2s;display:flex}.project-card:hover .card-permalink-btn{opacity:1}.card-permalink-btn:hover{color:#0f8;background:#00ff8814;border-color:#0f83}
