.tsp{background:radial-gradient(70% 120% at 100% 0%, #3f6dff29, transparent 60%), var(--v3-surface);grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);min-height:300px;margin-bottom:20px;display:grid;position:relative;overflow:hidden}.tsp-bars{z-index:4;gap:5px;display:flex;position:absolute;top:10px;left:14px;right:14px}.tsp-bars span{background:#ffffff2e;flex:1;height:3px;position:relative;overflow:hidden}.tsp-bars span.is-done{background:#ffffffbf}.tsp-bars i{transform-origin:0;background:#fff;position:absolute;inset:0;transform:scaleX(1)}.tsp-bars i.is-running{animation:linear both tsp-fill}@keyframes tsp-fill{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.tsp-art{background:var(--v3-surface-3);min-height:300px;animation:.45s ease-out both mo-fade;position:relative;overflow:hidden}.tsp-art img{object-fit:cover;transform-origin:55% 45%;width:100%;height:100%;animation:14s ease-in-out infinite alternate mo-kenburns;position:absolute;inset:0}.tsp-art:after{content:"";background:linear-gradient(90deg, transparent 55%, var(--v3-surface)), linear-gradient(0deg, #05060a8c, transparent 40%);position:absolute;inset:0}.tsp-ph{font:900 96px/1 var(--v3-font-heading);color:#ffffff26;place-items:center;display:grid;position:absolute;inset:0}.tsp-rank{z-index:2;font:900 11px/1.2 var(--v3-font-mono);letter-spacing:.14em;color:#fff;background:var(--v3-accent);clip-path:polygon(6px 0,100% 0,calc(100% - 6px) 100%,0 100%);padding:4px 10px;position:absolute;bottom:14px;left:14px}.tsp-body{z-index:2;flex-direction:column;justify-content:center;gap:10px;min-width:0;padding:34px 28px 74px 8px;display:flex;position:relative}.tsp-body>*{animation:mo-rise .42s var(--mo-ease-out,ease) both}.tsp-body>:nth-child(2){animation-delay:60ms}.tsp-body>:nth-child(3){animation-delay:.11s}.tsp-body>:nth-child(4){animation-delay:.16s}.tsp-body>:nth-child(5){animation-delay:.2s}.tsp-body>:nth-child(6){animation-delay:.24s}.tsp-kicker{font:800 10.5px/1 var(--v3-font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--v3-accent)}.tsp-name{font:900 34px/1.05 var(--v3-font-heading);color:var(--v3-text);overflow-wrap:anywhere;margin:0}.tsp-by{color:var(--v3-text-3);margin-top:-4px;font-size:13px}.tsp-live{color:var(--v3-text-2);flex-wrap:wrap;align-items:center;gap:8px;font-size:14px;display:flex}.tsp-live b{font:900 22px/1 var(--v3-font-heading);color:var(--v3-text)}.tsp-move{font:800 12px/1 var(--v3-font-mono);padding:3px 7px}.tsp-move.is-up{color:var(--v3-success);background:#30d1581f}.tsp-move.is-down{color:var(--v3-danger);background:#ff453a1f}.tsp-genre{font:800 10.5px/1.4 var(--v3-font-mono);letter-spacing:.1em;text-transform:uppercase;color:#c4b5fd;background:#7c4dff24;border:1px solid #7c4dff66;align-self:flex-start;padding:3px 9px}.tsp-actions{flex-wrap:wrap;align-items:center;gap:10px;margin-top:4px;display:flex}.tsp-heart{display:inline-flex}.tsp-thumbs{z-index:3;gap:8px;display:flex;position:absolute;bottom:16px;right:18px}.tsp-thumb{cursor:pointer;border:1px solid var(--v3-border);background:var(--v3-surface-2);opacity:.6;clip-path:polygon(0 0,calc(100% - 7px) 0,100% 7px,100% 100%,7px 100%,0 calc(100% - 7px));width:58px;height:40px;transition:opacity .2s, transform .2s var(--mo-ease-out,ease), border-color .2s;padding:0;position:relative;overflow:hidden}.tsp-thumb img{object-fit:cover;width:100%;height:100%;display:block}.tsp-thumb span{height:100%;color:var(--v3-text-3);place-items:center;font-weight:900;display:grid}.tsp-thumb b{font:900 10px/1 var(--v3-font-mono);color:#fff;text-shadow:0 1px 4px #000;position:absolute;top:2px;left:3px}.tsp-thumb:hover{opacity:.9;transform:translateY(-2px)}.tsp-thumb.is-on{opacity:1;border-color:var(--v3-accent);box-shadow:0 0 0 1px var(--v3-accent) inset}@media (width<=900px){.tsp{grid-template-columns:minmax(0,1fr)}.tsp-art{min-height:200px}.tsp-art:after{background:linear-gradient(0deg, var(--v3-surface), transparent 55%)}.tsp-body{padding:4px 18px 72px}.tsp-name{font-size:26px}.tsp-thumbs{left:18px;right:auto}}@media (prefers-reduced-motion:reduce){.tsp-art,.tsp-art img,.tsp-body>*,.tsp-bars i.is-running{animation:none}}
