/* Shared UI components. Artwork is deliberately outside this foundation. */
.tg-button{display:inline-flex;align-items:center;justify-content:center;gap:var(--tg-space-2);min-height:var(--tg-target);padding:var(--tg-space-2) var(--tg-space-4);border:1px solid var(--tg-line);border-radius:var(--tg-radius-control);background:var(--tg-surface);color:var(--tg-ink);font:600 var(--tg-button-font-size)/1.4 var(--tg-font);text-decoration:none;cursor:pointer;transition:background var(--tg-motion),border-color var(--tg-motion)}
.tg-button:hover{background:var(--tg-canvas);border-color:var(--tg-line-strong)}.tg-button--primary{background:var(--tg-primary);color:var(--tg-surface);border-color:var(--tg-primary)}.tg-button--primary:hover{background:var(--tg-primary-hover);border-color:var(--tg-primary-hover)}.tg-button--ghost{background:transparent;border-color:transparent;color:var(--tg-muted)}.tg-button--icon{width:var(--tg-target);padding:var(--tg-space-2)}.tg-button:disabled{opacity:.5;cursor:not-allowed}.tg-button:focus-visible,.tg-link:focus-visible{outline:1px solid var(--tg-primary);outline-offset:1px}
.tg-icon,.tg-button .ui-icon{width:var(--tg-icon-md);height:var(--tg-icon-md);fill:none;stroke:currentColor;stroke-width:var(--tg-icon-stroke);stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.tg-card{background:var(--tg-surface);border:1px solid var(--tg-line);border-radius:var(--tg-radius-card);box-shadow:var(--tg-shadow-sm)}.tg-pill{display:inline-flex;align-items:center;gap:var(--tg-space-1);padding:var(--tg-space-1) var(--tg-space-2);border-radius:var(--tg-radius-xs);font-size:var(--tg-text-xs);line-height:1.4;background:var(--tg-canvas);color:var(--tg-muted);white-space:nowrap}.tg-pill--primary{background:var(--tg-primary-soft);color:var(--tg-primary)}.tg-pill--warning{background:var(--tg-warning-soft);color:var(--tg-warning)}.tg-pill--success{background:var(--tg-success-soft);color:var(--tg-success)}.tg-field{min-height:var(--tg-target);padding:var(--tg-space-2) var(--tg-space-3);border:1px solid var(--tg-line);border-radius:var(--tg-radius-control);background:var(--tg-surface);color:var(--tg-ink);font:inherit}.tg-empty{display:grid;justify-items:center;align-content:center;gap:var(--tg-space-3);padding:var(--tg-space-8);text-align:center;min-height:200px;color:var(--tg-muted)}.tg-empty strong{font-size:var(--tg-text-md);font-weight:600;color:var(--tg-ink)}.tg-empty p{margin:0;font-size:var(--tg-text-sm);max-width:360px;line-height:1.7}.tg-empty-icon{display:grid;place-items:center;width:var(--tg-space-12);height:var(--tg-space-12);background:var(--tg-canvas);color:var(--tg-soft);border-radius:var(--tg-radius-card)}.tg-sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.tg-link{color:var(--tg-primary);font-size:var(--tg-text-sm);text-decoration:none}.tg-link:hover{text-decoration:underline}.tg-error{color:var(--tg-danger);font-size:var(--tg-text-sm)}
@media(max-width:620px){.tg-field{font-size:var(--tg-text-md)}}@media(prefers-reduced-motion:reduce){.tg-button{transition:none}}

/* Composite input: one field boundary, an inset keyboard cue for its action. */
.tg-input-group{display:flex;align-items:center;min-width:0;min-height:calc(var(--tg-target) + 2px);padding:0 var(--tg-space-1);border:1px solid var(--tg-line);border-radius:var(--tg-radius-control);background:var(--tg-surface);transition:border-color var(--tg-motion)}
.tg-input-group:hover{border-color:var(--tg-line-strong)}.tg-input-group:focus-within{border-color:var(--tg-primary)}
.tg-input-group>.tg-field{flex:1;min-width:0;width:0;min-height:var(--tg-target);border:0;background:transparent;padding:var(--tg-space-2);box-shadow:none}
.tg-input-group>.tg-button{flex:none;border:0;background:transparent;color:var(--tg-muted);border-radius:var(--tg-radius-xs);background-clip:border-box}
.tg-input-group>.tg-button:hover{color:var(--tg-primary);background-color:var(--tg-primary-soft)}
.tg-input-group:has([aria-invalid=true]){border-color:var(--tg-danger)}
@media(prefers-reduced-motion:reduce){.tg-input-group{transition:none}}

/* Required field marker; native required also conveys the state to assistive tools. */
.tg-required{color:var(--tg-danger);font-size:inherit;font-weight:600;margin-inline-start:var(--tg-space-1)}

/* Single UI action type scale; exclude icon controls and artwork/font specimens. */
:is([data-ui-controls],[data-admin-shell],.auth-body,.auth-page,.site-account,.lib-public,.canvas-studio) :is(button,input[type=submit],input[type=button],input[type=reset],.tg-button,.button,.btn,.auth-back-card,.ce-primary,.ce-secondary,[role=button]):not(:where(.tg-button--icon,.tg-calendar-day,.ce-icon-btn,.icon-button,.ce-font-specimen,.font-specimen,[contenteditable],svg *,[contenteditable] *,.ce-font-preview-popup *,.font-specimen *,.ce-font-specimen *)),
.tg-button:not(.tg-button--icon){font-size:var(--tg-button-font-size)!important}
