/* TikTok Video Downloader — card + results. Shared bits from css/tool-base.css. */
.tkd-card { display: flex; flex-direction: column; gap: .85rem; }
.tkd-input-row { display: flex; gap: .5rem; flex-wrap: wrap; }
.tkd-input { flex: 1 1 240px; min-width: 0; padding: .7rem 1rem; border-radius: 100px; border: 1px solid var(--t-border); background: var(--t-bg); color: inherit; font-size: 1rem; }
.tkd-btn { padding: .7rem 1.4rem; border-radius: 100px; border: 0; cursor: pointer; font-weight: 700; color: #fff; background: linear-gradient(135deg, var(--t-accent), var(--t-accent-2)); }
.tkd-btn.secondary { background: var(--t-bg-2, rgba(127,127,127,.15)); color: inherit; border: 1px solid var(--t-border); font-weight: 600; text-decoration: none; display: inline-block; }
.tkd-hint { opacity: .75; font-size: .9rem; }
.tkd-error { display: none; color: #d33; background: rgba(255,0,0,.07); border: 1px solid rgba(255,0,0,.25); border-radius: 12px; padding: .6rem .9rem; }
.tkd-meta { display: flex; gap: .8rem; align-items: flex-start; margin-bottom: .8rem; }
.tkd-thumb { width: 120px; border-radius: 12px; flex-shrink: 0; }
.tkd-mtext p { margin: .2rem 0 0; opacity: .85; }
.tkd-preview { width: 100%; max-height: 420px; border-radius: 12px; background: #000; margin-bottom: .8rem; }
.tkd-bar { display: flex; gap: .5rem; align-items: center; flex-wrap: wrap; }
.tkd-bar select { padding: .55rem .8rem; border-radius: 100px; border: 1px solid var(--t-border); background: var(--t-bg); color: inherit; }
.tkd-btn.is-loading { opacity: .75; pointer-events: none; }
.tkd-btn.is-loading::after {
  content: ''; display: inline-block; width: .8rem; height: .8rem; margin-left: .45rem;
  border: 2px solid rgba(127,127,127,.35); border-top-color: currentColor; border-radius: 50%;
  vertical-align: -2px; animation: tkdSpin .7s linear infinite;
}
@keyframes tkdSpin { to { transform: rotate(360deg); } }
@media (max-width: 480px) { .tkd-thumb { width: 84px; } }
