.tt-btn{align-items:center;gap:var(--tt-space-2);border:1px solid var(--tt-line);border-radius:var(--tt-radius-sm);background:var(--tt-surface);color:var(--tt-text);font:inherit;font-size:var(--tt-text-sm);cursor:pointer;box-shadow:var(--tt-shadow);padding:7px 14px;font-weight:500;text-decoration:none;display:inline-flex}.tt-btn:disabled{opacity:.55;cursor:not-allowed}.tt-btn--primary{background:var(--tt-accent);border-color:var(--tt-accent);color:var(--tt-accent-ink)}.tt-btn--primary:hover:not(:disabled){background:var(--tt-accent-strong);border-color:var(--tt-accent-strong)}.tt-btn--ghost{box-shadow:none;color:var(--tt-text-muted);background:0 0;border-color:#0000}.tt-card{background:var(--tt-surface);border:1px solid var(--tt-line);border-radius:var(--tt-radius);box-shadow:var(--tt-shadow)}.tt-card__body{padding:var(--tt-space-4)}.tt-card--link{color:inherit;text-decoration:none;transition:border-color .15s;display:block}.tt-card--link:hover{border-color:var(--tt-accent)}.tt-card__title{margin-bottom:var(--tt-space-2);font-weight:600}.tt-grid-cards{gap:var(--tt-space-3);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.tt-badge{background:var(--tt-surface-muted);color:var(--tt-text-muted);white-space:nowrap;border-radius:999px;padding:2px 8px;font-size:12px;font-weight:500;display:inline-block}.tt-badge--accent{background:var(--tt-accent-soft);color:var(--tt-accent)}.tt-badge--info{background:var(--tt-info-soft);color:var(--tt-info)}.tt-badge--success{background:var(--tt-success-soft);color:var(--tt-success)}.tt-badge--danger{background:var(--tt-danger-soft);color:var(--tt-danger)}.tt-field{font-size:var(--tt-text-sm);color:var(--tt-text-muted);gap:6px;display:grid}.tt-field__hint{font-size:12px}.tt-input,.tt-select{border:1px solid var(--tt-line);border-radius:var(--tt-radius-sm);background:var(--tt-surface);min-width:0;color:var(--tt-text);font:inherit;font-size:var(--tt-text-sm);padding:7px 10px}.tt-page-header{justify-content:space-between;align-items:flex-end;gap:var(--tt-space-3);margin-bottom:var(--tt-space-5);flex-wrap:wrap;display:flex}.tt-page-header__subtitle{margin-top:var(--tt-space-1);color:var(--tt-text-muted)}.tt-empty{padding:var(--tt-space-6) var(--tt-space-4);text-align:center;background:var(--tt-surface);border:1px dashed var(--tt-line);border-radius:var(--tt-radius)}.tt-empty__title{font-weight:600}.tt-empty__message{margin:var(--tt-space-1) auto 0;max-width:46ch;color:var(--tt-text-muted)}.tt-error{border:1px solid var(--tt-danger);border-radius:var(--tt-radius-sm);background:var(--tt-danger-soft);color:var(--tt-danger);padding:10px 12px}.tt-loading{gap:var(--tt-space-3);display:grid}.tt-skeleton{background:linear-gradient(90deg, var(--tt-surface-muted), var(--tt-line), var(--tt-surface-muted));background-size:200% 100%;border-radius:4px;height:14px;animation:1.2s linear infinite tt-shimmer}@keyframes tt-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.tt-skeleton{animation:none}}.tt-table-wrap{overflow-x:auto}.tt-table{border-collapse:collapse;width:100%}.tt-table th,.tt-table td{border-bottom:1px solid var(--tt-line);text-align:left;vertical-align:top;font-size:var(--tt-text-sm);padding:10px 12px}.tt-table th{color:var(--tt-text-muted);font-weight:500}.tt-table tbody tr:last-child td{border-bottom:0}
