/**
 * Shape and container rhythm.
 *
 * One radius and one spacing scale for a component type. Themes change
 * --radius-sm/md/lg; the roles below follow. A search shell, chip, or
 * avatar may use a different role than a standard button. The same role
 * does not change from page to page.
 *
 * Intentional exceptions:
 * - Homepage "Find my play" stays a pill inside the search shell.
 * - Avatars, status dots, and icon circles stay circular.
 * - Underline tabs stay square.
 * - Homepage editorial composition (tiles, banners) keeps its art radii.
 */

html body :is(.gmap-btn, a.gmap-btn, button.gmap-btn, .gmap-card-btn, .gmap-share-btn, .primary-btn, .secondary-btn, .ghost-btn) {
  border-radius: var(--radius-control);
  min-height: var(--control-height);
}

html body :is(
  .hero-actions .primary,
  .hero-actions .secondary,
  .hero-actions .follow,
  .hero-actions .gmap-btn,
  .hero-actions .gmap-share-btn,
  .gmap-hero-actions .gmap-btn,
  .gmap-hero-actions .gmap-share-btn,
  .gmap-purchase-form .gmap-btn,
  .blackoute-collection-detail .primary,
  .blackoute-collection-detail .secondary,
  .blackoute-collection-detail .follow
) {
  border-radius: var(--radius-control);
}

html body :is(
  input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="hidden"]):not([type="submit"]):not([type="button"]):not([type="image"]),
  select,
  textarea,
  .gmap-dropdown-el__trigger
) {
  border-radius: var(--radius-field);
  min-height: var(--control-height);
}

body textarea {
  min-height: 6.5rem;
}

html body :is(
  .gmap-card,
  .gmap-playbook-card,
  .gmap-collection-card,
  .gmap-creator-card,
  .gmap-creator-directory-card,
  .gmap-sidebar-card,
  .sidebar-card,
  .content-panel,
  .blackoute-account-card,
  .gmap-search-card,
  .gmap-waiting-for-you,
  .gmap-hillman-resume,
  .gmap-facet-filters__form,
  .gmap-gd-side-card,
  .gmap-gd-cta,
  .gmap-gd-why,
  .gmap-goal-tabs
) {
  border-radius: var(--radius-card);
}

html body :is(.gmap-details-modal, .gmap-details-modal__dialog, .blackoute-directory__filters) {
  border-radius: var(--radius-panel);
}

body .gmap-bottom-sheet__panel {
  border-radius: var(--radius-panel) var(--radius-panel) var(--radius-none) var(--radius-none);
}

html body :is(.sidebar-card, .content-panel, .blackoute-account-card) {
  padding: var(--card-pad);
}

html body :is(.gmap-chip, .example-pill, .gmap-example-tabs button, .badge) {
  border-radius: var(--radius-chip);
}

html body :is(.gmap-tabbar button, .blackoute-tabbar button, .gmap-gd-tab, .gmap-prompt-workspace__tab) {
  border-radius: var(--radius-none);
  min-height: 0;
  padding: 0 0 0.9rem;
  background: none;
}

body .gmap-prompt-workspace__tab {
  padding: 0.6rem 0.85rem;
}

html body :is(.gmap-example-tabs button, .example-pill) {
  min-height: 0;
  padding: 0.5rem 0.9rem;
}

/* Compound fields: the shell owns the outer radius. The embedded submit
   uses that same radius. The field itself has no second shape. */
html body :is(
  .gmap-search__bar,
  .gmap-profession-hero__search,
  .gmap-role-hero__search,
  .gmap-goal-hero__search,
  .gmap-collections-hero__search,
  .gmap-creators-hero__search,
  .gmap-roles-search
) {
  display: flex;
  align-items: center;
  gap: var(--control-gap);
  border-radius: var(--radius-pill);
  padding: var(--space-1);
}

html body :is(
  .gmap-search__bar,
  .gmap-profession-hero__search,
  .gmap-role-hero__search,
  .gmap-goal-hero__search,
  .gmap-collections-hero__search,
  .gmap-creators-hero__search,
  .gmap-roles-search
) :is(input, textarea) {
  flex: 1 1 auto;
  min-width: 0;
  border: 0;
  border-radius: var(--radius-none);
  background: transparent;
  box-shadow: none;
}

html body :is(
  .gmap-search__bar,
  .gmap-profession-hero__search,
  .gmap-role-hero__search,
  .gmap-goal-hero__search,
  .gmap-collections-hero__search,
  .gmap-creators-hero__search,
  .gmap-roles-search
) :is(button, .gmap-btn, .gmap-search__submit-btn) {
  flex: 0 0 auto;
  align-self: center;
  height: var(--control-height);
  min-height: var(--control-height);
  border-radius: var(--radius-pill);
  padding-inline: var(--control-pad-x);
}

