/* Public component contract. Prefix ct- avoids legacy component collisions. */
.ct-grid{display:grid;grid-template-columns:repeat(var(--grid-columns),minmax(0,1fr));gap:var(--grid-gutter)}
.ct-btn{display:inline-flex;align-items:center;justify-content:center;gap:.65rem;min-height:48px;padding:.75rem 1.3rem;border:1px solid transparent;border-radius:var(--radius-md);background:var(--brand-primary);color:var(--text-inverse);font:650 1rem/1.3 var(--font-body);text-decoration:none;cursor:pointer;transition:background var(--motion-fast),transform var(--motion-fast)}
.ct-btn:hover{background:var(--brand-primary-hover);transform:translateY(-1px)}.ct-btn:active{background:var(--brand-primary-active);transform:none}.ct-btn:disabled,.ct-btn[aria-disabled=true]{opacity:.5;cursor:not-allowed;transform:none}.ct-btn--quiet{background:transparent;color:var(--text-primary);border-color:var(--border-primary)}.ct-btn--quiet:hover{background:var(--surface-secondary)}
.ct-card{padding:var(--space-6);background:var(--surface-primary);border:1px solid var(--border-primary);border-radius:var(--radius-lg)}.ct-badge{display:inline-flex;padding:.2rem .55rem;border:1px solid var(--border-primary);border-radius:var(--radius-sm);font:600 var(--type-caption)/1.4 var(--font-body);color:var(--text-secondary)}
.ct-field{display:grid;gap:.45rem;font-weight:600}.ct-input{width:100%;min-height:48px;padding:.75rem;border:1px solid var(--border-primary);border-radius:var(--radius-md);background:var(--surface-primary);color:var(--text-primary);font:400 1rem var(--font-body)}.ct-input[aria-invalid=true]{border-color:var(--error)}.ct-help{font-size:var(--type-small);color:var(--text-muted)}
.ct-alert{padding:var(--space-4);border:1px solid var(--border-primary);border-left:4px solid var(--info);border-radius:var(--radius-sm);background:var(--surface-secondary)}.ct-alert--error{border-left-color:var(--error)}.ct-alert--success{border-left-color:var(--success)}
.ct-accordion{border-bottom:1px solid var(--border-primary)}.ct-accordion summary{padding:1.2rem 0;cursor:pointer;font-weight:650;min-height:48px}.ct-accordion>p{padding-bottom:1.2rem;color:var(--text-secondary)}
.ct-dialog{width:min(520px,calc(100% - 40px));margin:auto;padding:2rem;background:var(--surface-primary);color:var(--text-primary);border:1px solid var(--border-primary);border-radius:var(--radius-panel);box-shadow:var(--shadow-floating)}.ct-dialog::backdrop{background:#12251dcc}
.ct-tabs{display:flex;gap:.5rem;border-bottom:1px solid var(--border-primary)}.ct-tabs [role=tab]{padding:1rem;min-height:48px;background:none;border:0;border-bottom:3px solid transparent;font:600 1rem var(--font-body);color:var(--text-secondary);cursor:pointer}.ct-tabs [aria-selected=true]{color:var(--brand-primary);border-bottom-color:var(--brand-primary)}
.ct-table-wrap{overflow:auto}.ct-table{width:100%;border-collapse:collapse}.ct-table th,.ct-table td{padding:1rem;text-align:left;border-bottom:1px solid var(--border-primary)}.ct-table th{background:var(--surface-secondary)}
.ct-breadcrumbs,.ct-pagination{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.ct-pagination a{display:grid;place-items:center;min-width:44px;min-height:44px;color:var(--text-primary);border:1px solid var(--border-primary);border-radius:4px}.ct-pagination [aria-current=page]{background:var(--brand-primary);color:var(--text-inverse)}
.ct-loader{display:inline-block;width:24px;height:24px;border:3px solid var(--border-primary);border-top-color:var(--brand-primary);border-radius:50%;animation:ct-spin .8s linear infinite}.ct-skeleton{height:1rem;background:var(--surface-secondary);border-radius:4px;animation:ct-pulse 1.6s ease-in-out infinite}.ct-empty{padding:3rem;text-align:center;background:var(--background-secondary);border:1px dashed var(--border-primary);border-radius:12px}
.ct-tooltip-wrap{position:relative;display:inline-flex}.ct-tooltip{position:absolute;bottom:calc(100% + 8px);left:0;z-index:5;width:200px;padding:.6rem;background:var(--brand-dark);color:#fff;border-radius:4px;font-size:.875rem;visibility:hidden}.ct-tooltip-wrap:hover .ct-tooltip,.ct-tooltip-wrap:focus-within .ct-tooltip{visibility:visible}
.ct-dropdown{position:relative}.ct-dropdown summary{min-height:44px;cursor:pointer;padding:.8rem}.ct-dropdown>nav{position:absolute;z-index:5;background:var(--surface-primary);box-shadow:var(--shadow-floating);padding:1rem;border:1px solid var(--border-primary);min-width:180px}.ct-dropdown a{display:block;padding:.6rem;color:var(--text-primary)}
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:3px solid var(--focus-ring);outline-offset:4px}
@keyframes ct-spin{to{transform:rotate(360deg)}}@keyframes ct-pulse{50%{opacity:.45}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
