dialog[data-gift-dialog] { animation: gift-pop 180ms ease-out; transform-origin: center; }
@keyframes gift-pop { from { opacity: 0; transform: scale(.97); } to { opacity: 1; transform: scale(1); } }
.gift-catalog { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 10px; }
.gift-catalog button { display: flex; flex-direction: column; gap: 7px; min-width: 0; min-height: 128px; padding: 15px 7px; border: 1px solid var(--tc-line); border-radius: 15px; background: var(--tc-surface-2); color: var(--tc-text); animation: gift-pop 210ms both; animation-delay: var(--gift-delay); }
.gift-catalog button:hover { border-color: var(--tc-accent); background: var(--tc-accent-soft); }
.gift-catalog button > span:not(.gift-picture) { font-size: 12px; font-weight: 600; }
.gift-catalog small { color: var(--tc-muted); font-size: 11px; }
.gift-catalog .gift-art { width: 58px; height: 58px; stroke: #1684da; }
.gift-message .gift-art { width: 64px; height: 64px; stroke: #1684da; }
.gift-catalog button[aria-busy] { opacity: .65; }
.gift-loading { min-height: 130px; display: grid; place-items: center; color: var(--tc-muted); }
.gift-error { font-size: 12px; color: #b9324b; line-height: 1.6; }
html[data-theme=dark] .gift-error { color: #ffb4c1; }
@media (prefers-reduced-motion: reduce) { dialog[data-gift-dialog], .gift-catalog button { animation: none; } }
