/* GDS core primitives: buttons, links, badges, cards, spinner, skeleton, icons, logo, type. */

/* ---------- Button ---------- */
.gds-btn{position:relative;display:inline-block;width:auto;min-height:var(--gds-min-tap-size);margin:0;padding:var(--gds-space-club) var(--gds-space-auditorium);border:1px solid transparent;border-radius:var(--gds-radius-card);font-family:inherit;font-weight:var(--gds-font-weight-semibold);font-size:var(--gds-rainier-font-size);line-height:var(--gds-line-height-default);letter-spacing:inherit;white-space:nowrap;text-align:center;text-decoration:none;background-color:transparent;cursor:pointer;transition:background-color var(--gds-motion-default)}
@supports (text-wrap:pretty){.gds-btn{text-wrap:pretty}}
.gds-btn:focus{outline-offset:4px}
.gds-btn--full{width:100%}
.gds-btn__inner{display:flex;gap:var(--gds-space-club);align-items:center;justify-content:center}
.gds-btn__inner--loading{visibility:hidden}
.gds-btn__loader{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}
/* fill */
.gds-btn--primary{color:var(--gds-btn-primary-fg);background-color:var(--gds-btn-primary-bg)}
.gds-btn--primary:not(:disabled):hover{border-color:var(--gds-neptune-dark);background-color:var(--gds-neptune-dark)}
.gds-btn--transaction{font-size:var(--gds-fiji-font-size);color:var(--gds-btn-transaction-fg);background-color:var(--gds-btn-transaction-bg)}
.gds-btn--transaction:not(:disabled):hover{border-color:var(--gds-earth-dark);background-color:var(--gds-earth-dark)}
.gds-btn--transaction:not(:disabled):active{border-color:var(--gds-earth-darker);background-color:var(--gds-earth-darker)}
/* outline */
.gds-btn--secondary{border-color:var(--gds-btn-secondary-bg);color:var(--gds-btn-secondary-bg)}
.gds-btn--secondary:not(:disabled):hover{border-color:var(--gds-neptune-dark);color:var(--gds-btn-secondary-fg);background-color:var(--gds-neptune-dark)}
.gds-btn--tertiary{border-color:var(--gds-cosmos-muted);color:var(--gds-btn-tertiary-bg)}
.gds-btn--tertiary:not(:disabled):hover{border-color:var(--gds-cosmos);color:var(--gds-btn-tertiary-fg);background-color:var(--gds-cosmos)}
.gds-btn--inverse{border-color:var(--gds-btn-inverse-bg);color:var(--gds-btn-inverse-bg)}
.gds-btn--inverse:not(:disabled):hover{color:var(--gds-btn-inverse-fg);background-color:var(--gds-btn-inverse-bg)}
.gds-btn--inverse:disabled{opacity:.6}
/* ghost */
.gds-btn--ghost{border-color:transparent;color:var(--gds-btn-primary-bg)}
.gds-btn--ghost:not(:disabled):hover{color:var(--gds-neptune-dark);background-color:var(--gds-neptune-ghost-hover)}
.gds-btn--ghost:disabled{border-color:transparent;color:var(--gds-btn-disabled-fg);background-color:transparent}
.gds-btn--secondary:disabled,.gds-btn--tertiary:disabled{border-color:var(--gds-btn-disabled-fg);color:var(--gds-btn-disabled-fg);background-color:transparent}
.gds-btn:disabled{cursor:not-allowed}
.gds-btn--primary:disabled,.gds-btn--transaction:disabled{border-color:var(--gds-btn-disabled-bg);color:var(--gds-btn-disabled-fg);background-color:var(--gds-btn-disabled-bg)}
.gds-btn--primary:not(:disabled):active,.gds-btn--secondary:not(:disabled):active,.gds-btn--tertiary:not(:disabled):active,.gds-btn--ghost:not(:disabled):active{border-color:var(--gds-neptune-darker);background-color:var(--gds-neptune-darker);color:var(--gds-btn-primary-fg)}