body .gmap-home-search__submit {
  border-radius: var(--radius-pill);
}

body .gmap-search__layout,
body .gmap-detail-page .gmap-container {
  gap: var(--space-8);
}

html body :is(.blackoute-field, .gmap-facet-filters__field, .iump-form-line, .iump-form-line-register) {
  margin-bottom: var(--stack-gap);
}

body.blackoute-commerce-page :is(
  .woocommerce input.input-text,
  .woocommerce select:not(.select2-hidden-accessible),
  .woocommerce textarea,
  .wc-block-components-text-input input
),
body.blackoute-membership-page :is(
  .ihc-register-form input,
  .iump-form-line input,
  .iump-form-line-register input,
  .iump-form-line select,
  .iump-form-line textarea
) {
  border-radius: var(--radius-field);
  min-height: var(--control-height);
}

body.blackoute-commerce-page :is(
  .woocommerce button.button,
  .woocommerce a.button,
  .wc-block-components-button
),
body.blackoute-membership-page :is(
  .ihc-register-form input[type="submit"],
  .iump-submit-form,
  .ihc-register-form .gmap-btn
) {
  border-radius: var(--radius-control);
  min-height: var(--control-height);
}

/*
 * Clip once. Nested radius + a compositor layer (backface-visibility,
 * filter, resting scale) rasterizes the corner into a fuzzy halo.
 * The host owns the curve. Fill layers stay square. Do not overflow-clip
 * overlay hosts (dropdown wrappers, details-modal roots, purchase cards)
 * or the overlay is trapped inside the rounded box.
 */
html body :is(
  .gmap-card,
  .gmap-panel,
  .gmap-sidebar-card,
  .sidebar-card,
  .content-panel,
  .blackoute-account-card,
  .blackoute-onboarding-card,
  .blackoute-theme-card,
  .blackoute-theme-current,
  .gmap-waiting-for-you,
  .gmap-hillman-resume,
  .gmap-facet-filters__form,
  .gmap-gd-side-card,
  .gmap-gd-cta,
  .gmap-gd-why,
  .gmap-goal-tabs,
  .gmap-details-modal__panel,
  .gmap-details-modal__dialog,
  .gmap-bottom-sheet__panel,
  .blackoute-directory__filters,
  .gmap-search__bar,
  .gmap-profession-hero__search,
  .gmap-role-hero__search,
  .gmap-goal-hero__search,
  .gmap-collections-hero__search,
  .gmap-creators-hero__search,
  .gmap-roles-search,
  .gmap-dropdown-el__trigger,
  .gmap-dropdown-el__menu,
  .gmap-btn,
  a.gmap-btn,
  button.gmap-btn,
  .gmap-card-btn,
  .gmap-share-btn,
  .primary-btn,
  .secondary-btn,
  .ghost-btn,
  .gmap-chip,
  .gmap-collections-chip,
  .example-pill,
  .badge,
  .copy-chip,
  .gmap-ed-save--icon,
  .gmap-details-modal__trigger
) {
  background-clip: padding-box;
}

html body :is(
  .gmap-btn,
  a.gmap-btn,
  button.gmap-btn,
  .gmap-card-btn,
  .gmap-share-btn,
  .primary-btn,
  .secondary-btn,
  .ghost-btn,
  .gmap-chip,
  .gmap-collections-chip,
  .example-pill,
  .badge,
  .copy-chip,
  .gmap-ed-save--icon,
  .gmap-details-modal__trigger,
  .gmap-home-search__submit,
  .gmap-search__submit-btn,
  .gmap-dropdown-el__trigger,
  .gmap-search__bar,
  .gmap-profession-hero__search,
  .gmap-role-hero__search,
  .gmap-goal-hero__search,
  .gmap-collections-hero__search,
  .gmap-creators-hero__search,
  .gmap-roles-search,
  input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="hidden"]):not([type="file"]):not([type="image"]):not([type="submit"]):not([type="button"])
) {
  overflow: clip;
  isolation: isolate;
}

html body :is(
  .gmap-btn,
  a.gmap-btn,
  button.gmap-btn,
  .gmap-card-btn,
  .primary-btn,
  .secondary-btn,
  .ghost-btn
)::before,
html body :is(
  .gmap-btn,
  a.gmap-btn,
  button.gmap-btn,
  .gmap-card-btn,
  .primary-btn,
  .secondary-btn,
  .ghost-btn
)::after {
  border-radius: 0;
}

