/* Independent sizing owner. This first layer outranks legacy important geometry,
   while shared button.css owns colors and states. */
@layer gaip-button-dimensions {
  :where(.gaip-ui-button, [data-gaip-button-size]):not(.gaip-table__button, .gaip-table__more):not(:is(table, [role="table"], [role="grid"], .gaip-table, [data-gaip-table], .gaip-table__row-actions) *) {
    --gaip-button-height: 40px;
    --gaip-button-font: 14px;
    --gaip-button-line: 22px;
    --gaip-button-padding: 16px;
    --gaip-button-icon: 16px;
    --gaip-button-gap: 8px;
    box-sizing: border-box !important;
    display: inline-flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: center !important;
    flex: 0 0 auto !important;
    width: max-content !important;
    min-width: var(--gaip-button-height) !important;
    max-width: 100% !important;
    height: var(--gaip-button-height) !important;
    min-height: var(--gaip-button-height) !important;
    max-height: var(--gaip-button-height) !important;
    padding: 0 var(--gaip-button-padding) !important;
    gap: var(--gaip-button-gap) !important;
    border-radius: var(--gaip-button-radius, 4px) !important;
    font-family: var(--gaip-global-font, sans-serif) !important;
    font-size: var(--gaip-button-font) !important;
    line-height: var(--gaip-button-line) !important;
    text-align: center !important;
    white-space: nowrap !important;
    vertical-align: middle !important;
    text-indent: 0 !important;
    letter-spacing: normal !important;
  }
  .gaip-button[data-gaip-button-component][data-gaip-button-block="true"]:not(.gaip-table__button, .gaip-table__more):not(:is(table, [role="table"], [role="grid"], .gaip-table, [data-gaip-table], .gaip-table__row-actions) *) {
    width: 100% !important;
  }
  [data-gaip-button-size="small"]:not(.gaip-table__button, .gaip-table__more):not(:is(table, [role="table"], [role="grid"], .gaip-table, [data-gaip-table], .gaip-table__row-actions) *) {
    --gaip-button-height: 32px;
    --gaip-button-font: 14px;
    --gaip-button-line: 20px;
    --gaip-button-padding: 12px;
    --gaip-button-icon: 14px;
    --gaip-button-gap: 6px;
  }
  [data-gaip-button-size="large"]:not(.gaip-table__button, .gaip-table__more):not(:is(table, [role="table"], [role="grid"], .gaip-table, [data-gaip-table], .gaip-table__row-actions) *) {
    --gaip-button-height: 48px;
    --gaip-button-font: 16px;
    --gaip-button-line: 24px;
    --gaip-button-padding: 20px;
    --gaip-button-icon: 20px;
    --gaip-button-gap: 8px;
  }
  :where(.gaip-ui-button, [data-gaip-button-size]):not(.gaip-table__button, .gaip-table__more):not(:is(table, [role="table"], [role="grid"], .gaip-table, [data-gaip-table], .gaip-table__row-actions) *) .gaip-button__icon {
    color: inherit !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    box-sizing: border-box !important;
    flex: 0 0 var(--gaip-button-icon) !important;
    width: var(--gaip-button-icon) !important;
    height: var(--gaip-button-icon) !important;
    min-width: 0 !important;
    min-height: 0 !important;
    max-width: none !important;
    max-height: none !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    line-height: 1 !important;
    font-size: var(--gaip-button-icon) !important;
    position: static !important;
    vertical-align: middle !important;
  }
  :where(.gaip-ui-button, [data-gaip-button-size]):not(.gaip-table__button, .gaip-table__more):not(:is(table, [role="table"], [role="grid"], .gaip-table, [data-gaip-table], .gaip-table__row-actions) *) .gaip-button__icon :where(span) {
    display: contents !important;
    margin: 0 !important;
    padding: 0 !important;
  }
  :where(.gaip-ui-button, [data-gaip-button-size]):not(.gaip-table__button, .gaip-table__more):not(:is(table, [role="table"], [role="grid"], .gaip-table, [data-gaip-table], .gaip-table__row-actions) *) .gaip-button__icon :where(svg, img) {
    display: block !important;
    flex-shrink: 0 !important;
    width: 100% !important;
    height: 100% !important;
    min-width: 0 !important;
    min-height: 0 !important;
    max-width: 100% !important;
    max-height: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    object-fit: contain !important;
    position: static !important;
    transform: none !important;
  }
  /* Text wrappers cannot bring their old padding/height back into the button. */
  [data-gaip-button-size]:not(.gaip-table__button, .gaip-table__more):not(:is(table, [role="table"], [role="grid"], .gaip-table, [data-gaip-table], .gaip-table__row-actions) *) > :not(.gaip-button__icon) {
    color: inherit !important;
    font-weight: inherit !important;
    font-size: inherit !important;
    line-height: inherit !important;
    margin: 0 !important;
    padding: 0 !important;
    height: auto !important;
    min-height: 0 !important;
  }
  /* Offset the flex content area so original text nodes need no new wrapper.
     Twice the offset on one side moves its center by exactly the offset.
     Counter-translate each outer icon slot once, preserving its own rotation. */
  .gaip-button[data-gaip-button-component][data-gaip-button-size]:not(.gaip-table__button,.gaip-table__more):not(:is(table,[role="table"],[role="grid"],.gaip-table,.ant-table,[data-gaip-table],.gaip-table__row-actions) *) {
    padding-top: calc(2 * var(--gaip-button-label-offset-y, 0.5px)) !important;
    padding-bottom: 0 !important;
  }
  .gaip-button[data-gaip-button-component][data-gaip-button-size]:not(.gaip-table__button,.gaip-table__more):not(:is(table,[role="table"],[role="grid"],.gaip-table,.ant-table,[data-gaip-table],.gaip-table__row-actions) *) .gaip-button__icon:not(.gaip-button__icon .gaip-button__icon) {
    translate: 0 calc(-1 * var(--gaip-button-label-offset-y, 0.5px)) !important;
  }
  .gaip-button[hidden] { display: none !important; }
  .gaip-button[data-gaip-button-component][data-gaip-button-size] [data-gaip-button-icon-source="hidden"] { display: none !important; }
  .gaip-button[data-gaip-button-component][data-gaip-button-size] [data-gaip-button-icon-source="wrapped"] { visibility: hidden !important; }
  .gaip-button .gaip-button__icon[data-gaip-button-icon-host] { position: relative !important; }
  .gaip-button[data-gaip-button-component][data-gaip-button-size] .gaip-button__glyph { display: block !important; position: absolute !important; inset: 0 !important; width: 100% !important; height: 100% !important; pointer-events: none !important; }
  .gaip-button[data-gaip-button-component][data-gaip-button-size] :where(.gaip-button__icon[data-gaip-icon],.gaip-button__glyph) {
    background-color: currentColor !important; background-image: none !important;
    -webkit-mask-image: var(--gaip-button-icon-asset) !important; mask-image: var(--gaip-button-icon-asset) !important;
    -webkit-mask-size: contain !important; mask-size: contain !important;
    -webkit-mask-position: center !important; mask-position: center !important;
    -webkit-mask-repeat: no-repeat !important; mask-repeat: no-repeat !important;
    mask-mode: alpha !important; filter: none !important; opacity: 1 !important;
  }
  .gaip-button[data-gaip-button-component][data-gaip-button-size] [data-gaip-icon-mode="color"] {
    -webkit-mask-image: none !important; mask-image: none !important;
    background-color: transparent !important; background-image: var(--gaip-button-icon-asset) !important;
    background-size: contain !important; background-position: center !important; background-repeat: no-repeat !important;
  }
  .gaip-button:is(:disabled,[aria-disabled="true"]) [data-gaip-icon-mode="color"] { opacity: .42 !important; }
  .gaip-button [data-gaip-icon-flip="true"] { transform: rotate(180deg) !important; }
  /* Position is visual configuration; original React child order stays intact. */
  .gaip-button[data-gaip-button-component][data-gaip-button-size][data-gaip-button-icon-position="end"] > .gaip-button__icon { order: 1 !important; }
  .gaip-button[data-gaip-button-component][data-gaip-button-size][data-gaip-button-icon-position="start"] > .gaip-button__icon { order: -1 !important; }
  .gaip-button[data-gaip-button-component][data-gaip-button-size] [data-gaip-icon-tone="mint"] { color: var(--gaip-palette-mint, #24d4c9) !important; }
  .gaip-button[data-gaip-button-component][data-gaip-button-size]:is(:disabled,[aria-disabled="true"]) [data-gaip-icon-tone="mint"] { color: inherit !important; }

  .gaip-button[data-gaip-button-component][data-gaip-button-size] [data-gaip-button-loading-replaced] { display: none !important; }
  /* Replace an explicitly registered legacy CSS icon, never duplicate it. */
  .gaip-button[data-gaip-button-component][data-gaip-button-legacy-icon-pseudo="after"]::after { content: none !important; display: none !important; }

}
