/*
 * WP4 pages (promotional terms, name-your-wallet, sandchain, ai-waitlist, secure-web3-domain,
 * web3-or-extinct): page-specific rules on top of /public-refresh-pr6-fixes.css.
 * Presentation only; colours only from --fn-* tokens.
 */
/* ---------------------------------------------------------------------------------------
 * 9. Responsive visibility the live pages rely on. The capture dropped these two pages'
 *    HubSpot layout <style> block (it also carried a CDN url), so the desktop AND mobile
 *    copies of the hero rendered together. Rules copied verbatim from the live pages.
 * ------------------------------------------------------------------------------------- */
.fn-refreshed-page .dnd_area-row-3-hidden,
.fn-refreshed-page .module_17707385053169-hidden {
  display: block !important;
}
.fn-refreshed-page .module_1770893629093-hidden,
.fn-refreshed-page .module_1770887623437-hidden,
.fn-refreshed-page .widget_1770886641745-hidden,
.fn-refreshed-page .widget_1770893463863-hidden {
  display: none !important;
}
@media (max-width: 767px) {
  .fn-refreshed-page .dnd_area-row-0-hidden,
  .fn-refreshed-page .dnd_area-row-2-hidden,
  .fn-refreshed-page .widget_1770893463863-hidden,
  .fn-refreshed-page .module_17707384744836-hidden {
    display: block !important;
  }
  .fn-refreshed-page .module_1770887623437-hidden,
  .fn-refreshed-page .widget_1770738239652-hidden,
  .fn-refreshed-page .module_17707379373103-hidden {
    display: none !important;
  }
  .fn-refreshed-page .widget_1770886641745-hidden {
    display: flex !important;
  }
}
/* secure-web3-domain shows this module on phones; web3-or-extinct hides it everywhere. */
@media (max-width: 767px) {
  .fn-refreshed-page:has(.module_17707385053169-hidden) .module_1770893629093-hidden {
    display: flex !important;
  }
}
/* Landing heroes (secure-web3-domain, web3-or-extinct): the campaign image the live page
 * shows is kept, as the hero's visual column on wider screens (it is the only copy of that
 * visual in the CMS: the live desktop version painted it from the dropped style block). */
@media (min-width: 768px) {
  .fn-refreshed-page .fn-refresh-hero .dnd-column:has(> .dnd-row .widget_1770886641745-hidden) {
    display: grid !important;
    grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
    grid-template-rows: auto auto auto 1fr auto;
    column-gap: 48px;
    align-items: start;
  }
  .fn-refreshed-page .fn-refresh-hero .dnd-column:has(> .dnd-row .widget_1770886641745-hidden) > .dnd-row {
    grid-column: 1;
  }
  .fn-refreshed-page
    .fn-refresh-hero
    .dnd-column:has(> .dnd-row .widget_1770886641745-hidden)
    > .dnd-row:has(.widget_1770886641745-hidden) {
    grid-column: 2;
    grid-row: 1 / 5;
    align-self: center;
  }
  .fn-refreshed-page
    .fn-refresh-hero
    .dnd-column:has(> .dnd-row .widget_1770886641745-hidden)
    > .dnd-row:has(.fn-search-wrapper) {
    grid-column: 1 / -1;
    margin-top: 32px !important;
  }
  .fn-refreshed-page .fn-refresh-hero .widget_1770886641745-hidden {
    display: flex !important;
    justify-content: center;
  }
}
.fn-refreshed-page .fn-refresh-hero .widget_1770886641745-hidden img {
  width: auto !important;
  max-width: 100% !important;
  max-height: 460px;
  height: auto !important;
  border-radius: 24px;
}
/* A white logo made for the old dark hero is shown dark on the white page. */
.fn-refreshed-page img[alt="Freename-Logo-White"] {
  filter: invert(1);
}
/* Centred landing heroes (sandchain, ai-waitlist): eyebrow sits clear of the image above. */
.fn-refreshed-page .fn-refresh-hero:not(:has(> .fn-hero-art)) .fn-eyebrow {
  margin-top: 40px !important;
}
/* Freename AI waitlist: the form sits in the same 800px column as the bonus banner and the
 * feature grid; the product logo is centred like the rest of the page. */
