.card-grid{max-width:var(--max-width);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px;min-height:400px;margin:0 auto;padding-top:40px;display:grid}.card-grid.is-page-next{--page-shift:28px}.card-grid.is-page-prev{--page-shift:-28px}.card-grid.is-page-next .card,.card-grid.is-page-prev .card{animation:.4s cubic-bezier(.4,0,.2,1) backwards projectPageEnter}.card-grid.is-page-next .card:nth-child(2),.card-grid.is-page-prev .card:nth-child(2){animation-delay:40ms}.card-grid.is-page-next .card:nth-child(3),.card-grid.is-page-prev .card:nth-child(3){animation-delay:80ms}.card-grid.is-page-next .card:nth-child(4),.card-grid.is-page-prev .card:nth-child(4){animation-delay:.12s}.card-grid.is-page-next .card:nth-child(5),.card-grid.is-page-prev .card:nth-child(5){animation-delay:.16s}.card-grid.is-page-next .card:nth-child(6),.card-grid.is-page-prev .card:nth-child(6){animation-delay:.2s}@keyframes projectPageEnter{0%{opacity:0;transform:translateX(var(--page-shift))}to{opacity:1;transform:translate(0)}}@media (prefers-reduced-motion:reduce){.card-grid.is-page-next .card,.card-grid.is-page-prev .card{animation:none}}.projects-filters{max-width:var(--max-width);flex-direction:column;gap:10px;margin:0 auto;padding-top:10px;display:flex}.projects-filters__header{justify-content:space-between;align-items:center;gap:12px;display:flex}.projects-filters__label{font-family:var(--font-mono), monospace;color:var(--color-muted);font-size:.9rem}.projects-filters__clear{color:var(--color-accent);border:1px solid var(--color-accent);border-radius:var(--radius-sm);font-size:.85rem;font-family:var(--font-mono), monospace;cursor:pointer;transition:all var(--transition-fast);background:0 0;padding:8px 14px}.projects-filters__chips{flex-wrap:wrap;gap:10px;display:flex}.projects-chip{color:var(--color-muted);border:1px solid var(--color-border);font-size:.85rem;font-family:var(--font-mono), monospace;cursor:pointer;transition:all var(--transition-fast);background:0 0;border-radius:999px;padding:8px 14px}.projects-chip:hover{border-color:var(--color-accent);color:var(--color-accent);transform:translateY(-1px)}.projects-chip.is-active{border-color:var(--color-accent);color:var(--color-muted);background:#38bdf826}.skeleton-card{background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-md);height:180px;padding:24px;animation:1.5s ease-in-out infinite skeleton-loading}.skeleton-title{background:var(--color-surface);border-radius:6px;width:65%;height:22px;margin-bottom:16px}.skeleton-topics{background:var(--color-surface);border-radius:6px;width:85%;height:14px;margin-bottom:16px}.skeleton-description{background:var(--color-surface);border-radius:6px;width:100%;height:12px}@keyframes skeleton-loading{0%{opacity:.4}50%{opacity:.8}to{opacity:.4}}.pagination-container{justify-content:center;align-items:center;gap:16px;margin-top:32px;display:flex}.pagination-container button{color:var(--color-accent);border:1px solid var(--color-accent);border-radius:var(--radius-sm);font-size:.9rem;font-family:var(--font-mono), monospace;cursor:pointer;transition:all var(--transition-fast);background:0 0;padding:12px 36px;font-weight:500;position:relative;overflow:hidden}.pagination-container button:disabled{opacity:.5;cursor:not-allowed}.pagination-container button:before{content:"";background:var(--color-accent);opacity:0;transition:opacity var(--transition-fast);z-index:-1;position:absolute;inset:0}.pagination-container button:hover{color:var(--color-surface);border-color:var(--color-accent);transform:translateY(-2px);box-shadow:0 4px 16px #38bdf833}.pagination-container button:hover:before{opacity:1}
.card{background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-md);text-align:left;height:200px;transition:transform var(--transition-fast), border-color var(--transition-fast), box-shadow var(--transition-fast);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);flex-direction:column;justify-content:space-between;padding:24px;display:flex;position:relative;overflow:hidden}.card:before{content:"";border-radius:inherit;background:linear-gradient(135deg, transparent 40%, var(--color-accent) 100%);-webkit-mask-composite:xor;opacity:0;transition:opacity var(--transition-med);pointer-events:none;padding:1px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);-webkit-mask-position:0 0,0 0;mask-position:0 0,0 0;-webkit-mask-size:auto,auto;mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.card:hover:before{opacity:1}.card h2{color:var(--color-text-light);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;font-size:1.05rem;font-weight:600;line-height:1.3;display:-webkit-box;overflow:hidden}.card p{color:var(--color-text-muted);font-size:.85rem;line-height:1.5}.card:hover{cursor:pointer;border-color:#38bdf833;transform:translateY(-4px);box-shadow:0 8px 32px #38bdf814}.topics{flex-wrap:wrap;flex-grow:1;align-items:flex-start;gap:6px;margin:8px 0;padding:4px 0;display:flex}.topics span{color:var(--color-accent);font-size:.7rem;font-family:var(--font-mono), monospace;white-space:nowrap;letter-spacing:.02em;background:#38bdf81a;border:1px solid #38bdf833;border-radius:20px;padding:2px 10px}.card p:last-child{-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;margin-top:auto;display:-webkit-box;overflow:hidden}