html body :is(
  .gmap-photo-clip,
  .gmap-playbook-card,
  .gmap-collection-card,
  .gmap-creator-card,
  .gmap-ed-card,
  .gmap-goal-tile,
  .gmap-community-card,
  .gmap-la-mosaic-card,
  .gmap-home-tile,
  .gmap-home-life-area,
  .gmap-home-banner,
  .gmap-prof-dir-card,
  .gmap-prof-dir-field-card,
  .gmap-prof-dir-rising-card,
  .gmap-creator-directory-card,
  .gmap-profession-role-card,
  .gmap-search-card,
  .gmap-search-hit,
  .gmap-communities-hero-featured__media,
  .gmap-communities-host-card,
  .gmap-type-tile,
  .gmap-stacked-cards__card,
  .gmap-rec-item,
  .gmap-ad-card,
  .gmap-ad-card__content,
  .blackoute-theme-card,
  .blackoute-theme-preview,
  .hero-art,
  .related-card,
  .collection-card,
  .pb-thumb,
  .gmap-dropdown-el__menu,
  .gmap-details-modal__panel,
  .gmap-photo-surface
) {
  overflow: clip;
  isolation: isolate;
  background-clip: padding-box;
}

html body :is(
  .gmap-photo-clip,
  .gmap-playbook-card,
  .gmap-collection-card,
  .gmap-creator-card,
  .gmap-ed-card,
  .gmap-goal-tile,
  .gmap-community-card,
  .gmap-la-mosaic-card,
  .gmap-home-tile,
  .gmap-home-life-area,
  .gmap-home-banner,
  .gmap-prof-dir-card,
  .gmap-prof-dir-field-card,
  .gmap-prof-dir-rising-card,
  .gmap-creator-directory-card,
  .gmap-profession-role-card,
  .gmap-search-card,
  .gmap-search-hit,
  .gmap-communities-hero-featured__media,
  .gmap-communities-host-card,
  .gmap-type-tile,
  .gmap-stacked-cards__card,
  .gmap-rec-item,
  .gmap-ad-card,
  .blackoute-theme-card,
  .hero-art,
  .related-card,
  .collection-card,
  .gmap-photo-surface
) :is(
  [class$="__media"]:not([class*="__media-"]),
  [class$="__cover"],
  [class$="__photo"],
  [class$="__thumb"],
  [class$="__image"],
  [class$="__art"],
  .gmap-communities-hero-featured__mosaic-tile,
  img,
  picture,
  video
) {
  transform: none;
  border-radius: 0 !important;
}

html body :is(
  .gmap-photo-clip,
  .gmap-playbook-card,
  .gmap-collection-card,
  .gmap-creator-card,
  .gmap-ed-card,
  .gmap-goal-tile,
  .gmap-community-card,
  .gmap-la-mosaic-card,
  .gmap-home-tile,
  .gmap-home-life-area,
  .gmap-home-banner,
  .gmap-prof-dir-card,
  .gmap-prof-dir-field-card,
  .gmap-prof-dir-rising-card,
  .gmap-creator-directory-card,
  .gmap-profession-role-card,
  .gmap-search-card,
  .gmap-search-hit,
  .gmap-communities-hero-featured__media,
  .gmap-communities-host-card,
  .gmap-type-tile,
  .gmap-stacked-cards__card,
  .gmap-rec-item,
  .gmap-ad-card,
  .blackoute-theme-card,
  .hero-art,
  .related-card,
  .collection-card,
  .gmap-photo-surface
) :is(
  [class$="__media"]:not([class*="__media-"]),
  [class$="__cover"],
  [class$="__photo"],
  [class$="__thumb"],
  [class$="__image"],
  [class$="__art"]
)::before,
html body :is(
  .gmap-photo-clip,
  .gmap-playbook-card,
  .gmap-collection-card,
  .gmap-creator-card,
  .gmap-ed-card,
  .gmap-goal-tile,
  .gmap-community-card,
  .gmap-la-mosaic-card,
  .gmap-home-tile,
  .gmap-home-life-area,
  .gmap-home-banner,
  .gmap-prof-dir-card,
  .gmap-prof-dir-field-card,
  .gmap-prof-dir-rising-card,
  .gmap-creator-directory-card,
  .gmap-profession-role-card,
  .gmap-search-card,
  .gmap-search-hit,
  .gmap-communities-hero-featured__media,
  .gmap-communities-host-card,
  .gmap-type-tile,
  .gmap-stacked-cards__card,
  .gmap-rec-item,
  .gmap-ad-card,
  .blackoute-theme-card,
  .hero-art,
  .related-card,
  .collection-card,
  .gmap-photo-surface
) :is(
  [class$="__media"]:not([class*="__media-"]),
  [class$="__cover"],
  [class$="__photo"],
  [class$="__thumb"],
  [class$="__image"],
  [class$="__art"]
)::after {
  border-radius: 0 !important;
}
