/* Tumor suppressor gene lesson. All rules scoped under .ts-* */
.ts-sc { position: relative; width: 100%; display: flex; flex-direction: column; align-items: center; gap: 8px; }
.ts-sc > svg { display: block; width: 100%; height: auto; overflow: visible; }
.ts-cap { font-size: 12.5px; color: var(--dim); text-align: center; }
.ts-hero { display: grid; place-items: center; }
.ts-hero img { width: 300px; max-width: 100%; max-height: 34vh; object-fit: contain; filter: drop-shadow(0 16px 28px rgba(123,92,253,.3)); }
.ts-t { fill: var(--dim); font: 700 12.5px var(--sans); text-anchor: middle; }

/* the brake cell */
.ts-cell { max-width: 400px; }
.ts-mem { fill: rgba(227,165,140,.10); stroke: #E3A58C; stroke-width: 2; }
.ts-wheel circle { fill: var(--raised); stroke: var(--gold); stroke-width: 4; }
.ts-wheel line { stroke: var(--gold); stroke-width: 3; opacity: .7; }
.ts-wl { fill: var(--gold); font-size: 13px; }
.ts-hit { fill: transparent; stroke: none; }
.ts-brake { cursor: pointer; }
.ts-pad { fill: var(--mint); transition: fill .2s, transform .3s; }
.ts-arm { stroke: var(--mint); stroke-width: 5; stroke-linecap: round; transition: stroke .2s; }
.ts-pv { fill: var(--text); }
.ts-brake.broke .ts-pad { fill: #FF6B6B; }
.ts-brake.broke .ts-arm { stroke: #FF6B6B; stroke-dasharray: 6 5; }
.ts-b0.broke .ts-pad { transform: translate(-10px, 14px) rotate(-18deg); transform-box: fill-box; transform-origin: center; }
.ts-b1.broke .ts-pad { transform: translate(10px, 14px) rotate(18deg); transform-box: fill-box; transform-origin: center; }
.ts-brake.target .ts-hit { stroke: var(--gold); stroke-width: 2.5; stroke-dasharray: 5 4; }
.ts-cell.free .ts-wheel circle { stroke: #FF6B6B; }
.ts-status { font-size: 15px; font-weight: 700; color: var(--mint); }
.ts-status.bad { color: #FF8A8A; }

/* two children */
.ts-kids { max-width: 420px; }
.ts-kl { text-anchor: start; fill: var(--text); font-size: 12.5px; }
.ts-el { font-size: 12px; }
.ts-eye { fill: rgba(169,155,255,.08); stroke: var(--line-strong); stroke-width: 1.5; }
.ts-c rect { fill: var(--surface); stroke: var(--line-strong); stroke-width: 1; transition: fill .25s, stroke .25s; }
.ts-cp { fill: var(--mint); transition: fill .25s; }
.ts-cp.off { fill: #5A5550; }
.ts-c.hit rect { stroke: var(--dim); }
.ts-c.tumor rect { fill: #FF6B6B; stroke: #fff; stroke-width: 1.5; }
.ts-c.tumor .ts-cp { fill: #7A2A2A; }
.ts-key { display: flex; gap: 14px; flex-wrap: wrap; justify-content: center; font-size: 12.5px; font-weight: 600; color: var(--dim); }
.ts-key span { display: inline-flex; align-items: center; gap: 6px; }
.ts-kd { display: inline-block; width: 10px; height: 10px; border-radius: 50%; background: var(--mint); }
.ts-kd.off { background: #5A5550; }
.ts-kt { display: inline-block; width: 14px; height: 12px; border-radius: 3px; background: #FF6B6B; }

/* the real eyes */
.ts-two { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; width: 100%; }
.ts-two div { display: flex; flex-direction: column; gap: 6px; padding: 16px 12px; border-radius: 14px; background: var(--surface); border: 1px solid var(--line); }
.ts-two b { font-size: 16px; color: var(--gold); }
.ts-two span { font-size: 14px; color: var(--text); line-height: 1.35; }
.ts-rb { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 20px 16px; border-radius: 18px; background: var(--surface); border: 1px solid var(--line); width: 100%; }
.ts-rb b { font: 700 32px var(--mono); color: var(--gold); }
.ts-rb span { font-size: 13px; color: var(--dim); font-weight: 600; }
.ts-rb small { font-size: 13.5px; color: var(--text); }
.ts-rbc { display: flex; gap: 10px; margin: 6px 0; }
.ts-rbc i { width: 22px; height: 22px; border-radius: 50%; background: #5A5550; border: 2px solid #FF6B6B; }

.ts-hide { opacity: 0; }
.ts-two { transition: opacity .4s; }

/* in families */
.ts-bars { width: 100%; display: flex; flex-direction: column; gap: 12px; padding: 16px 14px; border-radius: 16px; background: var(--surface); border: 1px solid var(--line); }
.ts-btitle { font-size: 13px; font-weight: 700; color: var(--dim); }
.ts-bar { display: grid; grid-template-columns: 1fr; gap: 4px; }
.ts-bar span { font-size: 14px; color: var(--text); font-weight: 600; }
.ts-bar i { display: block; height: 14px; border-radius: 999px; background: var(--raised); overflow: hidden; }
.ts-bar b { display: block; height: 100%; width: 0; background: var(--dim); border-radius: 999px; transition: width .8s cubic-bezier(.2,.8,.2,1); }
.ts-bar.hi b { background: var(--gold); }
.ts-bar em { font: 700 14px var(--mono); font-style: normal; color: var(--text); }
.ts-bar.hi em { color: var(--gold); }

@media (max-height: 700px) { .ts-kids { max-width: 320px; } }
.ts-her { max-width: 340px; }
