/* ============================================================================
 * INM SITE BASE - the rules every designed page carries identically.
 *
 * Written against `.rsg-site`, a class added to every page wrapper alongside its
 * own `.rsg-inm-<page>` class. Both are one class deep, so a page sheet's own rule
 * still wins any tie by loading later - which is why nothing here changed when it
 * moved out of the page sheets.
 *
 * ONLY 7 RULES, AND THAT IS THE HONEST ANSWER. Measured across the 7 page sheets:
 * 2,609 of 3,019 distinct rules live in exactly ONE sheet, and of the 36 that all
 * seven share, only these 7 can be hoisted without changing the cascade. The rest
 * are overridden by an earlier equal-or-higher-specificity rule in at least one
 * sheet, so moving them earlier would flip which declaration wins.
 * Two hard rules if you add to this file:
 *   1. the rule must be present and IDENTICAL in every page sheet - hoisting one
 *      that only some sheets carry GIVES it to the pages that never had it.
 *   2. no earlier rule in any sheet may share a property with it at equal or
 *      higher specificity.
 * The real saving for item 2 is not here - it is type-service.css, where the NEXT
 * service page costs 0 KB of CSS instead of 170 KB.
 * ============================================================================ */
.rsg-site *,.rsg-site *::before,.rsg-site *::after{box-sizing:border-box}
.rsg-site img{max-width:100%;display:block}
.rsg-site .rsg-wrap{max-width:var(--container);margin:0 auto;padding:0 28px}
.rsg-site .rsg-sec--dark .rsg-eyebrow{color:var(--eyebrow-dark)}
.rsg-site .rsg-rv.is-in .rsg-eyebrow::before{transform:scaleX(1)}
.rsg-site .rsg-center{text-align:center}
.rsg-site .rsg-sec--dark:not(.rsg-hero) h2 span,.rsg-site .rsg-sec--dark:not(.rsg-hero) .rsg-h2 span{color:var(--gold-bright)}


/* ============================================================================
 * GHL SURVEY EMBED - ONE CARD   (owner 2026-09-11 pm: "just one box and no text or
 * any extra thing ... premium vibe")
 *
 * The survey at link.rsgonzales.com/widget/survey/... paints its OWN bordered white
 * box inside a transparent document, so any host card that also painted a white box
 * gave a box-inside-a-box. Insets measured with ghl-forms/_probe-trim.mjs - identical
 * at 310/352/384/392/430/496px wide AND in both the clean and the validation state:
 *
 *      20px | 48px above the box | the box | 50px nav row ("1 of 3 ->") | 90px tail | 20px
 *
 * So the host card gives up its padding and its own text, and the iframe is pulled by
 * exactly those insets: the survey's box edge becomes the card edge. One box, nothing else.
 * The card keeps its white ground, 16px radius and shadow - that is where the premium
 * reads from, and the survey's 1px #EAECF0 edge lands on the card edge where the radius
 * clips it.
 *
 * !important on purpose: this replaces per-card padding/typography in SEVEN page sheets
 * that all load after this file. Scoped to :has(> [data-rsg-ghl]), so only a card that
 * actually holds an embed is touched.
 *
 * WARNING - the 50px nav row is the ONLY control that advances the survey. Never trim
 * more than 90px off the bottom. If the survey is edited in GHL, re-measure first:
 *     node ghl-forms/_probe-trim.mjs
 * ============================================================================ */
:is(.svc-hform,.hp-emg-form,.ct-form,.rsg-emerg-form,.rsg-tk-form,.rsg-bk-panel):has(> [data-rsg-ghl]){
  padding:0 !important;
}
/* the card holds the embed and nothing else (title, lede, note, mascot). The popup's close
   button is the one exception - it is the only way out of the dialog. */
:is(.svc-hform,.hp-emg-form,.ct-form,.rsg-emerg-form,.rsg-tk-form,.rsg-bk-panel):has(> [data-rsg-ghl]) > *:not([data-rsg-ghl]):not(.rsg-bk-close){
  display:none !important;
}
[data-rsg-ghl]{
  --ghl-top:48px;   /* transparent space above the survey's own box */
  --ghl-side:20px;  /* its left/right gutter */
  --ghl-tail:90px;  /* dead space BELOW the nav row - the only safe bottom trim */
  display:block !important;
  margin:0 !important;
  padding:0 !important;
  overflow:hidden;           /* clips the pulled-away insets */
  border-radius:inherit;     /* so the survey's square corners take the card's radius */
  background:none !important;
  box-shadow:none !important;
  border:0 !important;
}
[data-rsg-ghl] > iframe{
  display:block;
  border:0;
  min-height:512px;          /* the survey's own height - reserves the box before it loads (no CLS) */
  width:calc(100% + (var(--ghl-side) * 2)) !important;
  margin:calc(var(--ghl-top) * -1) calc(var(--ghl-side) * -1) calc(var(--ghl-tail) * -1) !important;
}

/* --- two things the zero-padding card broke, both measured with ghl-forms/_probe-hit.mjs ---
 * 1. POPUP CLOSE BUTTON. form_embed.js wraps the iframe in its own positioned wrapper, which then
 *    painted over the panel's absolutely-positioned close button (elementFromPoint at the button's
 *    centre returned the IFRAME). Esc and the scrim still closed the dialog, but the X was dead.
 * 2. SERVICE-PAGE HERO MASCOT. The credential plate's mascot (z-index 4) hangs 71px up into the
 *    card's bottom-right corner - which used to be blank card, and is now exactly where the survey
 *    puts its "next" arrow, so the arrow could not be clicked at 1440 (mobile was never affected,
 *    the mascot is hidden there). The card is 379px now instead of 671px, so the straddle the owner
 *    asked for on 2026-09-10 no longer lands on empty card. Hidden only on a hero that holds an
 *    embed - the homepage plate mascot and every other mascot are untouched.
 *    To bring it back, delete this rule and give the arrow clearance some other way. */
:is(.svc-hform,.hp-emg-form,.ct-form,.rsg-emerg-form,.rsg-tk-form,.rsg-bk-panel):has(> [data-rsg-ghl]) > .rsg-bk-close{
  z-index:5 !important;
}
.rsg-inm-x:has(.svc-hform > [data-rsg-ghl]) .hp-plate-mascot{
  display:none !important;
}