/* ---------- PillButton ---------- */
.gds-pill{display:inline-block;height:var(--gds-min-tap-size);padding:0 var(--gds-space-auditorium);border:1px solid var(--gds-btn-pill-fg);border-radius:var(--gds-radius-pill);color:var(--gds-btn-pill-fg);font-family:inherit;font-weight:var(--gds-font-weight-semibold);font-size:var(--gds-rainier-font-size);text-align:center;text-decoration:none;background-color:transparent;cursor:pointer;transition:all var(--gds-motion-default)}
.gds-pill--small{height:var(--gds-space-arena)}
.gds-pill__inner{display:flex;gap:var(--gds-space-club);align-items:center;justify-content:center;line-height:calc(var(--gds-min-tap-size) - 2px)}
.gds-pill--small .gds-pill__inner{line-height:calc(var(--gds-space-arena) - 2px)}
.gds-pill:focus{outline-offset:4px}
.gds-pill:not(:disabled):hover{border-color:var(--gds-btn-tertiary-bg);color:var(--gds-btn-primary-fg);background-color:var(--gds-btn-tertiary-bg)}
.gds-pill--selected{border-color:var(--gds-ganymede-dark);background-color:var(--gds-btn-pill-bg)}
.gds-pill--selected:not(:disabled):hover{border-color:var(--gds-ganymede-hover);color:var(--gds-btn-pill-fg);background-color:var(--gds-ganymede-hover)}
.gds-pill:not(:disabled):active{border-color:var(--gds-ganymede-active);color:var(--gds-btn-pill-fg);background-color:var(--gds-ganymede-active)}
.gds-pill--inverse{border-color:var(--gds-btn-inverse-bg);color:var(--gds-btn-inverse-bg)}
.gds-pill--inverse:not(:disabled):hover{border-color:var(--gds-btn-inverse-bg);color:var(--gds-btn-pill-fg);background-color:var(--gds-btn-inverse-bg)}
.gds-pill:disabled{border-color:var(--gds-base-border-light);color:var(--gds-btn-disabled-fg);background-color:var(--gds-base-border-light);cursor:not-allowed}
.gds-pill--inverse:disabled{border-color:var(--gds-btn-disabled-fg);background-color:transparent}

/* ---------- Circle / Square icon buttons ---------- */
.gds-iconbtn{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:var(--gds-min-tap-size);height:var(--gds-min-tap-size);padding:0;border:1px solid transparent;font-family:inherit;text-align:center;text-decoration:none;background-color:transparent;cursor:pointer;transition:background-color var(--gds-motion-default)}
.gds-iconbtn:focus{outline-offset:4px}
.gds-iconbtn--circle{border-radius:var(--gds-radius-circle)}
.gds-iconbtn--square{border-radius:var(--gds-radius-card)}
.gds-iconbtn--large{width:var(--gds-circle-button-large);height:var(--gds-circle-button-large)}
.gds-iconbtn--primary{color:var(--gds-btn-primary-fg);background-color:var(--gds-btn-primary-bg)}
.gds-iconbtn--primary:not(:disabled):hover{background-color:var(--gds-neptune-dark)}
.gds-iconbtn--secondary{border-color:var(--gds-btn-primary-bg);color:var(--gds-btn-primary-bg)}
.gds-iconbtn--secondary:not(:disabled):hover{color:var(--gds-btn-primary-fg);background-color:var(--gds-btn-primary-bg)}
.gds-iconbtn--tertiary{border-color:var(--gds-btn-tertiary-bg);color:var(--gds-btn-tertiary-bg)}
.gds-iconbtn--tertiary:not(:disabled):hover{color:var(--gds-btn-tertiary-fg);background-color:var(--gds-btn-tertiary-bg)}
.gds-iconbtn--ghost{color:var(--gds-btn-primary-bg)}
.gds-iconbtn--ghost:not(:disabled):hover{color:var(--gds-neptune-dark);background-color:var(--gds-neptune-muted)}
.gds-iconbtn--inverse{border-color:var(--gds-btn-inverse-bg);color:var(--gds-btn-inverse-bg)}
.gds-iconbtn--inverse:not(:disabled):hover{background-color:rgba(255,255,255,.25)}
.gds-iconbtn:not(:disabled):active{border-color:var(--gds-neptune-darker);color:var(--gds-btn-primary-fg);background-color:var(--gds-neptune-darker)}
.gds-iconbtn:disabled{border-color:var(--gds-btn-disabled-bg);color:var(--gds-btn-disabled-fg);background-color:var(--gds-btn-disabled-bg);cursor:not-allowed}
.gds-iconbtn--secondary:disabled,.gds-iconbtn--tertiary:disabled{border-color:var(--gds-btn-disabled-fg);color:var(--gds-btn-disabled-fg);background-color:transparent}
.gds-iconbtn--ghost:disabled{border-color:transparent;color:var(--gds-btn-disabled-fg);background-color:transparent}
.gds-iconbtn--inverse:disabled{border-color:var(--gds-btn-inverse-bg);background-color:transparent;opacity:.3}
/* bare IconButton util — no chrome, tap-size box only */
.gds-bare-iconbtn{display:flex;align-items:center;justify-content:center;width:var(--gds-min-tap-size);height:var(--gds-min-tap-size);padding:0;border:0;color:inherit;font:inherit;background-color:transparent;cursor:pointer}

