.scripts-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: clamp(1.25rem, 3vw, 1.75rem); margin-top: clamp(2rem, 6vw, 3rem); } .script-card { display: flex; flex-direction: column; position: relative; isolation: isolate; cursor: pointer; border-radius: var(--radius-lg); transform: translateZ(0) scale(1); transition: transform 220ms cubic-bezier(.2, .8, .2, 1); } .script-card:hover { transform: translateZ(0) scale(.92); } .script-glow { position: absolute; top: 0; left: 5%; width: 90%; height: 55%; z-index: -1; opacity: 0 !important; filter: blur(36px) saturate(1.5); background: radial-gradient(circle at 35% 30%, var(--glow-a, transparent) 0%, transparent 65%), radial-gradient(circle at 70% 40%, var(--glow-b, transparent) 0%, transparent 70%); transition: opacity 0.9s var(--ease-standard); pointer-events: none; will-change: opacity; } .script-image { width: 100%; aspect-ratio: 16 / 9; background: var(--color-border); overflow: hidden; margin-bottom: 1.25rem; border-radius: var(--radius-lg); -webkit-mask-image: linear-gradient(to top, transparent 0%, black 45%); mask-image: linear-gradient(to top, transparent 0%, black 45%); transition: transform var(--duration-base) var(--ease-out-soft); position: relative; z-index: 1; } .script-image img { width: 100%; height: 100%; object-fit: cover; transition: filter var(--duration-base) ease, transform var(--duration-base) ease; } .script-title { font-size: clamp(1.0625rem, 2.2vw, 1.3125rem); font-weight: 600; letter-spacing: -0.02em; margin-bottom: 0.5rem; display: flex; justify-content: space-between; align-items: center; gap: 0.75rem; } .script-copy-icon { position: relative; display: inline-flex; align-items: center; justify-content: center; } .script-copy-icon svg { flex-shrink: 0; color: var(--color-muted); transition: transform var(--duration-fast) var(--ease-out-soft), color var(--duration-fast) ease, opacity 0.15s ease; } .script-copy-icon .check-icon { position: absolute; opacity: 0; } .script-copy-icon.copied .copy-icon { opacity: 0; } .script-copy-icon.copied .check-icon { opacity: 1; } .script-card:hover .script-copy-icon svg { color: var(--color-fg); } .script-desc { color: var(--color-muted); font-size: 0.9375rem; line-height: 1.5; } @media (max-width: 768px) { .scripts-wrap { position: relative; margin-inline: calc(var(--content-padding-inline) * -1); } .scripts-grid { display: flex; overflow-x: auto; overflow-y: hidden; scroll-snap-type: x mandatory; scroll-padding-inline: var(--content-padding-inline); -webkit-overflow-scrolling: touch; scrollbar-width: none; padding-inline: var(--content-padding-inline); scroll-snap-stop: always; overscroll-behavior-x: contain; } .scripts-wrap::before, .scripts-wrap::after { content: ''; position: absolute; top: 0; bottom: 0; width: clamp(1.5rem, 6vw, 3rem); z-index: 100; pointer-events: none; } .scripts-wrap::before { left: 0; background: linear-gradient(to right, var(--color-bg), transparent); } .scripts-wrap::after { right: 0; background: linear-gradient(to left, var(--color-bg), transparent); } .scripts-grid::-webkit-scrollbar { display: none; } .script-card { flex: 0 0 auto; width: calc(min(78vw, 300px) * 1.2); scroll-snap-align: start; } .script-card:hover { transform: translateZ(0) scale(1); } .script-card.glow-ready.in-snap .script-glow { opacity: 0.6 !important; } } @media (hover: none) and (pointer: coarse) { .script-image img { transition: none; } }