/* Trending minnects panel (ADR 0001, section 6; spec "Trending minnects"). Ported from the mockup's .tr rules; tokens only. The white inside the media frame is text and glass over the photo, which is dark in both themes. */ .trend-list { gap: 16px; } .minnect-card { display: flex; flex-direction: column; gap: 9px; animation: trend-rise .55s var(--ease) both; } @keyframes trend-rise { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } } .trend-media { position: relative; aspect-ratio: 16 / 9; border-radius: 12px; overflow: hidden; isolation: isolate; background: var(--tile-3); box-shadow: inset 0 0 0 1px var(--line); } .trend-media .minnect-thumb { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 1s var(--ease); } .minnect-card:hover .trend-media:not(.trend-media-playing) .minnect-thumb { transform: scale(1.035); } .minnect-video { background: black; } .trend-scrim { position: absolute; left: 0; right: 0; bottom: 0; height: 62%; z-index: 1; pointer-events: none; background: linear-gradient(180deg, transparent, color-mix(in srgb, black 62%, transparent)); } .trend-who { position: absolute; left: 10px; top: 10px; z-index: 2; max-width: calc(100% - 20px); display: flex; align-items: center; gap: 8px; padding: 3px 10px 3px 4px; border-radius: 12px; font-size: 12px; color: var(--on-accent); background: color-mix(in srgb, black 34%, transparent); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); pointer-events: none; } .trend-who strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 700; } .trend-play { position: absolute; inset: 0; margin: auto; z-index: 2; width: 44px; height: 44px; padding: 0; border: 0; border-radius: 50%; display: grid; place-items: center; cursor: pointer; color: var(--on-accent); background: color-mix(in srgb, var(--on-accent) calc(100% - 84%), transparent); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--on-accent) calc(100% - 60%), transparent), 0 12px 30px color-mix(in srgb, black 28%, transparent); transition: transform .3s cubic-bezier(.2, .9, .3, 1.4), background-color .3s; } .trend-play svg { width: 18px; height: 18px; margin-left: 2px; } .trend-play:hover { transform: scale(1.1); background: color-mix(in srgb, var(--on-accent) calc(100% - 72%), transparent); } .trend-play:focus-visible { outline: 2px solid var(--on-accent); outline-offset: 2px; } .trend-views { position: absolute; left: 12px; bottom: 10px; z-index: 2; display: flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 600; color: var(--on-accent); pointer-events: none; } .trend-views svg { width: 15px; height: 15px; } .trend-kind { position: absolute; right: 10px; bottom: 10px; z-index: 2; font-size: 10.5px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: var(--on-accent); opacity: .85; pointer-events: none; } /* While a video plays its own controls take over the frame. */ .trend-media-playing .trend-scrim, .trend-media-playing .trend-who, .trend-media-playing .trend-play, .trend-media-playing .trend-views, .trend-media-playing .trend-kind { opacity: 0; visibility: hidden; } .trend-q { margin: 0; font-size: 13.5px; line-height: 1.45; font-weight: 600; color: var(--ink); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } .minnect-audio { width: 100%; height: 36px; } .rail-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; } /* A video keeps its native control bar, so the labels ride above it. */ .trend-media:has(video) .trend-views, .trend-media:has(video) .trend-kind { bottom: 46px; }