/* ---------- Link ---------- */
.gds-link{color:var(--gds-link-primary);text-decoration:underline;background-color:transparent;border:0;padding:0;font-family:inherit;cursor:pointer}
.gds-link:hover,.gds-link:focus{color:var(--gds-text-link-hover)}
.gds-link--inverse{color:var(--gds-link-inverse)}
.gds-link--inverse:hover,.gds-link--inverse:focus{color:var(--gds-moonrock)}
.gds-link__inner{display:inline-flex;gap:var(--gds-space-club);align-items:center;vertical-align:text-bottom}
.gds-link__inner>span{text-decoration:underline}

/* ---------- Badge ---------- */
.gds-badge{display:inline-flex;gap:var(--gds-space-lounge);align-items:center;padding-top:1px;padding-bottom:1px;font-size:8px}
.gds-badge--boxed{padding-inline:var(--gds-space-club)}
.gds-badge--bordered{padding-top:0;padding-bottom:0;border:1px solid;border-radius:var(--gds-space-lounge)}
.gds-badge--filled{border-radius:var(--gds-radius-card)}
.gds-badge__label{font-weight:var(--gds-font-weight-semibold);font-size:var(--gds-snowdon-font-size);line-height:var(--gds-snowdon-line-height);letter-spacing:var(--gds-letter-spacing-default);text-transform:uppercase}

/* ---------- Card ---------- */
.gds-card{padding:var(--gds-space-arena) var(--gds-space-amphitheatre);border-radius:var(--gds-radius-card);background-color:var(--gds-base-bg);box-shadow:var(--gds-elevation-level-1)}
.gds-card__title{margin:0;font-weight:var(--gds-font-weight-semibold);font-size:var(--gds-fiji-font-size);line-height:1;letter-spacing:var(--gds-letter-spacing-default)}
.gds-card__body{margin-top:var(--gds-space-arena)}

/* ---------- Spinner / LoadingSpinner ---------- */
.gds-spinner{position:relative;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;color:var(--gds-link-primary)}
.gds-spinner--medium{width:32px;height:32px}
.gds-spinner--large{width:72px;height:72px}
.gds-spinner--secondary{color:var(--gds-text-primary)}
.gds-spinner--inverse{color:var(--gds-text-inverse)}
.gds-spinner::before{position:absolute;display:block;width:100%;height:100%;border:solid calc(100% / 10);border-color:currentColor;border-inline-start-color:rgba(2,77,223,.25);border-radius:var(--gds-radius-circle);animation:gds-spin .75s linear infinite !important;content:""}
.gds-spinner--secondary::before{border-inline-start-color:rgba(18,18,18,.25)}
.gds-spinner--inverse::before{border-inline-start-color:rgba(255,255,255,.25)}
@keyframes gds-spin{to{transform:rotate(360deg)}}
.gds-loading{display:flex;flex-direction:column;align-items:center}
.gds-loading__message{margin:var(--gds-space-auditorium) 0 0;font-weight:var(--gds-font-weight-semibold);font-size:var(--gds-boising-font-size);line-height:var(--gds-boising-line-height)}
.gds-loading__message--inverse{color:var(--gds-text-inverse)}