.fn-refreshed-page .fn-refresh-hero .hs-form-html,
.fn-refreshed-page .fn-refresh-hero .hs-form-html form {
  max-width: 800px;
  margin-left: auto !important;
  margin-right: auto !important;
}
.fn-refreshed-page .fn-refresh-hero .widget-type-linked_image {
  display: flex;
  justify-content: center;
  margin-top: 56px;
}
.fn-refreshed-page .fn-card h3 {
  font-size: 22px !important;
}
/* Phones: no copy below 14px on the WP4 landing pages (stored inline sizes of 10 to 13px). */
@media (max-width: 767px) {
  .fn-refreshed-page #fn-waitlist-banner span,
  .fn-refreshed-page #fn-waitlist-banner p,
  .fn-refreshed-page #fn-waitlist-banner strong,
  .fn-refreshed-page #fn-features p {
    font-size: 14px !important;
  }
}
/* Landing page logo rows (phones): centred like the live page, inside the 24px gutters. */
@media (max-width: 767px) {
  .fn-refreshed-page .fn-refresh-hero .module_1770893629093-hidden,
  .fn-refreshed-page .fn-refresh-hero .widget_1770886641745-hidden {
    justify-content: center !important;
  }
  .fn-refreshed-page .fn-refresh-hero .module_1770893629093-hidden img {
    margin: 0 auto !important;
  }
}
/* Phones: the hotspot's ICANN chip sits under the globe (it overflowed into the next
 * section), and the globe stays inside the 24px gutters. */
@media (max-width: 768px) {
  .fn-refreshed-page .hotspot-container {
    flex-direction: column;
  }
  .fn-refreshed-page .hotspot-container > img {
    max-width: 100% !important;
  }
  .fn-refreshed-page .hotspot-mobile {
    position: static !important;
    display: flex !important;
    justify-content: center;
    width: 100%;
  }
  .fn-refreshed-page .hotspot-content-mobile {
    margin-top: 16px !important;
  }
  /* The phone copy of the landing hero is centred like the logo and image above it. */
  .fn-refreshed-page .fn-refresh-hero .widget_1770893463863-hidden,
  .fn-refreshed-page .fn-refresh-hero .widget_1770893463863-hidden * {
    text-align: center !important;
  }
}
/* Phones: the waitlist feature cards stack in one column inside the page gutters. */
@media (max-width: 767px) {
  .fn-refreshed-page #fn-features {
    padding: 0 !important;
  }
  .fn-refreshed-page #fn-features-grid {
    grid-template-columns: minmax(0, 1fr) !important;
  }
}
/* Card grids align with the text column (the old theme inset them by 16 to 30px). */
.fn-refreshed-page .pwr-adc-main {
  margin-left: 0 !important;
  margin-right: 0 !important;
  max-width: none !important;
}
/* ---------------------------------------------------------------------------------------
 * /sandchain (owner review rB, 24 Sep). Every rule is scoped to the sandchain body
 * (:has(.sand-rotator)) so the other WP4 pages are untouched.
 * ------------------------------------------------------------------------------------- */
/* The banner starts at the hero padding: the waitlist logo spacing above (56px on every
 * linked image in a hero) put 142px of white between the header and this banner. */
.fn-refreshed-page:has(.sand-rotator) .fn-refresh-hero .widget-type-linked_image {
  margin-top: 0 !important;
}
/* Above the theme's 768px phone breakpoint heading, paragraph and Follow line are centred,
 * so is the button (the theme's fn-mobile-align-l left it at the container's left edge). */
@media (min-width: 769px) {
  .fn-refreshed-page:has(.sand-rotator) .pwr-mini-cta--align-c .pwr-cta {
    text-align: center !important;
  }
}
/* Up to 768px (the theme left-aligns pwr--align-c there) follow live: the whole hero block is
 * left aligned, the stored centred Follow line joins it, and the copy uses the same 24px
 * gutter as the banner and the cards. */
