.category-button{position:relative;padding:10px 0;background:transparent;border:none;cursor:pointer}.category-button a{text-decoration:none}.category-button .category-underline{position:absolute;left:0;right:0;bottom:0;height:2px;background-color:currentColor;display:block;transform:scaleX(0)}.category-button.current .category-underline{transform:scaleX(1)}.practice-root{max-width:1280px;margin:0 auto;padding:2rem 1rem}.practice-grid{display:grid;grid-template-columns:280px 1fr;gap:1.5rem}@media (max-width:960px){.practice-grid{grid-template-columns:1fr}}.practice-aside{background:#fff;border-radius:12px;box-shadow:0 4px 6px -1px rgba(0,0,0,.1);padding:1rem;position:sticky;top:1rem;align-self:start}.aside-section+.aside-section{margin-top:1rem;padding-top:1rem;border-top:1px solid #e2e8f0}.aside-title{font-weight:700;font-size:.9rem;color:#334155;margin-bottom:.5rem}.aside-list{display:flex;flex-wrap:wrap;gap:.5rem}.btn-cat,.btn-item{padding:.4rem .75rem;border:1px solid #e2e8f0;border-radius:8px;background-color:#f8fafc;color:#334155;font-weight:500;cursor:pointer;transition:all .2s ease}.btn-cat:hover,.btn-item:hover{background-color:#eef2f7;transform:translateY(-1px)}.btn-cat.active,.btn-item.active{background-color:#4f46e5;border-color:#4f46e5;color:#fff}.practice-main{background:#fff;border-radius:12px;box-shadow:0 4px 6px -1px rgba(0,0,0,.1);padding:1rem}.toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.count{color:#334155;font-weight:600}.btn-reset{padding:.4rem .75rem;border-radius:8px;border:1px solid #e2e8f0;background-color:#f8fafc;color:#334155;cursor:pointer;transition:all .2s ease}.btn-reset:hover{background-color:#eef2f7;transform:translateY(-1px)}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}.card{background-color:#fff;border:1px solid #e2e8f0;border-radius:12px;overflow:hidden;cursor:pointer;transition:box-shadow .2s ease,transform .2s ease}.card:hover{box-shadow:0 8px 20px rgba(0,0,0,.08);transform:translateY(-2px)}.card-head{padding:.75rem 1rem;border-bottom:1px solid #e2e8f0;display:flex;align-items:center;justify-content:space-between;gap:.5rem;min-height:56px}.card-title{font-weight:700;color:#1f2937;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tags{display:flex;flex-wrap:wrap;gap:.25rem}.gallery-grid .tags{display:none}.tag{background-color:#eef2f7;color:#475569;border:1px solid #e2e8f0;border-radius:9999px;padding:.1rem .5rem;font-size:.75rem;font-weight:600}.card-preview{padding:1rem;min-height:220px;background:linear-gradient(180deg,#f8fafc,#fff)}.card-preview,.pv{display:flex;align-items:center;justify-content:center;overflow:hidden}.pv{width:100%;height:180px;border-radius:12px;position:relative;background:#0ea5e9}.pv-pulse{animation:pulse 1.4s ease-in-out infinite;box-shadow:0 0 0 rgba(14,165,233,.7)}@keyframes pulse{0%{transform:scale(1);box-shadow:0 0 0 0 rgba(14,165,233,.7)}70%{transform:scale(1.02);box-shadow:0 0 0 16px rgba(14,165,233,0)}to{transform:scale(1);box-shadow:0 0 0 0 rgba(14,165,233,0)}}.pv-shimmer{background:#0ea5e9}.shimmer-bar{position:absolute;inset:0;background:linear-gradient(120deg,transparent,hsla(0,0%,100%,.4) 50%,transparent);transform:translateX(-100%);animation:shimmer 1.6s linear infinite}@keyframes shimmer{0%{transform:translateX(-100%)}to{transform:translateX(100%)}}.pv-flip{background:transparent;perspective:1000px}.flip-card{width:120px;height:120px}.flip-card-inner{position:relative;width:100%;height:100%;transform-style:preserve-3d;animation:flip 3s ease-in-out infinite}.flip-card-back,.flip-card-front{position:absolute;inset:0;display:grid;place-items:center;font-weight:800;font-size:2rem;color:#0ea5e9;border-radius:12px;background:#fff;backface-visibility:hidden;border:2px solid #0ea5e9}.flip-card-back{transform:rotateY(180deg)}@keyframes flip{0%{transform:rotateY(0deg)}50%{transform:rotateY(180deg)}to{transform:rotateY(1turn)}}@media (prefers-color-scheme:dark){.practice-aside,.practice-main{background-color:#1e293b;border:1px solid #334155}.aside-title,.card-title,.count{color:#e2e8f0}.btn-cat,.btn-item,.btn-reset{background-color:#0f172a;border-color:#334155;color:#e2e8f0}.btn-cat:hover,.btn-item:hover,.btn-reset:hover{background-color:#111827}.card{background-color:#0f172a;border-color:#334155}.card-head{border-bottom-color:#334155}.tag{background-color:#0b1220;border-color:#334155;color:#94a3b8}.card{text-decoration:none}}