.aso{--aso-accent:#4f46e5;--aso-cols:4;--aso-text:#111827;--aso-muted:#6b7280;--aso-border:#e5e7eb;color:var(--aso-text);margin:2rem 0;box-sizing:border-box}
.aso *,.aso *::before,.aso *::after{box-sizing:inherit}

/* Toolbar */
.aso-toolbar{display:flex;flex-direction:column;align-items:center;gap:16px;margin-bottom:28px}
.aso-search{position:relative;width:100%;max-width:420px}
.aso-search svg{position:absolute;left:15px;top:50%;transform:translateY(-50%);width:18px;height:18px;color:var(--aso-muted);pointer-events:none}
.aso-search input[type=search]{display:block;width:100%;height:auto;margin:0;padding:12px 18px 12px 44px;border:1px solid var(--aso-border);border-radius:999px;background:#fff;color:inherit;font-size:15px;line-height:1.4;outline:none;box-shadow:none;-webkit-appearance:none;appearance:none;transition:border-color .2s,box-shadow .2s}
.aso-search input[type=search]:focus{border-color:var(--aso-accent);box-shadow:0 0 0 3px rgba(79,70,229,.16)}
.aso-alpha{display:flex;flex-wrap:wrap;justify-content:center;gap:6px}
.aso-alpha button,.aso-pager button{min-width:34px;height:34px;margin:0;padding:0 10px;border:1px solid var(--aso-border);border-radius:999px;background:#fff;color:var(--aso-text);font-size:13px;font-weight:600;line-height:1;cursor:pointer;transition:background .15s,color .15s,border-color .15s}
.aso-alpha button:hover:not(:disabled),.aso-pager button:hover:not(:disabled){border-color:var(--aso-accent);color:var(--aso-accent)}
.aso-alpha button.is-active,.aso-pager button.is-active{background:var(--aso-accent);border-color:var(--aso-accent);color:#fff}
.aso-alpha button:disabled,.aso-pager button:disabled{opacity:.35;cursor:not-allowed}
.aso-alpha button:focus-visible,.aso-pager button:focus-visible{outline:2px solid var(--aso-accent);outline-offset:2px}

/* Grid */
.aso-grid{display:grid;grid-template-columns:repeat(var(--aso-cols),minmax(0,1fr));gap:20px}
.aso-card{background:#fff;border:1px solid var(--aso-border);border-radius:16px;overflow:hidden;transition:transform .2s,box-shadow .2s,border-color .2s}
.aso-card[hidden]{display:none}
.aso-card:hover{transform:translateY(-4px);border-color:var(--aso-accent);box-shadow:0 16px 32px -14px rgba(17,24,39,.22)}
.aso-inner{display:flex;flex-direction:column;align-items:center;height:100%;padding:24px 20px 20px;text-align:center;text-decoration:none;color:inherit;box-shadow:none}
.aso-inner:hover,.aso-inner:focus{color:inherit;text-decoration:none}
.aso-logo{display:flex;align-items:center;justify-content:center;width:100%;height:96px;margin-bottom:16px}
.aso-logo img{display:block;width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;transition:filter .25s,opacity .25s}
.aso--gray .aso-logo img{filter:grayscale(1);opacity:.7}
.aso--gray .aso-card:hover .aso-logo img{filter:none;opacity:1}
.aso-initial{display:flex;align-items:center;justify-content:center;width:72px;height:72px;border-radius:50%;background:rgba(79,70,229,.1);color:var(--aso-accent);font-size:28px;font-weight:700}
.aso-name{display:block;margin:0 0 6px;font-size:1.05rem;font-weight:600;line-height:1.3}
.aso-desc{display:-webkit-box;margin:0 0 14px;overflow:hidden;color:var(--aso-muted);font-size:.875rem;line-height:1.55;-webkit-line-clamp:3;-webkit-box-orient:vertical}
.aso-cta{margin-top:auto;color:var(--aso-accent);font-size:.8rem;font-weight:600}
.aso-card:hover .aso-cta{text-decoration:underline}
.aso-empty{padding:40px 0;text-align:center;color:var(--aso-muted)}
.aso-empty[hidden]{display:none}

/* Pager */
.aso-pager{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;margin-top:28px}
.aso-pager:empty{display:none}
.aso-pager .aso-dots{display:inline-flex;align-items:center;padding:0 4px;color:var(--aso-muted)}

/* Responsive */
@media (max-width:1024px){.aso-grid{grid-template-columns:repeat(min(var(--aso-cols),3),minmax(0,1fr))}}
@media (max-width:720px){.aso-grid{grid-template-columns:repeat(min(var(--aso-cols),2),minmax(0,1fr));gap:14px}.aso-inner{padding:18px 14px 16px}.aso-logo{height:76px}}
@media (max-width:420px){.aso-grid{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){.aso-card,.aso-logo img{transition:none}.aso-card:hover{transform:none}}