@media (max-width: 768px) {
  .fn-refreshed-page:has(.sand-rotator) .fn-refresh-hero .page-center {
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
  .fn-refreshed-page:has(.sand-rotator) .follow-text {
    text-align: left !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
  .fn-refreshed-page:has(.sand-rotator) .pwr-mini-cta .pwr-cta {
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
}
/* "Discover Web3 Domains" opens its own block, clear of the hero's Follow line. */
.fn-refreshed-page:has(.sand-rotator) .fn-refresh-hero .cell_17582773875189-padding {
  margin-top: 48px;
}
/* Its intro text sat on the first card (0px; HubSpot about 25px; visual QA, 9 Oct 2026). A heading
 * block to its content is one heading step in the design (--fn-heading-gap,
 * public-refresh-consistency.css: 40px, 32px on phones). */
.fn-refreshed-page:has(.sand-rotator)
  .fn-refresh-hero
  .cell_17582773875189-padding
  > .dnd-row:has(.pwr-sec-txt)
  + .dnd-row:has(.pwr-bento-grid) {
  margin-top: var(--fn-heading-gap) !important;
}
/* "The Power of Web3 Domains": title on top (the two-row card was vertically centred),
 * the dashboard image whole at the card's content width, then the text. */
/* Specificity above the generic "tall bento card is centred" rule in pr6-fixes. */
.fn-refreshed-page:has(.sand-rotator)
  .pwr-bento-grid
  .pwr-adc__content-wrappers
  > .pwr-adc__content-wrapper.pwr-adc__content-wrapper--ix-0-1-1[data-index]:first-child {
  justify-content: flex-start !important;
}
.fn-refreshed-page:has(.sand-rotator) .pwr-adc__content-wrapper--ix-0-1-1 .pwr-adc-content--title {
  margin-bottom: 0 !important;
}
.fn-refreshed-page:has(.sand-rotator) .pwr-adc__content-wrapper--ix-0-1-1 .pwr-adc-content--image {
  margin: 32px 0 !important;
}
.fn-refreshed-page:has(.sand-rotator) .pwr-adc__content-wrapper--ix-0-1-1 .pwr-adc-content__image-wrapper {
  display: block !important;
  margin-left: 0 !important;
  width: 100% !important;
  max-width: 100% !important;
}
/* Above the generic 240px cap on bento card images: this one is the card's whole visual. */
.fn-refreshed-page:has(.sand-rotator)
  .pwr-bento-grid
  .pwr-adc__content-wrapper--ix-0-1-1
  .pwr-adc-content--image
  .pwr-adc-content__image-wrapper
  img {
  display: block;
  width: 100% !important;
  max-width: 100% !important;
  max-height: none !important;
  height: auto !important;
}
/* The intro paragraphs sat flush under ".sand" and "Discover Web3 Domains". */
.fn-refreshed-page:has(.sand-rotator) .fn-refresh-hero .pwr-sec-txt__content {
  margin-top: 16px !important;
}

/* ---------------------------------------------------------------------------------------
 * Promotional terms: the HubSpot TOC widget is dead in the CMS (no tocbot script, and the
 * page's current cssFiles no longer carry the theme's toc sheets), so its box only said
 * "TABLE OF CONTENTS" and "loading..." above the first clause. Hidden exactly as group 3
 * hides it on the privacy policy (public-refresh-pr6-g3.css). Both strings are allowlisted
 * widget chrome (tests/int/fixtures/legal/allowlist.json); no legal text is inside it.
 * .fn-legal matches only this page among the WP4 pages.
 * ------------------------------------------------------------------------------------- */
.fn-refreshed-page.fn-legal .pwr-toc-menu {
  display: none !important;
}

/* ---------------------------------------------------------------------------------------
 * r3 (24 Sep). OWNER DECISION, overrides mirror-live for one line: /ai-waitlist does not
 * show "The billing descriptor is - UG*Freename41795850294" (it sat alone above the footer).
 * Keyed to the stored module that holds exactly that line (AI_WAITLIST_HIDDEN_LINE in
 * src/lib/public-refresh/pages-b.ts; the text match is pinned by public-refresh-r3 tests).
 * The whole heading-only section goes, so no empty band is left. Stored body unchanged.
 * ------------------------------------------------------------------------------------- */
.fn-refreshed-page .dnd-section:has(#hs_cos_wrapper_widget_1788531898101) {
  display: none !important;
}
