/* Today on Sports (home) */
.ts{padding-top:8px}
.ts-head{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.ts-head__l{display:flex;align-items:center;gap:14px}
.ts-ico{width:48px;height:48px;border-radius:14px;background:linear-gradient(135deg,#4b2a78,#2a1450);display:flex;align-items:center;justify-content:center;box-shadow:0 8px 18px rgba(42,20,80,.25);flex:none}
.ts-head h2{margin:0;font-size:1.6rem;font-weight:800;letter-spacing:-.01em}
.ts-head p{margin:3px 0 0;color:#5f5877;font-size:.9rem}
.ts-tabs{display:flex;background:#fff;border:1px solid #e6dff3;border-radius:999px;padding:4px;gap:2px;overflow-x:auto;max-width:100%}
.ts-tabs button{border:0;background:none;padding:8px 16px;border-radius:999px;color:#4b2a78;font:600 13px/1.2 sans-serif;font-family:inherit;cursor:pointer;white-space:nowrap}
.ts-tabs button.is-on{background:#4b2a78;color:#fff;font-weight:700}
.ts-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.ts-card{position:relative;display:flex;flex-direction:column;gap:10px;border-radius:18px;padding:16px;min-height:236px;box-sizing:border-box;overflow:hidden}
.ts-card[hidden],.ts-more[hidden]{display:none}
.ts-card.is-flash{outline:3px solid #f5b82e}
.ts-top{display:flex;justify-content:space-between;align-items:center;gap:8px}
.ts-chip{font-size:11px;font-weight:800;letter-spacing:.08em;padding:4px 10px;border-radius:999px;white-space:nowrap}
.ts-meta{font-size:12px;font-weight:700}
.ts-ttl{font-size:1.05rem;font-weight:800;line-height:1.25;color:inherit;text-decoration:none}
a.ts-ttl:hover{text-decoration:underline}
.ts-sub{font-size:12px;margin-top:2px}
.ts-btn{display:block;text-align:center;font:700 13px/1.2 sans-serif;font-family:inherit;padding:11px;border-radius:12px;border:0;cursor:pointer;text-decoration:none;color:#fff;background:#2a1450}
.ts-btn--red{background:#e11d2e}
.ts-foot{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:6px;padding-top:2px}
.ts-reacts{display:flex;gap:5px;flex-wrap:wrap}
.ts-r{border-radius:999px;padding:3px 8px;font:600 12px/1.4 sans-serif;font-family:inherit;cursor:pointer;border:1px solid;background:transparent;color:inherit}
.ts-r.is-done{font-weight:800;box-shadow:inset 0 0 0 1px currentColor}
.ts-share{background:none;border:0;padding:6px;cursor:pointer;color:inherit;border-radius:8px}
/* birthday */
.ts-card--bday{background:linear-gradient(165deg,#fff7de,#fde9a8);border:1px solid #f1d58a;box-shadow:0 8px 20px rgba(214,160,30,.18);color:#2a1450}
.ts-card--bday .ts-chip{background:#2a1450;color:#f5b82e}.ts-card--bday .ts-meta,.ts-card--bday .ts-sub{color:#7a5600}
.ts-who{display:flex;align-items:center;gap:12px}
.ts-av{width:52px;height:52px;border-radius:50%;background:linear-gradient(135deg,#4b2a78,#2a1450);color:#f5b82e;font-weight:800;font-size:17px;display:flex;align-items:center;justify-content:center;border:3px solid #fff;box-shadow:0 4px 10px rgba(42,20,80,.25);flex:none;overflow:hidden}
.ts-av img{width:100%;height:100%;object-fit:cover}
.ts-wishline{font-size:12px;color:#5b4300;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ts-card--bday .ts-r{border-color:#f1d58a;background:rgba(255,255,255,.75)}
/* memory */
.ts-card--memory{background:#fff;border:1px solid #e6dff3;box-shadow:0 6px 18px rgba(42,20,80,.06);color:#2a1450}
.ts-card--memory .ts-chip{background:#efe8fa;color:#4b2a78}.ts-card--memory .ts-meta,.ts-card--memory .ts-sub{color:#6b6480}
.ts-years{display:flex;align-items:baseline;gap:8px}.ts-years b{font-size:2.5rem;font-weight:800;letter-spacing:-.03em;color:#5b2d99;line-height:1}.ts-years span{font-size:13px;font-weight:700;color:#5f5877}
.ts-card--memory .ts-r{border-color:#e6dff3;background:#f7f5fb}
/* event */
.ts-card--event{background:linear-gradient(160deg,#3a1f63,#1f1138);color:#fff;box-shadow:0 10px 24px rgba(42,20,80,.28)}
.ts-card--event .ts-chip{background:#f5b82e;color:#2a1450}.ts-card--event .ts-meta{color:#e5dbf7}.ts-card--event .ts-sub{color:#cbbfe6}
.ts-card--event .ts-r{border-color:rgba(255,255,255,.2);background:rgba(255,255,255,.1)}
.ts-more{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;border:1.5px dashed #c9bde3;border-radius:18px;background:none;color:#4b2a78;min-height:236px;cursor:pointer;font-family:inherit}
.ts-more b{font-size:1.75rem;font-weight:800}.ts-more span{font-size:13px;font-weight:600}.ts-more em{font-style:normal;font-size:13px;font-weight:700;color:#5b2d99}
/* wish panel + share menu */
.ts-panel{position:absolute;inset:0;background:#fffdf5;color:#2a1450;padding:14px;display:flex;flex-direction:column;gap:8px;z-index:5;overflow:auto}
.ts-panel h4{margin:0;font-size:.95rem}
.ts-panel .q{display:flex;flex-wrap:wrap;gap:6px}
.ts-panel .q button{border:1px solid #f1d58a;background:#fff7de;border-radius:999px;padding:5px 10px;font:600 12px/1.2 sans-serif;font-family:inherit;cursor:pointer;color:#2a1450}
.ts-panel input[type=text]{width:100%;box-sizing:border-box;border:1px solid #e6dff3;border-radius:10px;padding:8px 10px;font:13px sans-serif;font-family:inherit}
.ts-panel .row{display:flex;gap:6px}.ts-panel .row button{flex:1}
.ts-panel .x{position:absolute;right:10px;top:8px;background:none;border:0;font-size:18px;cursor:pointer;color:#6b6480}
.ts-panel .ok{font-size:13px;font-weight:600;color:#1a6b35}
.ts-hp{position:absolute;left:-9999px;opacity:0}
.ts-menu{position:absolute;right:12px;bottom:46px;background:#fff;color:#2a1450;border:1px solid #e6dff3;border-radius:12px;box-shadow:0 10px 26px rgba(42,20,80,.22);padding:6px;display:flex;flex-direction:column;z-index:6;min-width:150px}
.ts-menu a,.ts-menu button{display:block;text-align:left;padding:8px 10px;border:0;background:none;font:600 13px/1.2 sans-serif;font-family:inherit;color:#2a1450;text-decoration:none;border-radius:8px;cursor:pointer}
.ts-menu a:hover,.ts-menu button:hover{background:#f3eefb}
@media(max-width:1000px){.ts-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.ts-grid{grid-template-columns:1fr}.ts-card,.ts-more{min-height:0}.ts-head h2{font-size:1.3rem}}
/* fixture cards */
.ts-card--fixture{background:#fff;border:1px solid #e6dff3;box-shadow:0 6px 18px rgba(42,20,80,.06);color:#2a1450}
.ts-card--fixture .ts-chip{background:#fbf1d6;color:#6b4a00}
.ts-pill{background:#efe8fa;color:#4b2a78;font-size:12px;font-weight:700;padding:4px 10px;border-radius:999px}.ts-pill--done{background:#eeecf3;color:#5f5877;font-size:11px;letter-spacing:.06em}
.ts-live{display:inline-flex;align-items:center;gap:6px;background:#e11d2e;color:#fff;font-size:11px;font-weight:800;letter-spacing:.08em;padding:4px 10px;border-radius:999px}.ts-live i{width:7px;height:7px;border-radius:50%;background:#fff;animation:lwp 1.2s infinite}
.ts-teams{display:flex;flex-direction:column;gap:7px;color:inherit;text-decoration:none;margin-top:2px}.ts-teams span{display:flex;justify-content:space-between;gap:8px;font-size:15px}.ts-teams b{font-weight:700}.ts-teams em{font-style:normal;font-weight:800;color:#4b2a78}
.ts-card--fixture .ts-sub{color:#6b6480}.ts-card--fixture .ts-r{border-color:#e6dff3;background:#f7f5fb}
