/* ---------- Logo ---------- */
.tx-logo{display:inline-block;line-height:0}
.tx-logo img{display:block;height:100%;width:auto}

/* ---------- Icon ---------- */
.tx-icon{display:inline-block;flex:none;background-color:currentColor;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}

/* ---------- Button ---------- */
.tx-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-3);font-family:var(--font-sans);font-weight:var(--weight-semibold);letter-spacing:.01em;text-decoration:none;border:var(--border-width-strong) solid transparent;border-radius:var(--radius-button);background:var(--navy-700);color:var(--ink-0);cursor:pointer;transition:var(--transition-control);white-space:nowrap}
.tx-btn--md{height:var(--control-min);padding:0 var(--space-7);font-size:var(--size-sm)}
.tx-btn--sm{height:var(--field-height-sm);padding:0 var(--space-5);font-size:var(--size-xs)}
.tx-btn--lg{height:52px;padding:0 var(--space-8);font-size:var(--size-base)}
.tx-btn--block{display:flex;width:100%}
.tx-btn--primary{background:var(--navy-700);color:var(--ink-0);border-color:var(--navy-700)}
.tx-btn--primary:hover{background:var(--navy-600);border-color:var(--navy-600);transform:var(--lift-hover);box-shadow:var(--shadow-md)}
.tx-btn--accent{background:var(--teal-600);color:var(--ink-0);border-color:var(--teal-600)}
.tx-btn--accent:hover{background:var(--teal-700);border-color:var(--teal-700);transform:var(--lift-hover);box-shadow:var(--shadow-md)}
.tx-btn--secondary{background:transparent;color:var(--navy-700);border-color:var(--navy-700)}
.tx-btn--secondary:hover{background:var(--navy-700);color:var(--ink-0)}
.tx-btn--ghost{background:transparent;color:var(--navy-700);border-color:transparent}
.tx-btn--ghost:hover{background:var(--navy-50)}
.tx-btn--inverse{background:var(--ink-0);color:var(--navy-700);border-color:var(--ink-0)}
.tx-btn--inverse:hover{background:var(--teal-300);border-color:var(--teal-300);color:var(--navy-800)}
.tx-btn--danger{background:var(--danger-600);color:var(--ink-0);border-color:var(--danger-600)}
.tx-btn--danger:hover{background:var(--danger-700);border-color:var(--danger-700)}
.tx-btn:active{transform:scale(var(--press-scale))}
.tx-btn:focus-visible{outline:none;box-shadow:var(--shadow-focus)}
.tx-btn[disabled],.tx-btn[aria-disabled=true]{opacity:.42;pointer-events:none}

/* ---------- IconButton ---------- */
.tx-iconbtn{display:inline-grid;place-items:center;border-radius:var(--radius-circle);border:var(--border-width-strong) solid transparent;background:transparent;color:var(--navy-700);cursor:pointer;transition:var(--transition-control)}
.tx-iconbtn--md{width:44px;height:44px}
.tx-iconbtn--sm{width:36px;height:36px}
.tx-iconbtn--lg{width:52px;height:52px}
.tx-iconbtn--solid{background:var(--navy-700);border-color:var(--navy-700);color:var(--ink-0)}
.tx-iconbtn--solid:hover{background:var(--navy-600);border-color:var(--navy-600)}
.tx-iconbtn--outline{border-color:var(--border-subtle)}
.tx-iconbtn--outline:hover{border-color:var(--teal-600);color:var(--teal-700)}
.tx-iconbtn--ghost:hover{background:var(--navy-50)}
.tx-iconbtn:active{transform:scale(var(--press-scale))}
.tx-iconbtn:focus-visible{outline:none;box-shadow:var(--shadow-focus)}
.tx-iconbtn[disabled]{opacity:.42;pointer-events:none}

/* ---------- Card ---------- */
.tx-card{background:var(--surface-card);border:var(--border-width) solid var(--border-subtle);border-radius:var(--radius-card);padding:var(--space-7);transition:var(--transition-control)}
.tx-card--flat{box-shadow:none}
.tx-card--raised{box-shadow:var(--shadow-sm);border-color:transparent}
.tx-card--tinted{background:var(--surface-subtle);border-color:transparent}
.tx-card--inverse{background:var(--surface-inverse);border-color:transparent;color:var(--ink-100)}
.tx-card--inverse .tx-card__title{color:var(--ink-0)}
.tx-card--accent{background:var(--surface-accent-soft);border-color:var(--teal-200)}
.tx-card--interactive{cursor:pointer}
.tx-card--interactive:hover{transform:var(--lift-hover);box-shadow:var(--shadow-md);border-color:var(--teal-300)}
.tx-card__eyebrow{font-family:var(--font-sans);font-stretch:var(--stretch-condensed);text-transform:uppercase;letter-spacing:var(--tracking-widest);font-size:var(--size-2xs);color:var(--ink-500);margin-bottom:var(--space-3)}
.tx-card__title{font-family:var(--font-display);font-size:var(--size-lg);line-height:var(--leading-snug);color:var(--text-heading);margin:0 0 var(--space-3)}
.tx-card__body{font-size:var(--size-sm);line-height:var(--leading-relaxed);color:var(--text-muted)}
.tx-card__footer{margin-top:var(--space-6);display:flex;gap:var(--space-4);align-items:center}

/* ---------- Badge ---------- */
.tx-badge{display:inline-flex;flex:none;white-space:nowrap;align-items:center;gap:var(--space-2);font-family:var(--font-sans);font-weight:var(--weight-semibold);font-size:var(--size-2xs);letter-spacing:.04em;text-transform:uppercase;padding:0 var(--space-4);height:22px;border-radius:var(--radius-pill);background:var(--ink-100);color:var(--ink-700)}
.tx-badge--neutral{background:var(--ink-100);color:var(--ink-700)}
.tx-badge--brand{background:var(--navy-700);color:var(--ink-0)}
.tx-badge--accent{background:var(--teal-100);color:var(--teal-800)}
.tx-badge--success{background:var(--success-100);color:var(--success-700)}
.tx-badge--warning{background:var(--warning-100);color:var(--warning-700)}
.tx-badge--danger{background:var(--danger-100);color:var(--danger-700)}
.tx-badge--info{background:var(--info-100);color:var(--info-700)}
.tx-badge__dot{width:6px;height:6px;border-radius:var(--radius-circle);background:currentColor}

/* ---------- Tag ---------- */
.tx-tag{display:inline-flex;align-items:center;gap:var(--space-3);font-size:var(--size-xs);font-weight:var(--weight-semibold);color:var(--navy-700);background:var(--ink-0);border:var(--border-width) solid var(--border-subtle);border-radius:var(--radius-pill);padding:0 var(--space-4);height:30px;transition:var(--transition-control)}
.tx-tag--selected{background:var(--navy-700);border-color:var(--navy-700);color:var(--ink-0)}
.tx-tag--clickable{cursor:pointer}
.tx-tag--clickable:hover{border-color:var(--teal-600);color:var(--teal-700)}
.tx-tag--selected.tx-tag--clickable:hover{background:var(--navy-600);border-color:var(--navy-600);color:var(--ink-0)}
.tx-tag__remove{display:grid;place-items:center;width:16px;height:16px;border:0;background:transparent;color:inherit;cursor:pointer;opacity:.6;border-radius:var(--radius-circle)}
.tx-tag__remove:hover{opacity:1}
