/* The arrow swaps sides while its label slides, as in the Letter reference. */
.niwa-button { position: relative; display: inline-flex; align-items: center; justify-content: center; gap: 12px; min-height: var(--niwa-cta-height); min-width: 168px; padding: 0 28px; overflow: hidden; color: #2e3032; background: var(--niwa-button-surface); font: 400 12px/1.58 var(--niwa-font-body); letter-spacing: -.015em; white-space: nowrap; transition: background-color .35s; }
.niwa-button img { flex: none; width: 16px; height: 16px; }
.niwa-button__label { transition: transform .45s var(--pt-ease); }
.niwa-button__leading { position: absolute; left: 22px; opacity: 0; transform: translateX(-16px); transition: opacity .35s, transform .45s var(--pt-ease); }
.niwa-button__trailing { opacity: 1; transition: opacity .25s, transform .4s var(--pt-ease); }
.niwa-button:is(:hover,:focus-visible) .niwa-button__label { transform: translateX(16px); }
.niwa-button:is(:hover,:focus-visible) .niwa-button__leading { opacity: 1; transform: none; }
.niwa-button:is(:hover,:focus-visible) .niwa-button__trailing { opacity: 0; transform: translateX(14px); }
.niwa-button:is(:hover,:focus-visible) { background: var(--niwa-button-hover); text-decoration: none; }
.niwa-button--quiet { background: transparent; }
.niwa-button.header-demo { min-width: 176px; color: #fff; background: #2e303280; justify-self: end; }
.niwa-button.header-demo img { filter: invert(1); }
.niwa-button.header-demo:hover { background: #2e3032a6; }
.niwa-loader { display: none; position: fixed; inset: 0; z-index: 1000; justify-items: center; align-content: center; gap: 28px; background: var(--niwa-site-background); pointer-events: none; }
.niwa-loading .niwa-loader { display: grid; animation: niwa-loader-failsafe 0s 3s forwards; }
.niwa-loader > img { width: 72px; height: 18px; object-fit: contain; filter: brightness(0); }
.niwa-loader__line { display: block; width: 90px; height: 1px; background: #2e3032; transform-origin: left; animation: niwa-loader-line 1.3s var(--pt-ease) both; }
.niwa-loader.is-leaving { opacity: 0; transition: opacity .45s ease; }
@keyframes niwa-loader-line { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@keyframes niwa-loader-failsafe { to { visibility: hidden; } }
@media(max-width:980px) { .niwa-button { min-height: 44px; } }
@media(max-width:640px) {
  .niwa-button { min-width: 0; max-width: 100%; padding: 12px 18px; font-size: 14px; gap: 9px; white-space: normal; text-align: center; }
  .niwa-button__leading { left: 16px; }
  .niwa-button.header-demo { min-width: 0; padding-inline: 16px; }
}
@media(prefers-reduced-motion:reduce) { .niwa-loader { display: none !important; } }