/* ---------- Skeleton ---------- */
.gds-skeleton{background-color:var(--gds-base-border-midtone);animation:gds-shimmer 2s 900ms ease-in-out infinite}
.gds-skeleton--inverse{background-color:var(--gds-base-bg-alt);opacity:.05;animation:gds-shimmer-inverse 2s 900ms ease-in-out infinite}
@keyframes gds-shimmer{0%,100%{background-color:var(--gds-base-border-midtone)}50%{background-color:var(--gds-base-border-light)}}
@keyframes gds-shimmer-inverse{0%,100%{opacity:.05}50%{opacity:.25}}

/* ---------- Icon (brand SVG as a background image; see components/icons.css) ---------- */
.gds-sticker{display:block}

/* ---------- BrandLogo ---------- */
.gds-brandlogo{display:block;width:100%;height:100%}

/* ---------- Stack / visually hidden ---------- */
.gds-stack>*+*{margin-top:var(--gds-stack-gap,var(--gds-space-auditorium))}
.gds-vh{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;white-space:nowrap;clip-path:inset(50%)}
.gds-unstyled-list{margin:0;padding:0;list-style:none}

/* ---------- Headings ---------- */
.gds-section-heading{margin:0}
.gds-section-heading:not(.gds-section-heading--centered)::before{display:block;width:var(--gds-space-arena);height:var(--gds-space-lounge);margin-bottom:var(--gds-space-club);background-color:currentColor;content:""}
.gds-section-heading--small:not(.gds-section-heading--centered)::before{width:var(--gds-space-amphitheatre)}
@media (min-width:1024px){.gds-section-heading--small:not(.gds-section-heading--centered)::before{width:var(--gds-space-arena)}}
.gds-section-heading--centered{text-align:center}
.gds-title-heading{position:relative;z-index:1;display:inline;margin:0;color:var(--gds-text-inverse);overflow-wrap:break-word;hyphens:auto}
.gds-title-heading::after{position:absolute;bottom:0;inset-inline-start:.7em;z-index:-1;display:block;width:100%;height:.5em;background-color:var(--gds-base-primary);content:""}
.gds-display-heading{position:relative;display:inline-block;margin:0;padding-bottom:.2em;color:var(--gds-text-primary);font-weight:var(--gds-font-weight-black);letter-spacing:var(--gds-display-letter-spacing);font-size:var(--gds-display-font-size-medium);line-height:var(--gds-display-font-size-medium)}
.gds-display-heading--small{font-size:var(--gds-display-font-size-small);line-height:var(--gds-display-font-size-small)}
.gds-display-heading--large{font-size:var(--gds-display-font-size-large);line-height:var(--gds-display-font-size-large)}
.gds-display-heading--inverse{color:var(--gds-text-inverse)}
.gds-display-heading--uppercase{text-transform:uppercase}
.gds-display-heading::after{position:absolute;inset-inline-start:0;bottom:0;width:100%;height:.2em;background:var(--gds-base-primary);content:""}
@media (min-width:1024px){.gds-display-heading{font-size:var(--gds-display-font-size-medium-desktop);line-height:var(--gds-display-font-size-medium-desktop)}.gds-display-heading--small{font-size:var(--gds-display-font-size-small-desktop);line-height:var(--gds-display-font-size-small-desktop)}.gds-display-heading--large{font-size:var(--gds-display-font-size-large-desktop);line-height:var(--gds-display-font-size-large-desktop)}}
