/* ============================================================================
   PLANNED GIVING — TEMPLATE custom.css
   Multi-client design system (loads AFTER the vendor base CSS).
   Current client: configure brand tokens in section 1 below.
   ----------------------------------------------------------------------------
   HOW TO RE-BRAND FOR A NEW CLIENT
   You only edit ONE block: "1. CLIENT CONFIG" below.
     • Colors   -> set --brand-* to the client's palette.
     • Fonts    -> set --font-heading / --font-body / --font-button.
     • Sizing   -> set --font-base + the fluid scale knobs (--fluid-min/max).
   Everything else (the whole file) reads from these variables, so changing a
   handful of values restyles the entire site. Type sizes scale fluidly with the
   viewport via clamp(), so you almost never need per-breakpoint font overrides.

   FILE MAP
     1.  CLIENT CONFIG ............ edit-me block (colors, fonts, sizing)
     2.  DERIVED TOKENS .......... palette, spacing, radius, shadow, z, FLUID TYPE
     3.  Reset & base
     4.  Typography
     5.  Layout
     6.  Header / logo
     7.  Side navigation  (+ working CSS-only mobile menu)
     8.  Buttons
     9.  Cards
     10. Carousel
     11. Gift-planning sections (ways of giving, society, tip, plan-a-gift)
     12. Interactive content (how-it-works, benefits, related topics)
     13. Forms & calculators
     14. Tables
     15. Gift diagram / video popup
     16. Next steps
     17. Bequest form link
     18. Alerts
     19. FAQ
     20. Contact & footer
     21. Utilities
     22. Sidebar callouts (#vgitgfy, #vggep)
     23. Plan-a-Gift modal
     24. Gift-plan card grids
     25. Compare gift plans
     26. Homepage redesigned sections
     27. Accessibility, reduced motion, print
     28. Responsive fine-tuning
   ============================================================================ */


/* ============================================================================
   1. CLIENT CONFIG  —  *** THE ONLY BLOCK YOU EDIT PER CLIENT ***
   ============================================================================ */
:root {
  /* -- 1a. Brand colors ---------------------------------------------------- */
  --brand-primary:        #8b2d2f;   /* primary brand color (site headings/brand) */
  --brand-primary-dark:   #6f2425;   /* hover/active of primary               */
  --brand-primary-light:  #d8a9aa;   /* tints, soft fills                     */
  --brand-secondary:      #a02420;   /* brick-red accent (links/secondary)    */
  --brand-secondary-dark: #7f1c19;   /* hover/active of secondary             */

  /* On-brand text colors for filled buttons/areas.
     Set to the color that is readable ON each brand color above. */
  --on-primary:   #ffffff;           /* white text on the red primary fill    */
  --on-secondary: #ffffff;           /* white text on the secondary fill      */

  /* -- 1b. Fonts (families) ------------------------------------------------ */
  /* Load the actual font files in the page <head> (Typekit/Google/etc.).
     Here you only name them. Keep web-safe fallbacks last. */
  --font-heading: "Open Sans", Arial, Helvetica, sans-serif;
  --font-body:    "Lora", Georgia, "Times New Roman", serif;
  --font-button:  "Open Sans", Arial, Helvetica, sans-serif;

  /* -- 1c. Type sizing knobs ---------------------------------------------- */
  /* Base body size (everything scales relative to this). */
  --font-base: 1.0625rem;            /* ~17px body text                       */

  /* Fluid scaling window: text grows between these viewport widths.
     Below --fluid-min-vw it stays at the small size; above --fluid-max-vw it
     stays at the large size. Tune once; the whole scale follows. */
  --fluid-min-vw: 22rem;             /* 352px  */
  --fluid-max-vw: 80rem;             /* 1280px */

  /* Heading weight + letter-spacing (clients with display fonts often want
     400 here; text-heavy serif/sans clients want 600-700). */
  --heading-weight: 700;
  --heading-tracking: -0.02em;
  --heading-line: 1.2;

  /* -- 1d. Layout knobs ---------------------------------------------------- */
  --container-max: 1400px;   /* overall content width cap (centered) */
  --sidebar-width: 280px;

  /* -- 1e. Copy panels ----------------------------------------------------
     Surfaces behind the body sections on article/gift pages (How it works,
     Benefits, Next steps, Related topics, etc.). Default is FLAT — copy sits
     directly on the page, which most nonprofits prefer. To give a client the
     old boxed look, just set these four:
        --panel-bg:    #fff;
        --panel-border: 1px solid var(--border-light);
        --panel-shadow: var(--shadow-sm);
        --panel-pad:    var(--space-8);
     -------------------------------------------------------------------- */
  --panel-bg:     transparent;
  --panel-border: 0;
  --panel-shadow: none;
  --panel-pad:    0;
  --panel-radius: var(--radius-lg);

  /* Hairline used to separate flat list rows. */
  --rule: 1px solid var(--border-light);
}


/* ============================================================================
   2. DERIVED TOKENS  —  you normally don't touch these
   ============================================================================ */
:root {
  /* -- Neutral palette -- */
  --slate-50:#f8fafc;  --slate-100:#f1f5f9; --slate-200:#e2e8f0; --slate-300:#cbd5e1;
  --slate-400:#94a3b8; --slate-500:#64748b; --slate-600:#475569; --slate-700:#334155;
  --slate-800:#1e293b; --slate-900:#0f172a;

  --blue-50:#eff6ff;  --blue-100:#dbeafe; --blue-200:#bfdbfe;
  --blue-500:#3b82f6; --blue-600:#2563eb; --blue-700:#1d4ed8;
  --green-50:#f0fdf4; --green-100:#dcfce7; --green-200:#bbf7d0;
  --green-500:#22c55e; --green-600:#16a34a;
  --amber-50:#fffbeb; --amber-100:#fef3c7; --amber-200:#fde68a; --amber-300:#fcd34d;
  --amber-400:#fbbf24; --amber-500:#f59e0b; --amber-600:#d97706;
  --red-50:#fef2f2;   --red-100:#fee2e2;  --red-200:#fecaca;
  --red-500:#ef4444;  --red-600:#dc2626;

  /* -- Semantic surfaces & text -- */
  --bg-primary:#ffffff; --bg-secondary:#f8fafc; --bg-tertiary:#f1f5f9;
  --bg-elevated:#ffffff; --bg-subtle:#f8fafc; --bg-muted:#e2e8f0;
  --text-primary:#0f172a; --text-secondary:#475569; --text-tertiary:#64748b;
  --text-inverse:#ffffff; --text-muted:#94a3b8;
  --border-light:#e2e8f0; --border-default:#cbd5e1; --border-strong:#94a3b8;

  /* -- Functional -- */
  --success:var(--green-600); --warning:var(--amber-600);
  --error:var(--red-600);     --info:var(--blue-600);
  --success-bg:var(--green-50); --warning-bg:var(--amber-50);
  --error-bg:var(--red-50);     --info-bg:var(--blue-50);

  /* -- Shadows -- */
  --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05);
  --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
  --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
  --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
  --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
  --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);
  --shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);

  /* -- FLUID TYPE SCALE ---------------------------------------------------
     Each step is clamp(min, fluid, max). The fluid term is built from the
     config window (--fluid-min-vw/--fluid-max-vw) so all sizes grow together
     and stay readable on phones without manual @media overrides.
     ----------------------------------------------------------------------- */
  --fluid-range: calc(var(--fluid-max-vw) - var(--fluid-min-vw));

  --text-xs:   clamp(0.75rem,  calc(0.72rem + 0.15vw), 0.8125rem);
  --text-sm:   clamp(0.8125rem, calc(0.79rem + 0.18vw), 0.9375rem);
  --text-base: clamp(0.9375rem, calc(0.89rem + 0.30vw), var(--font-base));
  --text-lg:   clamp(1.0625rem, calc(0.99rem + 0.40vw), 1.1875rem);
  --text-xl:   clamp(1.1875rem, calc(1.08rem + 0.55vw), 1.375rem);
  --text-2xl:  clamp(1.375rem,  calc(1.20rem + 0.85vw), 1.75rem);
  --text-3xl:  clamp(1.875rem,  calc(1.55rem + 1.00vw), 2.25rem);  /* h2 size cap */
  --text-4xl:  clamp(2rem,      calc(1.50rem + 1.60vw), 2.5rem);   /* h1 size cap */
  --text-5xl:  clamp(2.25rem,   calc(1.65rem + 3.00vw), 3.5rem);
  --text-6xl:  clamp(2.75rem,   calc(1.95rem + 4.00vw), 4.5rem);

  /* -- Spacing -- */
  --space-px:1px; --space-0:0;
  --space-1:0.25rem; --space-2:0.5rem; --space-3:0.75rem; --space-4:1rem;
  --space-5:1.25rem; --space-6:1.5rem; --space-7:1.75rem; --space-8:2rem;
  --space-9:2.25rem; --space-10:2.5rem; --space-11:2.75rem; --space-12:3rem;
  --space-14:3.5rem; --space-16:4rem; --space-20:5rem; --space-24:6rem;
  --space-28:7rem; --space-32:8rem;

  /* -- Radius -- */
  --radius-none:0; --radius-sm:0.125rem; --radius-md:0.375rem; --radius-lg:0.5rem;
  --radius-xl:0.75rem; --radius-2xl:1rem; --radius-3xl:1.5rem; --radius-full:9999px;

  /* -- Layout -- */
  --container-lg:1024px; --container-md:768px; --container-sm:640px;
  --sidebar-width-sm:240px;

  /* -- Easing -- */
  --ease-linear:cubic-bezier(0,0,1,1);
  --ease-in:cubic-bezier(0.4,0,1,1);
  --ease-out:cubic-bezier(0,0,0.2,1);
  --ease-in-out:cubic-bezier(0.4,0,0.2,1);

  /* -- Z-index -- */
  --z-0:0; --z-10:10; --z-20:20; --z-30:30; --z-40:40; --z-50:50;
  --z-dropdown:1000; --z-sticky:1100; --z-overlay:1200; --z-modal:1300;
  --z-popover:1400; --z-tooltip:1500;

  /* -- Back-compat aliases: older rules referenced --uwci-* directly.
        They now point at the brand tokens so there is ONE source of truth. -- */
  --uwci-black:#000000; --uwci-white:#ffffff;
  --uwci-gold:var(--brand-primary);
  --uwci-red:var(--brand-secondary);
  --uwci-red-dark:var(--brand-secondary-dark);
  --uwci-text:#000000; --uwci-muted:#3f4d5f; --uwci-border:rgba(0,0,0,0.18);
  --uwci-font-body:var(--font-body);
  --uwci-font-button:var(--font-button);
}


/* ============================================================================
   3. RESET & BASE
   ============================================================================ */
*, *::before, *::after { box-sizing:border-box; margin:0; padding:0; }

html {
  font-size:16px;
  -webkit-text-size-adjust:100%;
  scroll-behavior:smooth;
}

/* Apply our fonts to the Planned Giving content only, so the client's own
   header/footer chrome keeps its native typography. */
.pg-content-wrapper,
.pg-body,
#vgbody {
  font-family:var(--font-body);
  font-size:var(--text-base);
  line-height:1.7;
  color:var(--text-primary);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
}

img { max-width:100%; height:auto; image-rendering:-webkit-optimize-contrast; }


/* ============================================================================
   4. TYPOGRAPHY  (scoped to PG content)
   ============================================================================ */
.pg-content-wrapper h1, .pg-content-wrapper h2, .pg-content-wrapper h3,
.pg-content-wrapper h4, .pg-content-wrapper h5, .pg-content-wrapper h6,
.pg-page-title, .pg-section-title {
  /* Type family, weight, size, color inherit from the CLIENT THEME's heading
     styles; we only set spacing/line-height for consistent layout. */
  line-height:var(--heading-line);
  margin:0 0 var(--space-4);
}

.pg-content-wrapper h1, .pg-page-title { margin-bottom:var(--space-6); }  /* size/color from client theme */

.pg-content-wrapper p {
  margin-bottom:var(--space-4);
  color:var(--text-secondary);
  line-height:1.7;
}
.pg-lede {
  font-size:var(--text-lg); line-height:1.8;
  color:var(--text-secondary); font-weight:400;
  margin-bottom:var(--space-8);
}
.pg-content-wrapper a {
  color:var(--brand-secondary);
  text-decoration:none;
  transition:color 200ms var(--ease-in-out);
}
.pg-content-wrapper a:hover { color:var(--brand-secondary-dark); text-decoration:underline; }
.pg-content-wrapper strong, .pg-content-wrapper b { font-weight:700; color:var(--text-primary); }
.pg-content-wrapper small { font-size:var(--text-sm); color:var(--text-tertiary); }


/* ============================================================================
   5. LAYOUT
   ============================================================================ */
.pg-container {
  width:100%; max-width:var(--container-max);
  margin:0 auto; padding:0 var(--space-6);
}
.pg-container-sm { max-width:var(--container-sm); }
.pg-container-md { max-width:var(--container-md); }
.pg-container-lg { max-width:var(--container-lg); }

.pg-section    { padding:var(--space-16) 0; }
.pg-section-sm { padding:var(--space-12) 0; }
.pg-section-lg { padding:var(--space-20) 0; }

.pg-columns { display:grid; gap:var(--space-8); align-items:start; }
@media (min-width:1024px) {
  .pg-columns { grid-template-columns:var(--sidebar-width) 1fr; }
}


/* ============================================================================
   6. HEADER / LOGO  (PG include only; client chrome is untouched)
   ============================================================================ */
.pg-header {
  background:rgba(255,255,255,0.95);
  border-bottom:1px solid var(--border-light);
  top:0; z-index:var(--z-sticky);
  backdrop-filter:blur(8px) saturate(180%);
}
.pg-header .pg-container { padding-top:var(--space-4); padding-bottom:var(--space-4); }
.pg-logo { max-height:56px; width:auto; filter:drop-shadow(0 2px 4px rgba(0,0,0,0.1)); }
.pg-logo-link { display:inline-block; transition:transform 200ms var(--ease-out); }
.pg-logo-link:hover { transform:scale(1.05); text-decoration:none; }


/* ============================================================================
   7. SIDE NAVIGATION  (single consolidated system)
   - Vendor markup: ul.pg-side-nav > li > ul > li(.pg-has-sub-nav)
     > a + span.pg-has-icon(svg) + ul(submenu)
   - Submenu open/close adds .pg-sub-nav-open (handled by vendor scripts.js).
   - Arrow = the vendor SVG icon, rotated 90deg when open.
   - Mobile menu = CSS-only (see 7c). Overrides target vendor base.css so
     !important is intentional here.
   ============================================================================ */

/* -- 7a. Container & links -- */
.pg-side-nav,
.pg-side-nav ul { list-style:none !important; margin:0 !important; padding:0 !important; }
.pg-side-nav li { position:relative; box-sizing:border-box; list-style:none !important; margin:0 !important; padding:0 !important; }
.pg-side-nav li::before,
.pg-side-nav li::after,
.pg-side-nav li::marker { content:none !important; display:none !important; }

.pg-side-nav {
  --nav-accent:      var(--brand-primary);
  --nav-accent-2:    var(--brand-secondary);
  --nav-text:        #000;
  --nav-muted:       #303030;
  --nav-border:      rgba(0,0,0,0.18);
  --nav-hover:       color-mix(in srgb, var(--brand-primary) 18%, transparent);
  background:#fff !important;
  border:1px solid var(--nav-border) !important;
  border-radius:var(--radius-lg) !important;
  box-shadow:var(--shadow-sm) !important;
  overflow:hidden !important;
  padding:var(--space-2) !important;
  font-family:var(--font-body) !important;
}
.pg-side-nav > li > ul { margin:0 !important; padding:0 !important; }
.pg-side-nav > li > ul > li + li { margin-top:2px !important; }

.pg-side-nav a {
  display:block !important; width:100%;
  border-radius:var(--radius-md) !important;
  color:var(--nav-text) !important;
  font-size:var(--text-sm) !important; line-height:1.35 !important;
  text-decoration:none !important;
  transition:background-color 160ms var(--ease-out), color 160ms var(--ease-out), box-shadow 160ms var(--ease-out) !important;
}
.pg-side-nav a::before { display:none !important; }
.pg-side-nav > li > ul > li > a,
.pg-side-nav > li > ul > li.pg-has-sub-nav > a { padding:10px 38px 10px 12px !important; font-weight:700 !important; }
.pg-side-nav a:hover,
.pg-side-nav a:focus { background:var(--nav-hover) !important; color:#000 !important; text-decoration:none !important; }
.pg-side-nav a:focus-visible { outline:none !important; box-shadow:0 0 0 3px color-mix(in srgb, var(--brand-primary) 45%, transparent) !important; }

/* current page */
.pg-side-nav > li > ul > li.pg-current > a,
.pg-side-nav ul ul .pg-current > a { background:var(--brand-primary) !important; color:var(--on-primary) !important; }
/* Current item sits on the red fill -> its dropdown arrow uses on-primary too. */
.pg-side-nav .pg-current > .pg-has-icon { color:var(--on-primary) !important; }

/* nested submenus */
.pg-side-nav ul ul {
  margin:4px 0 8px 12px !important; padding-left:12px !important;
  border-left:2px solid var(--nav-border) !important; display:none;
}
.pg-side-nav .pg-sub-nav-open > ul { display:block; animation:pgSlideDown 200ms var(--ease-out); }
.pg-side-nav ul ul a { padding:7px 10px !important; color:var(--nav-muted) !important; font-size:var(--text-sm) !important; font-weight:500 !important; }
.pg-side-nav ul ul ul { margin-left:8px !important; padding-left:10px !important; }
.pg-side-nav ul:empty { display:none !important; }

@keyframes pgSlideDown { from { opacity:0; max-height:0; } to { opacity:1; max-height:600px; } }

/* -- 7b. Submenu arrow = vendor SVG icon, rotated when open -- */
.pg-side-nav .pg-has-sub-nav > a { padding-right:46px !important; }
.pg-side-nav .pg-has-sub-nav > .pg-has-icon {
  position:absolute !important; top:0 !important; right:8px !important; left:auto !important; bottom:0 !important;
  z-index:3 !important; display:flex !important; align-items:center !important; justify-content:center !important;
  width:36px !important; min-width:36px !important; height:auto !important; min-height:0 !important;
  padding:0 !important; margin:0 !important; color:#000 !important; cursor:pointer !important; pointer-events:auto !important;
}
.pg-side-nav .pg-has-sub-nav > .pg-has-icon::before,
.pg-side-nav .pg-has-sub-nav > .pg-has-icon::after { content:none !important; display:none !important; }
.pg-side-nav .pg-has-sub-nav > .pg-has-icon svg {
  position:static !important; top:auto !important; bottom:auto !important;
  display:block !important; width:18px !important; height:18px !important; flex:0 0 18px !important;
  fill:currentColor !important; transform:rotate(0deg) !important; transform-origin:50% 50% !important;
  transition:transform 160ms var(--ease-out), color 160ms var(--ease-out) !important;
}
.pg-side-nav .pg-has-sub-nav:hover > .pg-has-icon,
.pg-side-nav .pg-has-sub-nav > .pg-has-icon:hover { color:var(--brand-secondary) !important; }
.pg-side-nav .pg-sub-nav-open > .pg-has-icon svg,
.pg-side-nav .pg-current.pg-sub-nav-open > .pg-has-icon svg { transform:rotate(90deg) !important; }
.pg-side-nav ul ul .pg-has-sub-nav > a { padding-right:40px !important; }
.pg-side-nav ul ul .pg-has-sub-nav > .pg-has-icon { right:4px !important; width:32px !important; min-width:32px !important; height:auto !important; min-height:0 !important; }
.pg-side-nav ul ul .pg-has-sub-nav > .pg-has-icon svg { width:15px !important; height:15px !important; flex-basis:15px !important; }
/* Open parents also contain their expanded submenu inside the same <li>, so a
   full-height icon would drop the arrow into the middle of the dropdown. Cap the
   icon to the parent ROW height so the arrow stays on the parent's own line. */
.pg-side-nav .pg-sub-nav-open > .pg-has-icon { bottom:auto !important; height:40px !important; }
.pg-side-nav ul ul .pg-sub-nav-open > .pg-has-icon { height:34px !important; }

/* -- 7c. MOBILE MENU --------------------------------------------------------
   The vendor nav already ships a "Menu" toggle button INSIDE the nav:
       <ul class="pg-side-nav">
         <li>
           <button id="pg-menu-toggle" ...>Menu</button>   <-- toggle
           <ul> ...all the nav items... </ul>              <-- the menu
         </li>
       </ul>
   IMPORTANT — open state is the class `.pg-mobile-nav-open` on <body>.
   This is the SAME class the vendor base CSS already uses, so one script drives
   both. The script (pg-menu.js / template) toggles that class on click. A
   <button> can't toggle anything with CSS alone, so the script is required;
   without it the menu stays collapsed and the button does nothing.
     • Desktop (>=1025px): hide the Menu button, always show the items.
     • Mobile (<=1024px): show the Menu bar; the items (the button's next-
       sibling <ul>) collapse via max-height and expand when body has
       .pg-mobile-nav-open. */

/* Desktop: the Menu button is not needed. */
#pg-menu-toggle { display:none; }

@media (max-width:1024px) {
  /* Render the vendor toggle as a branded Menu bar (override the vendor's
     off-screen / plain-grey styling and its 768px breakpoint). */
  #pg-menu-toggle {
    position:static !important; left:auto !important; top:auto !important;
    width:100% !important; height:auto !important; overflow:visible !important; clip:auto !important;
    display:flex !important; align-items:center; gap:0.55rem;
    padding:13px 16px !important; margin:0 0 var(--space-2) !important; cursor:pointer; text-align:left;
    background:var(--brand-primary) !important; color:var(--on-primary) !important;
    border:1px solid var(--brand-primary) !important; border-radius:var(--radius-md) !important;
    font-family:var(--font-button); font-size:var(--text-lg); font-weight:400; letter-spacing:0.02em;
    -webkit-appearance:none; appearance:none;
  }
  #pg-menu-toggle::before { content:"\2630"; font-size:1.15em; line-height:1; }          /* ☰ */
  body.pg-mobile-nav-open #pg-menu-toggle::before { content:"\2715"; }                    /* ✕ */
  #pg-menu-toggle:focus-visible { outline:3px solid var(--brand-secondary); outline-offset:2px; }

  /* Collapse the items list (the button's next-sibling <ul>); open it when
     <body> has .pg-mobile-nav-open. max-height animates and cooperates with
     the vendor's own collapse rule. */
  #pg-menu-toggle + ul {
    overflow:hidden !important; max-height:0 !important;
    transition:max-height 280ms var(--ease-out);
  }
  body.pg-mobile-nav-open #pg-menu-toggle + ul { max-height:2200px !important; }

  .pg-side-nav { margin-bottom:var(--space-6) !important; position:static !important; }
}


/* ============================================================================
   8. BUTTONS
   ============================================================================ */
.pg-button {
  display:inline-flex; align-items:center; justify-content:center;
  padding:var(--space-3) var(--space-6);
  background:var(--brand-primary); color:var(--on-primary);
  border:2px solid var(--brand-primary); border-radius:var(--radius-full);
  font-family:var(--font-button); font-weight:600; font-size:var(--text-sm);
  letter-spacing:0.025em; cursor:pointer; text-decoration:none;
  position:relative; overflow:hidden;
  transition:background-color 250ms var(--ease-out), color 250ms var(--ease-out),
             border-color 250ms var(--ease-out), box-shadow 250ms var(--ease-out),
             transform 250ms var(--ease-out);
}
.pg-button:hover {
  background:var(--brand-secondary); border-color:var(--brand-secondary);
  color:var(--on-secondary) !important;
  transform:translateY(-2px); box-shadow:var(--shadow-lg); text-decoration:none;
}
.pg-button span { margin-left:var(--space-2); transition:transform 250ms var(--ease-out); display:inline-block; }
.pg-button:hover span { transform:translateX(4px); }

.pg-button-outline { background:transparent; color:var(--brand-primary); }
.pg-button-outline:hover { background:var(--brand-primary); color:var(--on-primary) !important; }

.pg-button-ghost { background:transparent; color:var(--text-secondary); border-color:transparent; }
.pg-button-ghost:hover { background:var(--bg-tertiary); color:var(--text-primary); border-color:var(--border-default); transform:none; box-shadow:none; }

.pg-button-sm { padding:var(--space-2) var(--space-4); font-size:var(--text-xs); }
.pg-button-lg { padding:var(--space-4) var(--space-8); font-size:var(--text-base); }

button, input[type="submit"], .pg-button { cursor:pointer; }
button:disabled, input[type="submit"]:disabled, .pg-button:disabled { opacity:0.6; cursor:not-allowed; }


/* ============================================================================
   9. CARDS
   ============================================================================ */
.pg-page-card {
  background:var(--bg-primary); border:1px solid var(--border-light);
  border-radius:var(--radius-2xl); padding:var(--space-6);
  display:flex; flex-direction:column; height:100%;
  position:relative; overflow:hidden; text-decoration:none; color:inherit;
  transition:transform 300ms var(--ease-out), box-shadow 300ms var(--ease-out), border-color 300ms var(--ease-out);
}
.pg-page-card::before {
  content:''; position:absolute; top:0; left:0; right:0; height:3px;
  background:var(--brand-primary); transform:scaleX(0); transform-origin:left;
  transition:transform 300ms var(--ease-out);
}
.pg-page-card:hover {
  transform:translateY(-6px); box-shadow:var(--shadow-xl);
  border-color:var(--brand-primary); text-decoration:none; color:#000;
}
.pg-page-card:hover::before { transform:scaleX(1); }
.pg-page-card-title { font-size:var(--text-xl); font-weight:600; margin-bottom:var(--space-3); color:var(--text-primary); }
.pg-page-card p { color:var(--text-secondary); }
.pg-page-card-outer { display:grid; gap:var(--space-6); margin:var(--space-8) 0; }
@media (min-width:768px) {
  .pg-page-card-outer { grid-template-columns:repeat(auto-fit, minmax(320px, 1fr)); }
}
.pg-page-card-cols { grid-template-columns:repeat(auto-fit, minmax(280px, 1fr)); }
.pg-page-cards-sm .pg-page-card-outer { grid-template-columns:repeat(auto-fit, minmax(240px, 1fr)); }
.pg-page-cards-lg .pg-page-card-outer { grid-template-columns:repeat(auto-fit, minmax(320px, 1fr)); }


/* ============================================================================
   10. CAROUSEL
   ============================================================================ */
.banner-carousel {
  position:relative; width:100%; height:clamp(280px, 38vw, 450px);
  border-radius:var(--radius-3xl); overflow:hidden;
  box-shadow:var(--shadow-lg); background:var(--bg-tertiary);
}
.banner-carousel .slides { display:flex; height:100%; transition:transform 500ms var(--ease-in-out); }
.banner-carousel .slide { flex:0 0 100%; height:100%; }
.banner-carousel img { width:100%; height:100%; object-fit:cover; }
.banner-carousel .arrow {
  position:absolute; top:50%; transform:translateY(-50%);
  background:var(--bg-primary); color:var(--text-primary);
  border:2px solid var(--border-light); width:48px; height:48px; border-radius:50%;
  display:flex; align-items:center; justify-content:center; cursor:pointer;
  font-size:var(--text-lg); box-shadow:var(--shadow-md); z-index:var(--z-10);
  transition:all 200ms var(--ease-out);
}
.banner-carousel .arrow:hover { background:var(--brand-primary); color:var(--on-primary); border-color:var(--brand-primary); transform:translateY(-50%) scale(1.1); }
.banner-carousel .prev { left:var(--space-4); }
.banner-carousel .next { right:var(--space-4); }


/* ============================================================================
   11. GIFT-PLANNING SECTIONS
   ============================================================================ */
/* -- Ways of Giving cards -- */
.pg-has-ways-of-giving { background:var(--bg-primary); padding:var(--space-20) 0; position:relative; overflow:hidden; }
.pg-has-ways-of-giving::before {
  content:''; position:absolute; top:-50%; right:-25%; width:50%; height:200%;
  background:radial-gradient(circle, var(--bg-tertiary), transparent);
  border-radius:50%; opacity:0.5; filter:blur(100px);
}
.pg-has-ways-of-giving .pg-section-title { text-align:center; margin-bottom:var(--space-12); font-size:var(--text-4xl); }
.pg-has-ways-of-giving .pg-card {
  background:var(--bg-primary); border-radius:var(--radius-2xl); overflow:hidden;
  display:flex; flex-direction:column; height:100%; text-decoration:none; color:inherit;
  box-shadow:var(--shadow-sm); border:1px solid var(--border-light);
  transition:transform 300ms var(--ease-out), box-shadow 300ms var(--ease-out);
}
.pg-has-ways-of-giving .pg-card:hover { transform:translateY(-8px); box-shadow:var(--shadow-xl); text-decoration:none; color:inherit; }
.pg-has-ways-of-giving .pg-card-image { height:200px; overflow:hidden; position:relative; }
.pg-has-ways-of-giving .pg-card-image::after {
  content:''; position:absolute; bottom:0; left:0; right:0; height:50%;
  background:linear-gradient(to top, rgba(0,0,0,0.3), transparent);
}
.pg-has-ways-of-giving .pg-card-image img { width:100%; height:100%; object-fit:cover; transition:transform 500ms var(--ease-out); }
.pg-has-ways-of-giving .pg-card:hover img { transform:scale(1.1); }
.pg-has-ways-of-giving .pg-card-content { padding:var(--space-6); flex:1; }
.pg-has-ways-of-giving .pg-strong { font-size:var(--text-xl); font-weight:600; color:var(--text-primary); margin-bottom:var(--space-2); display:block; }

/* -- Legacy Society -- */
.pg-has-society { background:var(--bg-tertiary); padding:var(--space-16) 0; border-radius:var(--radius-3xl); margin:var(--space-8) 0; }
.pg-society-inner { display:grid; gap:var(--space-12); align-items:center; }
@media (min-width:1024px) { .pg-society-inner { grid-template-columns:1fr 1fr; } }
.pg-society-img { width:100%; max-width:500px; border-radius:var(--radius-2xl); box-shadow:var(--shadow-lg); transition:transform 300ms var(--ease-out), filter 300ms var(--ease-out); }
.pg-society-img:hover { transform:rotate(-2deg) scale(1.02); filter:grayscale(0.2); }

/* -- Tip of the Week -- */
.pg-has-tip-of-the-week {
  background:var(--bg-primary); border:2px solid var(--border-light);
  border-radius:var(--radius-2xl); padding:var(--space-8); margin:var(--space-8) 0;
  position:relative; overflow:hidden;
}
.pg-has-tip-of-the-week::before {
  content:''; position:absolute; top:-50%; right:-20%; width:400px; height:400px;
  background:radial-gradient(circle, var(--warning-bg), transparent); opacity:0.3;
}
.pg-has-tip-of-the-week .pg-section-title { display:flex; align-items:center; gap:var(--space-3); margin-bottom:var(--space-6); }
.pg-has-tip-of-the-week .fa-lightbulb { font-size:var(--text-2xl); color:var(--warning); filter:drop-shadow(0 0 10px rgba(217,119,6,0.3)); }
.pg-has-tip-of-the-week .readmoretip { margin-top:var(--space-4); }

/* -- Plan-a-Gift CTA band -- */
.pg-has-pag {
  background:var(--brand-primary); color:var(--on-primary);
  padding:var(--space-8); border-radius:var(--radius-3xl); margin:var(--space-8) 0;
  position:relative; overflow:hidden;
}
.pg-has-pag::before {
  content:''; position:absolute; top:-50%; left:-30%; width:60%; height:200%;
  background:rgba(255,255,255,0.1); transform:rotate(45deg);
}
.pg-has-pag .pg-section-title span { background:transparent; padding:0 var(--space-6); }
.pg-has-pag .pg-columns { display:grid; gap:var(--space-8); align-items:center; margin-top:var(--space-6); }
@media (min-width:768px) { .pg-has-pag .pg-columns { grid-template-columns:auto 1fr; } }
.pg-has-pag a {
  display:inline-block; background:var(--brand-secondary); color:var(--on-secondary);
  padding:var(--space-3) var(--space-6); border-radius:var(--radius-full); font-weight:600;
  box-shadow:var(--shadow-md); text-decoration:none; transition:transform 200ms var(--ease-out), box-shadow 200ms var(--ease-out), background-color 200ms var(--ease-out);
}
.pg-has-pag a:hover { transform:translateY(-2px); box-shadow:var(--shadow-lg); text-decoration:none; background:var(--brand-secondary-dark); }
.pg-has-pag .fa-gift { font-size:var(--text-4xl); animation:pgFloat 3s ease-in-out infinite; }
@keyframes pgFloat { 0%,100% { transform:translateY(0); } 50% { transform:translateY(-10px); } }
.pg-plan-a-gift-copy { font-size:var(--text-lg); line-height:1.7; margin-bottom:var(--space-6); }


/* ============================================================================
   12. INTERACTIVE CONTENT BLOCKS  (gift/article pages)
   FLAT BY DEFAULT — copy sits on the page, no shadowed boxes. Surfaces are
   driven by the --panel-* tokens (section 1e) so a client can opt into boxes.
   ============================================================================ */
/* Shared section shell (flat unless a client sets the panel tokens). */
#vghowworks, #vgbenefits, #vgnext, .pg-important-related-topics {
  background:var(--panel-bg);
  border:var(--panel-border);
  border-radius:var(--panel-radius);
  box-shadow:var(--panel-shadow);
  padding:var(--panel-pad);
  margin:var(--space-10) 0;
}
/* Section headings INHERIT THE CLIENT THEME's heading styles (type + color);
   we only set spacing. No custom font/size/color/accent here. */
#vghowworks h2, #vgbenefits h2, #vgnext h2, .pg-important-related-topics h2 {
  margin:0 0 var(--space-6);
}

/* -- How it works: numbered steps on hairline rows (no cards) --
   NOTE: the step text is mixed inline content (text + links), so we use an
   absolutely-positioned number + left padding rather than grid. A grid would
   scatter each text node / link into its own cell and break the sentence. */
#vghowworks ul { list-style:none !important; counter-reset:step; margin:0; padding:0; }
#vghowworks li {
  display:block; list-style:none !important; counter-increment:step;
  position:relative;
  padding:var(--space-5) 0 var(--space-5) calc(34px + var(--space-4));
  color:var(--text-secondary); line-height:1.7; font-size:var(--text-base);
  border-top:var(--rule);
}
#vghowworks li:first-child { border-top:0; }
#vghowworks li::before {
  content:counter(step);
  position:absolute; left:0; top:var(--space-5);
  width:34px; height:34px; border-radius:50%;
  background:var(--brand-primary); color:var(--on-primary);
  display:flex; align-items:center; justify-content:center;
  font-weight:700; font-size:var(--text-base);
}
#vghowworks li p, #vghowworks li div { margin:0; }

/* -- Benefits: clean checkmark list (no cards, no native bullet) -- */
#vgbenefits ul { list-style:none !important; margin:0; padding:0; }
#vgbenefits li {
  display:block; list-style:none !important;       /* kill vendor disc marker */
  position:relative; padding:var(--space-2) 0 var(--space-2) var(--space-9);
  color:var(--text-secondary); line-height:1.7;
}
#vgbenefits li::before {
  content:'✓'; position:absolute; left:0; top:var(--space-2);
  width:24px; height:24px; border-radius:50%;
  background:color-mix(in srgb, var(--success) 14%, transparent); color:var(--success);
  display:flex; align-items:center; justify-content:center; font-size:0.85em; font-weight:700;
}

/* -- Related topics: clean linked list with hairline rows (no boxes) -- */
.pg-important-related-topics ul { list-style:none !important; margin:0; padding:0; }
.pg-important-related-topics li { display:block; list-style:none !important; border-top:var(--rule); }
.pg-important-related-topics li:first-child { border-top:0; }
.pg-important-related-topics a {
  display:flex; align-items:center; justify-content:space-between; gap:var(--space-3);
  padding:var(--space-4) 0;
  color:var(--text-primary); font-weight:600; font-size:var(--text-base); line-height:1.5;
  text-decoration:none;
  transition:color 160ms var(--ease-out), padding-left 160ms var(--ease-out);
}
.pg-important-related-topics a::after {
  content:'→'; flex-shrink:0; color:var(--brand-secondary); font-weight:700;
  transition:transform 160ms var(--ease-out);
}
.pg-important-related-topics a:hover { color:var(--brand-secondary); padding-left:var(--space-2); }
.pg-important-related-topics a:hover::after { transform:translateX(4px); }
.pg-important-related-topics a[href$=".doc"]::after,
.pg-important-related-topics a[href$=".pdf"]::after { content:'↓'; }


/* ============================================================================
   13. FORMS & CALCULATORS
   ============================================================================ */
#vgcom {
  background:var(--bg-primary); padding:var(--space-8); border-radius:var(--radius-2xl);
  box-shadow:var(--shadow-sm); border:1px solid var(--border-light); margin:var(--space-8) 0;
}
#vgcom h2 { color:var(--text-primary); border-bottom:2px solid var(--border-light); padding-bottom:var(--space-4); margin-bottom:var(--space-6); font-size:var(--text-2xl); }
#vgcom section { margin-bottom:var(--space-6); }
#vgcom label {
  display:block; padding:var(--space-4); background:var(--bg-tertiary); border-radius:var(--radius-lg);
  margin-bottom:var(--space-3); cursor:pointer; border:2px solid transparent; position:relative;
  transition:border-color 200ms var(--ease-out), background-color 200ms var(--ease-out), box-shadow 200ms var(--ease-out);
}
#vgcom label:hover { border-color:var(--brand-primary); background:var(--bg-primary); box-shadow:var(--shadow-sm); }
#vgcom input[type="checkbox"] { position:absolute; opacity:0; cursor:pointer; height:0; width:0; }
#vgcom input[type="checkbox"]:checked + label { border-color:var(--brand-primary); background:var(--bg-primary); box-shadow:var(--shadow-md); }
#vgcom label p { margin:0 0 var(--space-2) 0; font-size:var(--text-base); line-height:1.5; color:var(--text-secondary); }
#vgcom label p span { display:block; font-weight:600; font-size:var(--text-lg); color:var(--text-primary); margin-bottom:var(--space-1); }
#vgcom .checkmark { position:absolute; top:var(--space-4); right:var(--space-4); height:20px; width:20px; background-color:var(--bg-muted); border-radius:var(--radius-sm); transition:background-color 200ms var(--ease-out); }
#vgcom .checkmark:after { content:""; position:absolute; display:none; left:7px; top:3px; width:5px; height:10px; border:solid var(--text-inverse); border-width:0 3px 3px 0; transform:rotate(45deg); }
#vgcom input[type="checkbox"]:checked ~ .checkmark { background-color:var(--brand-primary); }
#vgcom input[type="checkbox"]:checked ~ .checkmark:after { display:block; }
#vgcom input[type="submit"] {
  background:var(--brand-primary); color:var(--on-primary); border:none;
  padding:var(--space-3) var(--space-8); border-radius:var(--radius-full); font-weight:600;
  cursor:pointer; float:right; font-size:var(--text-base);
  transition:background-color 300ms var(--ease-out), transform 300ms var(--ease-out), box-shadow 300ms var(--ease-out);
}
#vgcom input[type="submit"]:hover { background:var(--brand-secondary); color:var(--on-secondary); transform:translateY(-2px); box-shadow:var(--shadow-md); }

/* generic form elements */
.pg-form-group { margin-bottom:var(--space-4); }
.pg-form-label { display:block; margin-bottom:var(--space-2); font-weight:500; color:var(--text-primary); }
.pg-form-input { width:100%; padding:var(--space-3); border:1px solid var(--border-default); border-radius:var(--radius-md); font-size:var(--text-base); transition:border-color 200ms var(--ease-out); }
.pg-form-input:focus { outline:none; border-color:var(--brand-primary); box-shadow:0 0 0 3px color-mix(in srgb, var(--brand-primary) 18%, transparent); }
.pg-form-textarea { min-height:120px; resize:vertical; }


/* ============================================================================
   14. TABLES
   ============================================================================ */
#vggoals {
  width:100%; background:var(--bg-primary); border-radius:var(--radius-2xl); overflow:hidden;
  box-shadow:var(--shadow-sm); border:1px solid var(--border-light); margin:var(--space-8) 0;
}
#vggoals thead { background:var(--brand-primary); }
#vggoals thead p strong { color:var(--on-primary) !important; }
#vggoals th { padding:var(--space-4) var(--space-6); font-weight:600; text-align:left; color:var(--on-primary); font-size:var(--text-sm); text-transform:uppercase; letter-spacing:0.05em; }
#vggoals td { padding:var(--space-4) var(--space-6); border-bottom:1px solid var(--border-light); color:var(--text-secondary); vertical-align:top; }
#vggoals tbody tr { transition:background-color 200ms var(--ease-out); }
#vggoals tbody tr:hover { background:var(--bg-tertiary); }
#vggoals tbody tr:last-child td { border-bottom:none; }
#vggoals a { color:var(--brand-secondary); font-weight:500; }
#vggoals a:hover { color:var(--brand-secondary-dark); }
@media (max-width:768px) {
  #vggoals thead { display:none; }
  #vggoals tr { display:block; margin-bottom:var(--space-4); background:var(--bg-primary); border-radius:var(--radius-lg); padding:var(--space-4); box-shadow:var(--shadow-sm); border:1px solid var(--border-light); }
  #vggoals td { display:block; text-align:left; padding:var(--space-2) 0 var(--space-2) 50%; border:none; position:relative; }
  #vggoals td::before { content:attr(data-label); position:absolute; left:0; top:var(--space-2); font-weight:600; color:var(--text-primary); width:45%; }
}


/* ============================================================================
   15. GIFT DIAGRAM
   ============================================================================ */
#vggiftdiag { text-align:center; margin:0 auto; }
.vggiftdiag_logo { margin:var(--space-4) auto 0; width:100px; padding:5px; transition:opacity 500ms var(--ease-out); }
.pg-gift-diagram-end .vggiftdiag_logo { opacity:1; }
#vgdiagram { margin:0 auto; }
.giftvideo { margin:0 auto; }
body .bg-card { background-color:#fff !important; }


/* ============================================================================
   16. NEXT STEPS
   ============================================================================ */
/* Flat: section shell + heading inherit the shared rules in section 12. */
#vgnext { background:var(--panel-bg); border:var(--panel-border); border-radius:var(--panel-radius); box-shadow:var(--panel-shadow); padding:var(--panel-pad); margin:var(--space-10) 0; }
#vgnext ul { display:grid; gap:var(--space-3); list-style:none; grid-template-columns:repeat(auto-fit, minmax(280px, 1fr)); margin:0; padding:0; }
#vgnext li {
  position:relative; padding:var(--space-4) var(--space-5);
  border:var(--rule); border-radius:var(--radius-md);
  transition:border-color 160ms var(--ease-out), background-color 160ms var(--ease-out);
}
#vgnext li::before {
  content:''; position:absolute; left:0; top:0; bottom:0; width:3px;
  background:var(--brand-primary); border-radius:var(--radius-full) 0 0 var(--radius-full);
  opacity:0; transition:opacity 160ms var(--ease-out);
}
#vgnext li:hover { border-color:var(--brand-primary); background:color-mix(in srgb, var(--brand-primary) 6%, transparent); }
#vgnext li:hover::before { opacity:1; }
#vgnext a { color:var(--text-primary); font-weight:600; text-decoration:none; }
.vgicon { display:none !important; }


/* ============================================================================
   17. BEQUEST FORM LINK
   ============================================================================ */
/* Block flow (NOT flex): this box mixes an icon with inline text + links.
   Flex turned each word/link into its own item and wrapped "click here"
   onto two lines. Float the icon and let the sentence flow normally. */
.vgbequestformlink {
  display:block; overflow:hidden;
  padding:var(--space-4) var(--space-5);
  background:transparent; border:0; border-left:4px solid var(--brand-primary);
  border-radius:0; box-shadow:none; font-size:var(--text-base);
  line-height:1.7; color:var(--text-secondary); margin:var(--space-6) 0;
}
.vgbequestformlink img { float:left; max-width:44px; height:auto; margin:2px var(--space-4) var(--space-2) 0; }
.vgbequestformlink a { display:inline; color:var(--brand-secondary); font-weight:600; text-decoration:underline; transition:color 200ms var(--ease-out); }
.vgbequestformlink a:hover { color:var(--brand-secondary-dark); }
@media (max-width:768px) {
  .vgbequestformlink { padding:var(--space-4); }
  .vgbequestformlink img { max-width:40px; }
}


/* ============================================================================
   18. ALERTS
   ============================================================================ */
.pg-alert { padding:var(--space-4); border-radius:var(--radius-lg); margin-bottom:var(--space-4); border:1px solid; }
.pg-alert-info    { background:var(--info-bg);    border-color:var(--blue-200);  color:var(--info); }
.pg-alert-success { background:var(--success-bg); border-color:var(--green-200); color:var(--success); }
.pg-alert-warning { background:var(--warning-bg); border-color:var(--amber-200); color:var(--warning); }
.pg-alert-error   { background:var(--error-bg);   border-color:var(--red-200);   color:var(--error); }
.pg-alert-accent  { background:var(--bg-primary); border:2px solid var(--brand-primary); color:var(--text-primary); }
.pg-alert a { color:inherit; font-weight:600; text-decoration:none; display:flex; align-items:center; gap:var(--space-3); transition:opacity 200ms var(--ease-out); }
.pg-alert a:hover { opacity:0.8; text-decoration:none; }


/* ============================================================================
   19. FAQ
   ============================================================================ */
#vgsubqa { margin:var(--space-8) 0; }
#vgsubqa > p {
  padding:var(--space-4) var(--space-4) var(--space-4) var(--space-12);
  background:var(--bg-tertiary); border-radius:var(--radius-lg); margin-bottom:var(--space-2);
  cursor:pointer; font-weight:600; color:var(--text-primary); position:relative;
  transition:background-color 200ms var(--ease-out);
}
#vgsubqa > p:hover { background:var(--bg-primary); box-shadow:var(--shadow-sm); }
/* The platform opens/closes each answer with swapLayers() = inline
   display:block / display:none. Our old max-height:0 clamp clipped the OPEN
   (display:block) state to 0px, so answers never appeared to open. Don't clamp
   height; just style the panel and let the vendor's display toggle show/hide. */
.vgslide { background:var(--bg-primary); border-radius:var(--radius-lg); margin-bottom:var(--space-4); }
#vgsubqa .vgslide p, #vgsubqa .vgslide ul { margin:var(--space-4); color:var(--text-secondary); }
.pg-faq-toggle img { float:left; padding-right:10px; }


/* ============================================================================
   20. CONTACT & FOOTER
   ============================================================================ */
.pg-has-contact { background:var(--bg-tertiary); padding:var(--space-16) 0; }
.pg-contact { margin-top:var(--space-6); }
.pg-contacts { display:grid; gap:var(--space-8); margin-top:var(--space-8); }
@media (min-width:768px) { .pg-contacts { grid-template-columns:repeat(auto-fit, minmax(300px, 1fr)); } }
.pg-contact-item { background:var(--bg-primary); padding:var(--space-6); border-radius:var(--radius-xl); box-shadow:var(--shadow-sm); border:1px solid var(--border-light); }
.pg-contact-item.pg-has-img { display:flex; gap:var(--space-4); align-items:flex-start; }
.pg-contact-item .pg-img-wrap { width:120px; height:120px; border-radius:var(--radius-lg); overflow:hidden; flex-shrink:0; }
.pg-contact-item .pg-img-wrap img { width:100%; height:100%; object-fit:cover; }
.pg-contact-item ul { list-style:none; padding:0; margin:0; font-size:var(--text-sm); }
.pg-contact-item ul li { margin-bottom:var(--space-2); line-height:1.4; }
.pg-contact-item ul li.pg-contact-name { font-weight:600; font-size:var(--text-base); color:var(--text-primary); margin-bottom:var(--space-3); }
@media (max-width:768px) {
  .pg-contact-item.pg-has-img { flex-direction:column; text-align:center; }
  .pg-contact-item .pg-img-wrap { align-self:center; }
}

.pg-is-footer { background:var(--brand-primary); color:var(--text-inverse); padding:var(--space-8) 0; text-align:center; font-size:var(--text-sm); }
.pg-is-footer a, .pg-is-footer p { color:#fff !important; }
.pg-is-footer a { text-decoration:underline; }
.pg-footer_proupgrade { max-width:var(--container-lg); margin:0 auto; padding:0 var(--space-4); }


/* ============================================================================
   21. UTILITIES
   ============================================================================ */
.pg-sr-only, .hideOffScreen {
  position:absolute; width:1px; height:1px; overflow:hidden;
  clip:rect(0,0,0,0); border:0;
}
.pg-text-align-center { text-align:center; }
.pg-text-align-left { text-align:left; }
.pg-text-align-right { text-align:right; }
.pg-nowrap { white-space:nowrap; }

.pg-has-line-beside { position:relative; display:flex; align-items:center; justify-content:center; }
.pg-has-line-beside::before, .pg-has-line-beside::after { content:''; flex:1; height:1px; background:linear-gradient(90deg, transparent, var(--border-light), transparent); }
.pg-has-line-beside span { padding:0 var(--space-8); font-weight:600; background:var(--bg-primary); }

.pg-has-background-color { padding:var(--space-16) 0; }
.pg-has-primary-background-color { background:var(--brand-primary); color:var(--on-primary); }
.pg-has-secondary-background-color { background-color:var(--bg-secondary); }
.pg-has-light-grey-background-color { background-color:var(--bg-tertiary); }
.pg-has-white-background-color { background-color:var(--bg-primary); }
.pg-has-primary-color { color:var(--text-primary); }
.pg-has-white-color { color:var(--text-inverse); }
.pg-has-dark-grey-color { color:var(--text-primary); }

.pg-mb-0 { margin-bottom:0; } .pg-mb-2 { margin-bottom:var(--space-2); } .pg-mb-4 { margin-bottom:var(--space-4); }
.pg-mb-6 { margin-bottom:var(--space-6); } .pg-mb-8 { margin-bottom:var(--space-8); }
.pg-mt-0 { margin-top:0; } .pg-mt-2 { margin-top:var(--space-2); } .pg-mt-4 { margin-top:var(--space-4); }
.pg-mt-6 { margin-top:var(--space-6); } .pg-mt-8 { margin-top:var(--space-8); }
.pg-p-0 { padding:0; } .pg-p-2 { padding:var(--space-2); } .pg-p-4 { padding:var(--space-4); }
.pg-p-6 { padding:var(--space-6); } .pg-p-8 { padding:var(--space-8); }

.vg-clearfix::after { content:""; display:table; clear:both; }

/* fade-in helper */
@keyframes pgFadeInUp { from { opacity:0; transform:translateY(20px); } to { opacity:1; transform:translateY(0); } }
.pg-fade-in { animation:pgFadeInUp 0.6s var(--ease-out) forwards; }
@keyframes pgSpin { to { transform:rotate(360deg); } }
.pg-loading { position:relative; pointer-events:none; }
.pg-loading::after { content:''; position:absolute; top:50%; left:50%; width:20px; height:20px; margin:-10px 0 0 -10px; border:2px solid var(--border-light); border-top-color:var(--brand-primary); border-radius:50%; animation:pgSpin 1s linear infinite; }

/* legacy vendor cleanup */
#vggizmos, #vgitgfy .vgicon { display:none !important; }
#vgbody ol { list-style:inherit !important; margin-left:20px; }
#vgbody ul { list-style-type:disc !important; }
body #vgbody #vgWPW input, body #vgbody #vgWPW textarea { border:1px solid #ccc; }


/* ============================================================================
   22. SIDEBAR CALLOUTS  (#vgitgfy "in this guide", #vggep estate-plan nav)
   ============================================================================ */
#vgitgfy {
  float:right; width:360px; max-width:42%;
  margin:0 0 1.5rem 1.5rem; padding:1rem 1.25rem;
  background:#fff; background-image:linear-gradient(180deg, rgba(2,38,88,0.04), rgba(0,46,109,0.02));
  border:1px solid rgba(2,38,88,0.15); border-radius:10px;
  box-shadow:0 6px 20px rgba(0,0,0,0.08), 0 2px 6px rgba(0,0,0,0.06);
  box-sizing:border-box; position:relative;
}
@media (min-width:1025px) { #vgitgfy { position:sticky; top:1.25rem; } }
#vgitgfy::before {
  content:""; position:absolute; left:0; top:12px; bottom:12px; width:4px; border-radius:4px;
  background-image:linear-gradient(180deg, var(--brand-primary), var(--brand-secondary)); opacity:0.9;
}
#vgitgfy h2 { margin:0 0 0.5rem 0; font-size:var(--text-xl); line-height:1.2; color:#022658; letter-spacing:0.2px; }
#vgitgfy > p { margin:0 0 0.75rem 0; color:#12324f; font-size:var(--text-base); }
#vgitgfy li { position:relative; padding:0.4rem 0 0.4rem 1.5rem; margin:0; color:#2a3b4f; font-size:var(--text-base); line-height:1.45; border-bottom:1px dashed rgba(2,38,88,0.15); }
#vgitgfy li:last-child { border-bottom:none; }
#vgitgfy a:focus, #vgitgfy button:focus, #vgitgfy li:focus-within { box-shadow:inset 0 0 0 2px rgba(76,156,217,0.35); border-radius:6px; }
@media (max-width:1024px) { #vgitgfy { float:none; width:100%; max-width:100%; margin:1rem 0; } }

#vggep {
  float:right; width:280px; background:#fff; border:1px solid #ddd; border-radius:8px;
  padding:16px; margin:0 0 20px 20px; box-shadow:0 2px 6px rgba(0,0,0,0.05);
}
#vggep .title { font-size:var(--text-lg); font-weight:700; margin-bottom:12px; color:var(--brand-secondary); border-bottom:2px solid var(--brand-secondary); padding-bottom:4px; }
#vggep a { display:block; padding:8px 12px; margin-bottom:6px; border-radius:6px; text-decoration:none; font-size:var(--text-sm); font-weight:500; color:#333; background:#f9f9f9; transition:all 0.2s ease; }
#vggep a strong { margin-right:6px; color:var(--brand-secondary); }
#vggep a:hover, #vggep a:focus { background:var(--brand-secondary); color:#fff; outline:none; }
#vggep a:hover strong, #vggep a:focus strong { color:#fff; }
#vggep a.selected { background:var(--brand-secondary); color:#fff; font-weight:600; }
#vggep a.selected strong { color:#fff; }
#vggep a.lite { background:transparent; color:var(--brand-secondary); font-size:var(--text-sm); font-weight:500; border:1px dashed #bbb; padding:6px 10px; }
#vggep a.lite:hover, #vggep a.lite:focus { background:#eef5fa; color:var(--brand-secondary); border-color:var(--brand-secondary); }
@media (max-width:1024px) { #vggep { float:none; width:100%; margin:1rem 0; } }


/* ============================================================================
   23. PLAN-A-GIFT MODAL  (#vg_planagift_v2 + #blanket overlay)
   Vendor popup; overrides target vendor inline styles -> !important needed.
   ============================================================================ */
body #blanket[style*="display:block"],
body #blanket[style*="display: block"] {
  position:fixed !important; inset:0 !important; display:block !important;
  width:100vw !important; height:100vh !important;
  background:rgba(15,23,42,0.58) !important; z-index:900 !important;
}
body #vg_planagift_v2,
body #vg_planagift_v2 * { font-family:var(--font-body) !important; }
body #vg_planagift_v2[style*="display:block"],
body #vg_planagift_v2[style*="display: block"] {
  box-sizing:border-box !important; left:50% !important;
  width:calc(100vw - 48px) !important; max-width:760px !important; min-width:0 !important;
  max-height:calc(100vh - 48px) !important; padding:30px !important;
  overflow-x:hidden !important; overflow-y:auto !important;
  background:#fff !important; border:1px solid var(--uwci-border) !important;
  box-shadow:0 24px 60px rgba(15,23,42,0.28) !important; z-index:901 !important; color:#000 !important;
}
body #vg_planagift_v2 #vgpag,
body #vg_planagift_v2 fieldset { box-sizing:border-box !important; width:100% !important; max-width:100% !important; min-width:0 !important; padding:0 !important; background:transparent !important; overflow:visible !important; }
body #vg_planagift_v2 #vgpag_close { display:block !important; opacity:1 !important; z-index:902 !important; }
body #vg_planagift_v2 legend { box-sizing:border-box !important; float:none !important; width:100% !important; max-width:100% !important; margin:0 0 24px !important; padding:0 !important; color:#111827 !important; line-height:1.2 !important; white-space:normal !important; }
body #vg_planagift_v2 legend strong {
  box-sizing:border-box !important; display:block !important; width:100% !important; max-width:calc(100% - 54px) !important;
  margin:0 0 16px !important; padding:0 0 13px !important; border-bottom:3px solid var(--brand-primary) !important;
  color:#000 !important; font-family:var(--font-body) !important; font-size:clamp(1.75rem, 1.4rem + 1.6vw, 2.125rem) !important;
  font-weight:400 !important; line-height:1.2 !important; overflow-wrap:break-word !important;
}
body #vg_planagift_v2 legend em { box-sizing:border-box !important; display:block !important; width:100% !important; max-width:100% !important; color:#000 !important; font-family:var(--font-body) !important; font-size:clamp(1.375rem, 1.2rem + 0.8vw, 1.5rem) !important; font-style:normal !important; font-weight:400 !important; line-height:1.28 !important; overflow-wrap:break-word !important; }
body #vg_planagift_v2 p, body #vg_planagift_v2 label { color:#000 !important; font-family:var(--font-body) !important; font-size:clamp(1rem, 0.95rem + 0.3vw, 1.09375rem) !important; font-weight:400 !important; line-height:1.8 !important; max-width:100% !important; overflow-wrap:break-word !important; }
body #vg_planagift_v2 p { margin:22px 0 0 !important; }
body #vg_planagift_v2 a { color:var(--brand-secondary) !important; text-decoration-color:currentColor !important; max-width:100% !important; overflow-wrap:break-word !important; }
body #vg_planagift_v2 input[type="radio"] { accent-color:var(--brand-secondary) !important; }
body #vg_planagift_v2 .vgpag_footer { display:flex !important; flex-wrap:wrap !important; align-items:center !important; gap:10px !important; position:static !important; width:100% !important; margin:28px 0 0 !important; padding:0 !important; }
body #vg_planagift_v2 #vgpagback,
body #vg_planagift_v2 #vgpagnext {
  box-sizing:border-box !important; display:inline-flex !important; align-items:center !important; justify-content:center !important;
  width:auto !important; max-width:100% !important; min-width:108px !important; min-height:58px !important;
  padding:16px 36px !important; background:var(--brand-primary) !important; border:1px solid var(--brand-primary) !important;
  border-radius:var(--radius-md) !important; box-shadow:none !important; color:var(--on-primary) !important;
  cursor:pointer !important; font-family:var(--font-button) !important; font-size:var(--text-lg) !important;
  font-weight:400 !important; letter-spacing:0.02em !important; line-height:1 !important; text-align:center !important;
  text-transform:none !important; white-space:normal !important;
  transition:background-color 160ms ease, border-color 160ms ease !important;
}
body #vg_planagift_v2 #vgpagback:hover, body #vg_planagift_v2 #vgpagback:focus,
body #vg_planagift_v2 #vgpagnext:hover, body #vg_planagift_v2 #vgpagnext:focus {
  background:var(--brand-secondary) !important; border-color:var(--brand-secondary) !important; color:var(--on-secondary) !important;
}
body #vg_planagift_v2 #vgpagback:focus-visible, body #vg_planagift_v2 #vgpagnext:focus-visible {
  box-shadow:0 0 0 3px color-mix(in srgb, var(--brand-primary) 45%, transparent) !important;
}
@media (max-width:640px) {
  body #vg_planagift_v2[style*="display:block"],
  body #vg_planagift_v2[style*="display: block"] {
    left:14px !important; right:14px !important; width:auto !important; max-width:calc(100vw - 28px) !important;
    max-height:calc(100vh - 28px) !important; padding:22px !important; transform:none !important;
  }
  body #vg_planagift_v2 #vgpagback, body #vg_planagift_v2 #vgpagnext { min-height:52px !important; padding:14px 28px !important; font-size:var(--text-base) !important; }
}


/* ============================================================================
   24. GIFT-PLAN CARD GRIDS
   Shared card language for .pg-gift-plans and .pg-page-card-cols grids
   (gift lists, footer tools, "Explore More"). Overrides vendor base.css.
   ============================================================================ */
.pg-gift-plans .pg-page-card-outer,
.pg-page-card-outer.pg-page-card-cols {
  display:grid !important; gap:22px !important; margin:34px 0 !important;
}
.pg-gift-plans .pg-page-card-outer { grid-template-columns:repeat(2, minmax(0, 1fr)) !important; }
.pg-page-card-outer.pg-page-card-cols { grid-template-columns:repeat(auto-fit, minmax(min(100%, 260px), 1fr)) !important; }
.pg-gift-plans .pg-page-card-outer > article,
.pg-page-card-outer.pg-page-card-cols > article,
.pg-page-card-outer.pg-page-card-cols > .pg-page-card { min-width:0 !important; }

.pg-gift-plans .pg-page-card,
.pg-page-card-outer.pg-page-card-cols > .pg-page-card,
.pg-page-card-outer.pg-page-card-cols > article > .pg-page-card {
  box-sizing:border-box !important; display:flex !important; flex-direction:column !important;
  min-height:185px !important; height:100% !important; padding:26px !important;
  background:#fff !important; border:1px solid rgba(0,0,0,0.16) !important; border-top:5px solid var(--brand-primary) !important;
  border-radius:var(--radius-md) !important; box-shadow:none !important; color:#000 !important;
  font-family:var(--font-body) !important; text-align:left !important; text-decoration:none !important; transform:none !important;
  transition:border-color 160ms ease, box-shadow 160ms ease, transform 160ms ease !important;
}
.pg-gift-plans .pg-page-card::before,
.pg-page-card-outer.pg-page-card-cols .pg-page-card::before,
.pg-gift-plans .pg-page-card .pg-button::before,
.pg-page-card-outer.pg-page-card-cols .pg-page-card .pg-button::before { display:none !important; }
.pg-gift-plans .pg-page-card:hover, .pg-gift-plans .pg-page-card:focus,
.pg-page-card-outer.pg-page-card-cols > .pg-page-card:hover,
.pg-page-card-outer.pg-page-card-cols > .pg-page-card:focus,
.pg-page-card-outer.pg-page-card-cols > article > .pg-page-card:hover,
.pg-page-card-outer.pg-page-card-cols > article > .pg-page-card:focus {
  border-color:var(--brand-secondary) !important; border-top-color:var(--brand-secondary) !important;
  box-shadow:0 10px 24px rgba(0,0,0,0.10) !important; color:#000 !important; outline:none !important;
  text-decoration:none !important; transform:translateY(-2px) !important;
}
.pg-gift-plans .pg-page-card:focus-visible { box-shadow:0 0 0 3px color-mix(in srgb, var(--brand-primary) 45%, transparent), 0 10px 24px rgba(0,0,0,0.10) !important; }
.pg-gift-plans .pg-page-card-title,
.pg-page-card-outer.pg-page-card-cols .pg-page-card-title {
  margin:0 0 14px !important; color:#000 !important; font-family:var(--font-heading) !important;
  font-size:var(--text-2xl) !important; font-weight:400 !important; line-height:1.28 !important; text-align:left !important; text-decoration:none !important;
}
.pg-gift-plans .pg-page-card p,
.pg-page-card-outer.pg-page-card-cols .pg-page-card p {
  margin:0 !important; color:#000 !important; font-family:var(--font-body) !important;
  font-size:var(--text-base) !important; font-weight:400 !important; line-height:1.58 !important; text-align:left !important; text-decoration:none !important;
}
.pg-gift-plans .pg-page-card .pg-button,
.pg-page-card-outer.pg-page-card-cols .pg-page-card .pg-button {
  box-sizing:border-box !important; display:inline-flex !important; align-items:center !important; justify-content:center !important;
  gap:12px !important; width:fit-content !important; max-width:100% !important; min-height:52px !important;
  margin:auto 0 0 !important; padding:15px 34px !important; background:var(--brand-primary) !important;
  border:1px solid var(--brand-primary) !important; border-radius:var(--radius-md) !important; box-shadow:none !important;
  color:var(--on-primary) !important; font-family:var(--font-button) !important; font-size:var(--text-lg) !important;
  font-weight:400 !important; line-height:1 !important; letter-spacing:0.02em !important; text-align:center !important; text-decoration:none !important;
  transition:background-color 160ms ease, border-color 160ms ease, color 160ms ease !important;
}
.pg-gift-plans .pg-page-card .pg-button span { display:inline-block !important; margin:0 !important; color:currentColor !important; transition:transform 160ms ease !important; }
.pg-gift-plans .pg-page-card:hover .pg-button, .pg-gift-plans .pg-page-card:focus .pg-button,
.pg-page-card-outer.pg-page-card-cols .pg-page-card:hover .pg-button,
.pg-page-card-outer.pg-page-card-cols .pg-page-card:focus .pg-button {
  background:var(--brand-secondary) !important; border-color:var(--brand-secondary) !important; color:var(--on-secondary) !important;
}
.pg-gift-plans .pg-page-card:hover .pg-button span, .pg-gift-plans .pg-page-card:focus .pg-button span { transform:translateX(3px) !important; }
.pg-gift-plans .pg-page-card *,
.pg-page-card-outer.pg-page-card-cols .pg-page-card * { text-decoration:none !important; }

.pg-section-title.pg-text-align-center {
  color:#000 !important; font-family:var(--font-heading) !important; font-size:var(--text-3xl) !important;
  font-weight:400 !important; line-height:1.24 !important; text-align:center !important;
}
@media (max-width:900px) { .pg-gift-plans .pg-page-card-outer { grid-template-columns:1fr !important; } }
@media (max-width:640px) {
  .pg-gift-plans .pg-page-card-outer, .pg-page-card-outer.pg-page-card-cols { gap:16px !important; margin:28px 0 !important; }
  .pg-gift-plans .pg-page-card,
  .pg-page-card-outer.pg-page-card-cols > .pg-page-card,
  .pg-page-card-outer.pg-page-card-cols > article > .pg-page-card { min-height:0 !important; padding:22px !important; }
  .pg-gift-plans .pg-page-card .pg-button,
  .pg-page-card-outer.pg-page-card-cols .pg-page-card .pg-button { width:100% !important; }
}


/* ============================================================================
   25. COMPARE GIFT PLANS  (#vgcom picker + #vgcomo results table)
   ============================================================================ */
#vgcom { display:block !important; width:100% !important; max-width:100% !important; margin:28px 0 0 !important; }
#vgcom > input[type="submit"] {
  float:none !important; position:sticky !important; top:16px !important; z-index:5 !important; display:block !important;
  width:fit-content !important; min-height:58px !important; margin:0 0 28px auto !important; padding:16px 38px !important;
  background:var(--brand-secondary) !important; border:1px solid var(--brand-secondary) !important; border-radius:var(--radius-md) !important;
  color:var(--on-secondary) !important; cursor:pointer !important; font-family:var(--font-button) !important; font-size:var(--text-lg) !important;
  font-weight:400 !important; letter-spacing:0.02em !important;
}
#vgcom section { margin:0 0 34px !important; padding:0 !important; }
#vgcom section > h2 { margin:0 0 16px !important; padding:0 0 12px !important; border-bottom:3px solid var(--brand-primary) !important; color:#000 !important; font-family:var(--font-heading) !important; font-size:var(--text-2xl) !important; font-weight:400 !important; line-height:1.28 !important; }
#vgcom section > div { margin:0 0 10px !important; }
#vgcom section > div > label {
  box-sizing:border-box !important; display:grid !important; grid-template-columns:minmax(0, 1fr) 34px !important;
  align-items:center !important; gap:18px !important; width:100% !important; min-height:76px !important; padding:18px 20px !important;
  background:#fff !important; border:1px solid rgba(0,0,0,0.16) !important; border-left:5px solid var(--brand-primary) !important;
  border-radius:var(--radius-md) !important; color:#000 !important; cursor:pointer !important;
  transition:border-color 160ms ease, box-shadow 160ms ease, transform 160ms ease !important;
}
#vgcom section > div > label:hover, #vgcom section > div > label:focus-within { border-color:var(--brand-secondary) !important; border-left-color:var(--brand-secondary) !important; box-shadow:0 8px 18px rgba(0,0,0,0.08) !important; transform:translateY(-1px) !important; }
#vgcom section > div > label p { margin:0 !important; color:#000 !important; font-family:var(--font-body) !important; font-size:var(--text-base) !important; line-height:1.55 !important; }
#vgcom section > div > label p > span { display:block !important; margin-bottom:4px !important; color:#000 !important; font-size:var(--text-lg) !important; font-weight:400 !important; line-height:1.3 !important; }
#vgcom section > div > label > span { position:relative !important; display:flex !important; align-items:center !important; justify-content:center !important; width:28px !important; height:28px !important; }
#vgcom input[type="checkbox"] { position:relative !important; z-index:2 !important; opacity:1 !important; clip:auto !important; width:22px !important; height:22px !important; margin:0 !important; accent-color:var(--brand-secondary) !important; cursor:pointer !important; }
/* The native (accent-colored) checkbox IS the control; hide the vendor's
   decorative spans that were overlapping it and hiding the selected state. */
#vgcom .checkmark, #vgcom .bg { display:none !important; }

#vgcomo { width:100% !important; border-collapse:separate !important; border-spacing:0 !important; margin:28px 0 !important; overflow:hidden !important; border:1px solid rgba(0,0,0,0.16) !important; border-radius:var(--radius-md) !important; background:#fff !important; }
#vgcomo th, #vgcomo td { padding:14px 16px !important; border-bottom:1px solid rgba(0,0,0,0.12) !important; color:#000 !important; font-family:var(--font-body) !important; font-size:var(--text-sm) !important; line-height:1.45 !important; vertical-align:middle !important; }
#vgcomo thead th, #vgcomo thead td, #vgcomo .vgsection td { background:var(--brand-primary) !important; color:var(--on-primary) !important; }
#vgcomo a { color:var(--brand-secondary) !important; text-decoration:none !important; }
#vgcomo .pg-has-checkmark img { width:18px !important; height:18px !important; }
@media (max-width:760px) {
  #vgcom > input[type="submit"] { position:static !important; width:100% !important; margin-bottom:20px !important; }
  #vgcom section > div > label { grid-template-columns:minmax(0, 1fr) 28px !important; gap:12px !important; padding:16px !important; }
  #vgcomo { display:block !important; overflow-x:auto !important; }
}


/* ============================================================================
   26. GIFT DIAGRAM / VIDEO POPUP  (#blankets overlay + #popped lightbox)
   ============================================================================ */
body.overlay-open { overflow:hidden !important; }
#vgbody #blankets { box-sizing:border-box !important; inset:0 !important; width:100vw !important; height:100vh !important; background:rgba(0,0,0,0.58) !important; z-index:9000 !important; }
#vgbody #blankets[style*="display: block"], #vgbody #blankets[style*="display:block"] { display:flex !important; align-items:center !important; justify-content:center !important; padding:24px !important; }
#vgbody #popped {
  box-sizing:border-box !important; top:50% !important; left:50% !important; width:min(900px, calc(100vw - 48px)) !important;
  max-width:900px !important; margin:0 !important; padding:18px !important; background:#fff !important;
  border:1px solid rgba(0,0,0,0.14) !important; border-radius:var(--radius-md) !important;
  box-shadow:0 24px 70px rgba(0,0,0,0.32) !important; transform:translate(-50%, -50%) !important; z-index:9001 !important;
}
#vgbody #popped[style*="display: block"], #vgbody #popped[style*="display:block"] { display:block !important; }
#vgbody #popped #popped_close { position:static !important; display:block !important; height:0 !important; }
#vgbody #close_popped {
  position:absolute !important; top:-18px !important; right:-18px !important; box-sizing:border-box !important;
  width:44px !important; height:44px !important; max-width:none !important; max-height:none !important; padding:7px !important;
  background:#fff !important; border:2px solid #000 !important; border-radius:50% !important;
  box-shadow:0 8px 18px rgba(0,0,0,0.28) !important; cursor:pointer !important; object-fit:contain !important; z-index:2 !important;
}
#vgbody #close_popped:hover, #vgbody #close_popped:focus { background:var(--brand-primary) !important; }
#vgbody #popped iframe, #vgbody #popped video {
  display:block !important; width:100% !important; max-width:100% !important; aspect-ratio:16 / 9 !important;
  height:auto !important; min-height:0 !important; margin:0 !important; background:#fff !important; border:0 !important; border-radius:4px !important;
}
@media (max-width:760px) {
  #vgbody #blankets[style*="display: block"], #vgbody #blankets[style*="display:block"] { padding:14px !important; }
  #vgbody #popped { width:calc(100vw - 28px) !important; padding:12px !important; }
  #vgbody #close_popped { top:-14px !important; right:-10px !important; width:38px !important; height:38px !important; padding:6px !important; }
}


/* ============================================================================
   27. HOMEPAGE REDESIGNED SECTIONS
   ============================================================================ */
/* -- Society (modern) -- */
.society-section-modern { background:linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%); padding:var(--space-20) 0; position:relative; overflow:hidden; }
.society-section-modern::before { content:''; position:absolute; top:-50%; right:-30%; width:60%; height:150%; background:radial-gradient(circle, rgba(255,255,255,0.4), transparent); pointer-events:none; }
.society-content-wrapper { display:grid; gap:var(--space-12); align-items:center; position:relative; z-index:2; }
@media (min-width:1024px) { .society-content-wrapper { grid-template-columns:1fr 1fr; } }
.society-text-content { order:2; }
@media (min-width:1024px) { .society-text-content { order:1; } }
.society-heading { font-size:var(--text-4xl); font-weight:var(--heading-weight); color:var(--text-primary); margin-bottom:var(--space-6); line-height:1.2; }
.society-description { font-size:var(--text-lg); color:var(--text-secondary); line-height:1.8; margin-bottom:var(--space-8); }
.society-cta-button {
  display:inline-flex; align-items:center; gap:var(--space-3); padding:var(--space-4) var(--space-8);
  background:var(--brand-primary); color:var(--on-primary); border-radius:var(--radius-full); font-weight:600; text-decoration:none;
  box-shadow:var(--shadow-md); transition:transform 300ms var(--ease-out), box-shadow 300ms var(--ease-out), background-color 300ms var(--ease-out), color 300ms var(--ease-out);
}
.society-cta-button:hover { transform:translateY(-2px); box-shadow:var(--shadow-xl); background:var(--brand-secondary); color:var(--on-secondary); text-decoration:none; }
.society-cta-button span { transition:transform 300ms var(--ease-out); }
.society-cta-button:hover span { transform:translateX(4px); }
.society-image-wrapper { order:1; position:relative; }
@media (min-width:1024px) { .society-image-wrapper { order:2; } }
.society-image-container { position:relative; border-radius:var(--radius-3xl); overflow:hidden; box-shadow:var(--shadow-2xl); transform:rotate(3deg); transition:transform 400ms var(--ease-out); }
.society-image-container:hover { transform:rotate(0deg) scale(1.02); }
.society-image-container img { width:100%; height:auto; display:block; }
.society-image-overlay { position:absolute; bottom:0; left:0; right:0; background:linear-gradient(to top, rgba(0,0,0,0.7), transparent); padding:var(--space-8) var(--space-6) var(--space-6); color:#fff; }
.society-image-overlay h3 { font-size:var(--text-xl); font-weight:600; margin:0; color:#fff; }

/* -- Tip (modern) -- */
.tip-section-modern { background:#fff; padding:var(--space-16) 0; }
.tip-container { max-width:900px; margin:0 auto; text-align:center; }
.tip-header { display:inline-flex; align-items:center; gap:var(--space-3); background:var(--amber-50); padding:var(--space-3) var(--space-6); border-radius:var(--radius-full); margin-bottom:var(--space-8); }
.tip-icon { width:32px; height:32px; background:var(--amber-500); border-radius:50%; display:flex; align-items:center; justify-content:center; color:#fff; font-size:var(--text-lg); }
.tip-header h2 { font-size:var(--text-2xl); font-weight:600; color:var(--text-primary); margin:0; }
.tip-content-box { background:linear-gradient(135deg, #fffbeb 0%, #fef3c7 100%); border:2px solid var(--amber-200); border-radius:var(--radius-2xl); padding:var(--space-10); position:relative; overflow:hidden; }
.tip-main-content { position:relative; z-index:2; font-size:var(--text-lg); line-height:1.8; color:var(--text-secondary); }
.tip-links-section { margin-top:var(--space-8); padding-top:var(--space-8); border-top:2px dashed var(--amber-300); }
.tip-links-grid { display:flex; flex-wrap:wrap; gap:var(--space-3); justify-content:center; }
.tip-link-item { display:inline-flex; align-items:center; gap:var(--space-2); padding:var(--space-3) var(--space-5); background:#fff; border:2px solid var(--amber-400); border-radius:var(--radius-lg); color:var(--text-primary); font-weight:500; text-decoration:none; white-space:nowrap; transition:all 200ms var(--ease-out); }
.tip-link-item:hover { background:var(--amber-500); border-color:var(--amber-600); color:#fff; transform:translateY(-2px); box-shadow:var(--shadow-md); text-decoration:none; }
.tip-link-item::after { content:'\2192'; transition:transform 200ms var(--ease-out); }
.tip-link-item:hover::after { transform:translateX(3px); }

/* -- Planning (modern) -- */
.planning-section-modern { background:var(--slate-50); padding:var(--space-20) 0; }
.planning-header { text-align:center; margin-bottom:var(--space-12); }
.planning-header h2 { font-size:var(--text-4xl); font-weight:var(--heading-weight); color:var(--text-primary); margin-bottom:var(--space-4); }
.planning-header p { font-size:var(--text-lg); color:var(--text-secondary); max-width:600px; margin:0 auto; line-height:1.6; }
.planning-cards-grid { display:grid; gap:var(--space-8); margin-top:var(--space-12); }
@media (min-width:768px) { .planning-cards-grid { grid-template-columns:repeat(3, 1fr); } }
.planning-card { background:#fff; border-radius:var(--radius-2xl); overflow:hidden; text-decoration:none; color:inherit; display:flex; flex-direction:column; height:100%; position:relative; border:1px solid var(--border-light); transition:transform 300ms var(--ease-out), box-shadow 300ms var(--ease-out); }
.planning-card::before { content:''; position:absolute; top:0; left:0; right:0; height:4px; background:var(--brand-primary); transform:scaleX(0); transform-origin:left; transition:transform 300ms var(--ease-out); }
.planning-card:hover { transform:translateY(-8px); box-shadow:var(--shadow-2xl); text-decoration:none; }
.planning-card:hover::before { transform:scaleX(1); }
.planning-card-icon { padding:var(--space-8) var(--space-6) 0; font-size:48px; display:flex; align-items:center; justify-content:center; }
.planning-card-content { padding:var(--space-6); flex:1; display:flex; flex-direction:column; }
.planning-card h3 { font-size:var(--text-xl); font-weight:600; color:var(--text-primary); margin-bottom:var(--space-3); }
.planning-card p { color:var(--text-secondary); line-height:1.6; flex:1; }
.planning-card-arrow { margin-top:var(--space-4); color:var(--brand-secondary); font-weight:600; display:flex; align-items:center; gap:var(--space-2); }
.planning-card:hover .planning-card-arrow { gap:var(--space-3); }

/* -- Contact (modern) -- */
.contact-section-modern { background:linear-gradient(180deg, #fff 0%, var(--slate-50) 100%); padding:var(--space-20) 0; position:relative; }
.contact-header { text-align:center; margin-bottom:var(--space-12); }
.contact-header h2 { font-size:var(--text-4xl); font-weight:var(--heading-weight); color:var(--text-primary); margin-bottom:var(--space-4); }
.contact-header p { font-size:var(--text-lg); color:var(--text-secondary); max-width:600px; margin:0 auto; }
.contact-cards-wrapper { display:grid; gap:var(--space-8); margin-top:var(--space-8); }
@media (min-width:768px) { .contact-cards-wrapper { grid-template-columns:repeat(auto-fit, minmax(320px, 1fr)); } }
.contact-card { background:#fff; border:1px solid var(--border-light); border-radius:var(--radius-2xl); padding:var(--space-8); position:relative; overflow:hidden; transition:transform 300ms var(--ease-out), border-color 300ms var(--ease-out); }
.contact-card::before { content:''; position:absolute; inset:-2px; background:linear-gradient(135deg, var(--brand-primary), var(--brand-secondary)); border-radius:var(--radius-2xl); opacity:0; transition:opacity 300ms var(--ease-out); z-index:-1; }
.contact-card:hover { transform:translateY(-4px); border-color:transparent; }
.contact-card:hover::before { opacity:1; }
.contact-card-inner { position:relative; background:#fff; border-radius:calc(var(--radius-2xl) - 2px); padding:var(--space-8); margin:calc(-1 * var(--space-8)); z-index:1; display:flex; gap:var(--space-6); align-items:flex-start; }
.contact-avatar { width:100px; height:100px; border-radius:var(--radius-2xl); overflow:hidden; flex-shrink:0; box-shadow:var(--shadow-md); }
.contact-avatar img { width:100%; height:100%; object-fit:cover; }
.contact-info { flex:1; }
.contact-name { font-size:var(--text-xl); font-weight:700; color:var(--text-primary); margin-bottom:var(--space-2); }
.contact-title { font-size:var(--text-sm); color:var(--brand-secondary); font-weight:500; margin-bottom:var(--space-4); }
.contact-details { display:flex; flex-direction:column; gap:var(--space-2); }
.contact-detail-item { display:flex; align-items:center; gap:var(--space-3); font-size:var(--text-sm); color:var(--text-secondary); }
.contact-detail-icon { width:20px; height:20px; background:var(--slate-100); border-radius:50%; display:flex; align-items:center; justify-content:center; flex-shrink:0; font-size:12px; }
.contact-detail-item a { color:var(--text-secondary); text-decoration:none; transition:color 200ms var(--ease-out); }
.contact-detail-item a:hover { color:var(--brand-secondary); }
@media (max-width:768px) {
  .society-heading, .planning-header h2, .contact-header h2 { font-size:var(--text-3xl); }
  .society-image-container { transform:none; }
  .tip-content-box { padding:var(--space-6); }
  .planning-card-icon { font-size:36px; padding:var(--space-6) var(--space-4) 0; }
  .contact-card-inner { flex-direction:column; text-align:center; }
  .contact-avatar { margin:0 auto; }
  .contact-details { align-items:center; }
}


/* ============================================================================
   ARTICLE BODY LINKS  (client red, underlined — excludes buttons)
   ============================================================================ */
/* NOTE on inline text flow: links in copy used to render as blocks (breaking
   sentences mid-line). The cause was flex/grid on their CONTAINERS — a flex/
   grid parent "blockifies" child links regardless of any display rule on the
   link itself. The fix is upstream: #vghowworks li, #vgbenefits li and
   .vgbequestformlink are now display:block (see sections 12 & 17), so links
   flow inline normally. No per-link display override is needed here. */
#vgbody.pg-article p a:not(.pg-button):not(.pg-button-item),
#vgbody.pg-article li a:not(.pg-button):not(.pg-button-item),
#vgbody.pg-article dd a:not(.pg-button):not(.pg-button-item),
#vgbody.pg-article blockquote a:not(.pg-button):not(.pg-button-item),
#vghowworks a, .pg-important-related-topics a {
  color:var(--brand-secondary) !important; text-decoration:underline !important;
  text-decoration-color:currentColor !important; text-underline-offset:3px !important; text-decoration-thickness:1.5px !important;
}
#vgbody.pg-article p a:not(.pg-button):not(.pg-button-item):hover,
#vgbody.pg-article li a:not(.pg-button):not(.pg-button-item):hover,
#vgbody.pg-article dd a:not(.pg-button):not(.pg-button-item):hover,
#vgbody.pg-article blockquote a:not(.pg-button):not(.pg-button-item):hover,
#vghowworks a:hover, .pg-important-related-topics a:hover {
  color:var(--brand-secondary-dark) !important; text-decoration-color:currentColor !important;
}
#vgbody.pg-article p a:not(.pg-button):not(.pg-button-item):focus-visible,
#vghowworks a:focus-visible, .pg-important-related-topics a:focus-visible {
  border-radius:3px !important; outline:2px solid var(--brand-secondary) !important; outline-offset:3px !important;
}


/* ============================================================================
   28. ACCESSIBILITY, MOTION & PRINT
   ============================================================================ */
*:focus { outline:2px solid var(--brand-primary); outline-offset:2px; }
*:focus:not(:focus-visible) { outline:none; }
.pg-skip-link { position:absolute; top:-40px; left:0; background:var(--brand-primary); color:var(--on-primary); padding:var(--space-2) var(--space-4); text-decoration:none; border-radius:var(--radius-md); z-index:var(--z-tooltip); }
.pg-skip-link:focus { top:var(--space-2); left:var(--space-2); }

@media (prefers-contrast:high) {
  :root { --border-light:var(--border-strong); --text-secondary:var(--text-primary); }
  #vghowworks li, .pg-important-related-topics, .pg-important-related-topics li { border-color:var(--text-primary); }
}
@media (prefers-reduced-motion:reduce) {
  *, *::before, *::after { animation-duration:0.01ms !important; animation-iteration-count:1 !important; transition-duration:0.01ms !important; scroll-behavior:auto !important; }
  #vghowworks li:hover, .pg-important-related-topics li:hover { transform:none; }
}

@media print {
  .pg-header, .pg-side-nav, .pg-mobile-menu-toggle, .pg-pre-footer, .pg-is-footer,
  .vgprinthide, .banner-carousel .arrow { display:none !important; }
  .pg-content-wrapper, .pg-body, #vgbody { font-size:12pt; line-height:1.5; color:#000; background:#fff; }
  .pg-main-content { max-width:100%; margin:0; padding:0; }
  .pg-page-card { border:1px solid #ccc; break-inside:avoid; }
  a { color:#000; text-decoration:underline; }
  a[href^="http"]:after { content:" (" attr(href) ")"; }
}


/* ============================================================================
   29. RESPONSIVE FINE-TUNING
   (Type scales fluidly via clamp(), so only structural tweaks remain.)
   ============================================================================ */
@media (max-width:1024px) {
  .pg-columns { grid-template-columns:1fr; }
  .pg-has-intro .pg-columns { display:block; }
  .pg-has-intro .pg-is-3 { margin-bottom:var(--space-6); order:1; }
  .pg-has-intro .pg-is-9 { order:2; }
}
@media (max-width:768px) {
  .pg-container { padding:0 var(--space-4); }
  .pg-section { padding:var(--space-12) 0; }
  .pg-page-card { padding:var(--space-4); }
  .pg-has-pag .pg-columns { grid-template-columns:1fr; text-align:center; gap:var(--space-4); }
  .pg-society-inner { grid-template-columns:1fr; text-align:center; }
}
@media (max-width:480px) {
  .pg-page-card-outer { grid-template-columns:1fr; }
  #vgnext ul { grid-template-columns:1fr; }
  .pg-has-ways-of-giving .pg-columns { grid-template-columns:1fr; }
}


/* ============================================================================
   30. FIXED-HEADER OFFSET  (inner pages)
   The client's Squarespace header is position:fixed (~90px tall). The SQS
   runtime that normally pads the body below it was dropped on the VPS, so inner
   pages slid up under the header and clipped the page title. Push the inner-page
   main section clear of the header.
     • Inner pages start with  .pg-section.pg-has-main-content  → offset them.
     • Homepage starts with  .pg-has-main-content  (no .pg-section) → left as-is.
   --pg-header-offset is set to the exact header height by the menu script
   (pg-menu.js / template); the px values below are safe fallbacks if that
   script isn't loaded.
   ============================================================================ */
html { scroll-padding-top: calc(var(--pg-header-offset, 96px) + var(--space-2)); }

.pg-content-wrapper > .pg-section.pg-has-main-content {
  padding-top: calc(var(--pg-header-offset, 96px) + var(--space-6));
}
@media (max-width:1024px) {
  .pg-content-wrapper > .pg-section.pg-has-main-content {
    padding-top: calc(var(--pg-header-offset, 84px) + var(--space-5));
  }
}

/* ============================================================================
   31. CLIENT BRAND OVERRIDES
   Per-client look layered on top of the section 1 tokens:
     • Headings: brand-colored (via --brand-primary), bold.
     • Warm neutral surfaces for soft backgrounds.
   Adjust these values (or remove this block) per client.
   ============================================================================ */
/* Headings inherit the client theme's color (no brand-color override here). */
/* Card + gift-plan titles maroon too, for consistency. */
.pg-page-card-title,
.pg-gift-plans .pg-page-card-title,
.pg-page-card-outer.pg-page-card-cols .pg-page-card-title { color: var(--brand-primary) !important; }

/* Warm neutral surfaces echoing the site's #d8cec7 taupe (kept subtle). */
:root {
  --bg-secondary: #f6f2ef;
  --bg-tertiary:  #efe8e3;
  --bg-muted:     #e2d8d1;
}


/* ============================================================================
   HOMEPAGE CTA BUTTON FIXES
   - Filled .pg-button text must stay readable on the brand fill. The generic
     ".pg-content-wrapper a" link color (0,1,1) was beating ".pg-button" (0,1,0),
     turning button text brand-secondary (red-on-red on dark primaries).
   - Homepage CTAs are inline pills; never let a flex/grid parent stretch them
     edge-to-edge.
   ============================================================================ */
.pg-content-wrapper a.pg-button:not(.pg-button-outline):not(.pg-button-ghost) { color:var(--on-primary) !important; -webkit-text-fill-color:var(--on-primary) !important; }
.pg-content-wrapper a.pg-button:not(.pg-button-outline):not(.pg-button-ghost):hover { color:var(--on-secondary) !important; -webkit-text-fill-color:var(--on-secondary) !important; }
.pg-has-society .pg-button, .pg-has-society .society-cta-button,
.society-section-modern .society-cta-button,
.pg-has-pag a, .pg-has-pag .pg-button {
  width:auto !important; max-width:100%; align-self:flex-start;
}

/* ============================================================================
   32. PLAN-A-GIFT as a contained card
   The section markup carries .pg-has-primary-background-color, which paints the
   whole band edge-to-edge. Make it a centered card at the container width
   (matching Tip of the Week), with readable white text and a contrasting CTA.
   ============================================================================ */
.pg-has-pag {
  background:transparent !important;            /* cancel the full-bleed red band */
  color:var(--text-primary) !important;
  padding:var(--space-10) var(--space-4) !important;
  margin:var(--space-8) 0 !important;
  overflow:visible !important;
}
.pg-has-pag::before { display:none !important; } /* remove the diagonal band overlay */
.pg-has-pag > .pg-container {
  max-width:var(--container-max);
  background:var(--brand-primary);
  color:var(--on-primary);
  border-radius:var(--radius-2xl);
  padding:var(--space-10) clamp(var(--space-6), 4vw, var(--space-12));
  box-shadow:var(--shadow-md);
}
/* Readable heading + copy on the red card (beats section 24's black title rule). */
.pg-has-pag .pg-section-title,
.pg-has-pag .pg-section-title.pg-text-align-center,
.pg-has-pag .pg-section-title span,
.pg-has-pag p, .pg-has-pag .pg-lede {
  color:var(--on-primary) !important; -webkit-text-fill-color:var(--on-primary) !important;
}
.pg-has-pag .fa-gift { color:var(--on-primary); }
/* The "line beside" the title: subtle white rule, no white box behind text. */
.pg-has-pag .pg-has-line-beside::before,
.pg-has-pag .pg-has-line-beside::after {
  background:linear-gradient(90deg, transparent, rgba(255,255,255,.45), transparent) !important;
}
.pg-has-pag .pg-has-line-beside span { background:transparent !important; padding:0 var(--space-4); }
/* Tidy the icon + copy spacing. */
.pg-has-pag .pg-columns { gap:var(--space-6) !important; align-items:center !important; margin-top:var(--space-6); }
/* CTA: white button with maroon text for contrast on the red card. */
.pg-has-pag a, .pg-has-pag .pg-button {
  background:#fff !important; border:1px solid #fff !important;
  color:var(--brand-primary) !important; -webkit-text-fill-color:var(--brand-primary) !important;
}
.pg-has-pag a:hover, .pg-has-pag .pg-button:hover {
  background:var(--brand-secondary) !important; border-color:var(--brand-secondary) !important;
  color:#fff !important; -webkit-text-fill-color:#fff !important;
}


/* ============================================================================
   COMPARE RESULTS TABLE (#vgcomo) — readable headers on the brand fill
   The header row (<thead>: plan-name links + the "Is this gift for you?" h2)
   and the section-divider rows (.vgsection: Outcome, Assets, ...) sit on the
   brand-primary fill. Force on-primary (white) text there — beating both the
   generic black cell color (#vgcomo td{color:#000!important}) and the red link
   color — and override -webkit-text-fill-color so links render readable too.
   Works for any brand (on-primary is black on light fills, white on dark).
   ============================================================================ */
#vgcomo thead th, #vgcomo thead td, #vgcomo .vgsection td,
#vgcomo thead th h2, #vgcomo thead h2,
#vgcomo thead a, #vgcomo .vgsection a,
#vgcomo thead th *, #vgcomo thead td *, #vgcomo .vgsection td * {
  color:var(--on-primary) !important;
  -webkit-text-fill-color:var(--on-primary) !important;
}
#vgcomo thead a, #vgcomo .vgsection a { text-decoration:underline; text-underline-offset:2px; }

/* ============================================================================
   CONSISTENT CONTENT WIDTH ACROSS PAGES
   The PG block (<main class="pg-content-wrapper">) is embedded in the host
   theme / page-builder, which can wrap it at a different width per page, leaving
   the body content off-center / inconsistent. Fix gently:
   (a) Neutralize the page-builder's per-page width ONLY on the containers that
       wrap page content (scoped via [data-elementor-type="wp-page"]) so the site
       header/footer template parts are never touched. We override only the width
       custom-properties + max-width -- no forced flex/explicit width/margins, so
       nothing collapses.
   (b) Let the PG block run full width, then the standard .pg-container centers
       content at --container-max on every page (the reference layout).
   Client- and brand-neutral; no per-site IDs. No-op on non-page-builder hosts.
   ============================================================================ */
/* (a) The page-builder wraps PG content in flex containers (e.g. e-con with
   display:flex), which size the PG block as a flex item and squish it to part
   width. Make these PAGE-content containers simple full-width BLOCKS so the
   content flows edge to edge. Scoped to page content (wp-page) so the site
   header/footer (wp-post template parts) are never touched. */
.elementor[data-elementor-type="wp-page"],
[data-elementor-type="wp-page"] .e-con {
  display: block !important;
  width: 100% !important;
  max-width: none !important;
  --width: 100% !important;
  --content-width: 100% !important;
}
/* (a2) Lift the host theme's page-container cap so PG content can reach
   --container-max (theme containers, e.g. Bootstrap .container, cap well below
   it). Add your theme's content wrapper here if it differs. */
.kadu-internal-page .container,
.blog.kadu-internal-page .container { max-width: none !important; width: 100% !important; }

/* (b) Cap + CENTER the PG block at one width (responsive). With (a) the wrapper
   is a normal block, so margin:auto centers it reliably on every page. */
.pg-content-wrapper {
  width:100% !important;
  max-width:var(--container-max) !important;
  margin-left:auto !important;
  margin-right:auto !important;
}
.pg-content-wrapper > section,
.pg-content-wrapper > .pg-section { width:100% !important; max-width:100% !important; }
.pg-content-wrapper .pg-container {
  max-width:var(--container-max) !important; margin-left:auto !important; margin-right:auto !important;
}

/* ---- "Watch and Learn" gift video: center the video/diagram/logo; the
   Watch & Learn BUTTON is left-aligned (not centered). ---- */
#vggiftdiag { display:flex; flex-direction:column; align-items:center; justify-content:center; }
#vggiftdiag .giftvideo,
#vggiftdiag iframe.giftvideo,
#vggiftdiag img#vgdiagram,
#vggiftdiag .vggiftdiag_logo {
  margin-left:auto !important; margin-right:auto !important; max-width:100%;
}
#vggiftdiag .pg-button-row { display:flex; justify-content:flex-start; text-align:left; align-self:flex-start; }
/* ---- Gift-video pop-up (#blankets overlay + #popped modal) ----
   The vendor markup positions the modal with left:50% and a fixed
   margin-left:-320px, which only centers a 640px-wide box and overflows on
   small screens. Center it on both axes via transform and make it responsive. */
body.overlay-open { overflow:hidden; }                /* lock scroll while open */
#vgbody #blankets { position:fixed !important; top:0; left:0; width:100%; height:100%; }
#vgbody #popped {
  position:fixed !important;
  top:50% !important;
  left:50% !important;
  transform:translate(-50%, -50%) !important;
  margin-left:0 !important;
  width:auto !important;
  max-width:min(92vw, 720px) !important;
}
#vgbody #popped iframe,
#vgbody #popped #vgpgv_p {
  display:block;
  width:640px !important;
  max-width:100% !important;
  height:auto !important;
  aspect-ratio:16 / 9 !important;
}
#vgbody #popped #close_popped { max-height:none !important; }

/* ============================================================================
   CONTACT PAGE — staff cards (.pg-contacts / .pg-contact-item)
   Scoped under #vgbody so it OUTRANKS the vendor rule
   "#vgbody ul{list-style-type:disc!important}" (which was showing bullets and
   adding indent). Clean uniform cards: circular avatar, brand-colored name,
   no bullets, empty rows collapsed. Brand-neutral (uses section 1 tokens).
   ============================================================================ */
#vgbody .pg-contacts {
  display:grid !important;
  grid-template-columns:repeat(auto-fit, minmax(260px, 1fr)) !important;
  gap:var(--space-6) !important;
  margin:var(--space-10) 0 0 !important;
  align-items:stretch !important;
  list-style:none !important; padding:0 !important;
}
#vgbody .pg-contact-item,
#vgbody .pg-contact-item.pg-has-img {
  display:flex !important; flex-direction:column !important; align-items:center !important;
  gap:0 !important; width:100% !important; height:100% !important; text-align:center !important;
  background:var(--bg-primary) !important;
  border:1px solid var(--border-light) !important; border-top:4px solid var(--brand-primary) !important;
  border-radius:var(--radius-2xl) !important;
  padding:var(--space-8) var(--space-6) !important;
  box-shadow:var(--shadow-sm) !important;
  transition:transform 200ms var(--ease-out), box-shadow 200ms var(--ease-out), border-color 200ms var(--ease-out) !important;
}
#vgbody .pg-contact-item:hover { transform:translateY(-4px) !important; box-shadow:var(--shadow-lg) !important; border-color:var(--brand-primary) !important; }
#vgbody .pg-contact-item .pg-img-wrap {
  width:128px !important; height:128px !important; flex:0 0 128px !important;
  margin:0 0 var(--space-5) !important;
  border-radius:var(--radius-full) !important; overflow:hidden !important;
  box-shadow:var(--shadow-md) !important;
  outline:3px solid color-mix(in srgb, var(--brand-primary) 22%, transparent) !important; outline-offset:3px !important;
}
#vgbody .pg-contact-item .pg-img-wrap img { width:100% !important; height:100% !important; object-fit:cover !important; object-position:center 25% !important; margin:0 !important; }
/* Kill the vendor disc bullets + their indent decisively (higher specificity). */
#vgbody .pg-contact-item ul { list-style:none !important; margin:0 !important; padding:0 !important; width:100% !important; }
#vgbody .pg-contact-item ul li {
  list-style:none !important; margin:0 0 var(--space-1) !important; padding:0 !important;
  line-height:1.5 !important; font-size:var(--text-sm) !important; color:var(--text-secondary) !important;
}
#vgbody .pg-contact-item ul li::marker { content:"" !important; }
#vgbody .pg-contact-item ul li:empty { display:none !important; }   /* collapse blank title / spacers */
#vgbody .pg-contact-item .pg-contact-name {
  font-family:var(--font-heading) !important; font-weight:700 !important;
  font-size:var(--text-xl) !important; line-height:1.25 !important;
  color:var(--brand-primary) !important; margin:0 0 var(--space-1) !important;
}
#vgbody .pg-contact-item .pg-contact-title { color:var(--brand-secondary) !important; font-weight:600 !important; font-size:var(--text-sm) !important; margin:0 0 var(--space-3) !important; }
#vgbody .pg-contact-item .pg-contact-orgname { font-weight:600 !important; color:var(--text-primary) !important; margin-top:var(--space-2) !important; }
#vgbody .pg-contact-item .pg-contact-email a { color:var(--brand-secondary) !important; font-weight:600 !important; text-decoration:none !important; overflow-wrap:break-word !important; }
#vgbody .pg-contact-item .pg-contact-email a:hover { text-decoration:underline !important; }
#vgbody .pg-contact-item .pg-contact-phone { color:var(--text-secondary) !important; }
@media (max-width:768px) { #vgbody .pg-contacts { grid-template-columns:1fr !important; } }


/* ============================================================================
   LIST-BULLET CLEANUP (Next steps + PG footer modules)
   The vendor base forces #vgbody ul{list-style:disc!important}; the Next list
   and the PG footer modules are styled blocks, not bulleted prose, so kill the
   discs there. Higher specificity (#vgbody #vgnext) beats the vendor rule;
   intentional copy bullets elsewhere are untouched.
   ============================================================================ */
#vgbody #vgnext ul, #vgbody #vgnext li,
.pg-pre-footer ul, .pg-pre-footer li,
.pg-is-footer ul, .pg-is-footer li { list-style:none !important; }
#vgbody #vgnext ul li::marker, .pg-pre-footer li::marker, .pg-is-footer li::marker { content:"" !important; }
/* ============================================================================
   SAMPLE GIFT LANGUAGE page  (section.pg-language-block > h2 + p + blockquote)
   Cleaner layout: each gift type is a section separated by a hairline; the
   legal wording sits in a clear, copy-ready callout (brand-tinted, accent
   border, labeled "Suggested language"). Brand-neutral (section 1 tokens).
   ============================================================================ */
#vgbody .pg-language-block { margin:var(--space-8) 0 0; padding-top:var(--space-8); border-top:1px solid var(--border-light); }
#vgbody .pg-language-block:first-of-type { margin-top:var(--space-6); padding-top:0; border-top:0; }
#vgbody .pg-language-block > h2 { margin:0 0 var(--space-3); }
#vgbody .pg-language-block > p  { margin:0 0 var(--space-4); color:var(--text-secondary); }
#vgbody .pg-language-block blockquote {
  margin:0; padding:var(--space-5) var(--space-6);
  background:color-mix(in srgb, var(--brand-primary) 5%, #fff);
  border:1px solid var(--border-light); border-left:4px solid var(--brand-primary);
  border-radius:var(--radius-lg);
  color:var(--text-primary); font-family:var(--font-body); font-size:var(--text-base);
  font-weight:400; line-height:1.75;
}
#vgbody .pg-language-block blockquote::before {
  content:"Suggested language"; display:block;
  font-family:var(--font-heading); font-size:var(--text-xs); font-weight:700;
  letter-spacing:.08em; text-transform:uppercase; color:var(--brand-primary);
  margin-bottom:var(--space-2);
}
#vgbody .pg-language-block blockquote > :last-child { margin-bottom:0; }
/* Intro bullet list above the sections: tidy spacing */
#vgbody > ul { margin:0 0 var(--space-6); }
#vgbody > ul > li { margin-bottom:var(--space-2); line-height:1.6; }
/* ============================================================================
   LINK-CARD BUTTONS without .pg-page-card  (e.g. Legislation page)
   Markup: .pg-page-card-outer > article > a(no .pg-page-card) > p.pg-button.
   Section 24 only styles .pg-page-card .pg-button, so these fell back to the
   vendor's BLUE default. Force the client colors + a clean pill here, scoped so
   the regular .pg-page-card buttons are untouched. Brand-neutral.
   ============================================================================ */
#vgbody .pg-page-card-outer article > a:not(.pg-page-card) { display:inline-block; text-decoration:none !important; }
#vgbody .pg-page-card-outer article > a:not(.pg-page-card) > .pg-button {
  box-sizing:border-box; display:inline-flex !important; align-items:center; justify-content:center; gap:10px;
  width:fit-content; max-width:100%; min-height:50px; margin:var(--space-4) 0 0; padding:13px 30px;
  background:var(--brand-primary) !important; border:1px solid var(--brand-primary) !important;
  border-radius:var(--radius-md) !important; box-shadow:none !important;
  color:var(--on-primary) !important; -webkit-text-fill-color:var(--on-primary) !important;
  font-family:var(--font-button) !important; font-size:var(--text-base) !important; font-weight:600 !important;
  letter-spacing:.02em !important; line-height:1 !important; text-decoration:none !important; cursor:pointer;
  transition:background-color 160ms var(--ease-out), border-color 160ms var(--ease-out), transform 160ms var(--ease-out);
}
#vgbody .pg-page-card-outer article > a:not(.pg-page-card):hover > .pg-button {
  background:var(--brand-secondary) !important; border-color:var(--brand-secondary) !important;
  color:#fff !important; -webkit-text-fill-color:#fff !important; transform:translateY(-1px);
}
#vgbody .pg-page-card-outer article > a:not(.pg-page-card) > .pg-button span { margin:0 !important; color:currentColor !important; transition:transform 160ms var(--ease-out); }
#vgbody .pg-page-card-outer article > a:not(.pg-page-card):hover > .pg-button span { transform:translateX(3px); }
/* ============================================================================
   HOMEPAGE ANNOUNCEMENT BANNER  (#alert.pg-alert)
   The page ships a bland neutral .pg-alert override (!important). Make it a
   modern brand "pill" announcement: gradient fill, NEW badge, arrow, hover
   lift + subtle shine. The #alert id out-ranks the page's class !important.
   Brand-neutral (section 1 tokens).
   ============================================================================ */
#alert.pg-alert {
  display:flex !important; flex-wrap:wrap; align-items:center; justify-content:center; gap:6px 14px;
  width:fit-content; max-width:min(760px, 92%); margin:var(--space-8) auto !important;
  padding:14px 26px !important;
  background:linear-gradient(135deg, var(--brand-primary), var(--brand-secondary)) !important;
  border:0 !important; border-radius:var(--radius-full) !important;
  box-shadow:0 12px 30px -10px color-mix(in srgb, var(--brand-primary) 60%, transparent) !important;
  color:#fff !important; position:relative; overflow:hidden;
  transition:transform 220ms var(--ease-out), box-shadow 220ms var(--ease-out);
}
#alert.pg-alert:hover { transform:translateY(-2px); box-shadow:0 18px 42px -12px color-mix(in srgb, var(--brand-primary) 65%, transparent) !important; }
#alert.pg-alert::before {
  content:"NEW"; flex:none; position:relative; z-index:1;
  font-family:var(--font-button); font-size:var(--text-xs); font-weight:700; letter-spacing:.12em; line-height:1;
  color:#fff; background:rgba(255,255,255,.22); padding:6px 11px; border-radius:var(--radius-full);
}
#alert.pg-alert a {
  position:relative; z-index:1; display:inline-flex; align-items:center; gap:9px;
  color:#fff !important; -webkit-text-fill-color:#fff !important; text-decoration:none !important;
  font-family:var(--font-button); font-weight:600; font-size:var(--text-base); letter-spacing:.01em;
  margin:0 !important;
}
#alert.pg-alert a::after { content:"\2192"; font-weight:700; transition:transform 200ms var(--ease-out); }
#alert.pg-alert:hover a::after { transform:translateX(5px); }
/* subtle sweeping shine (respects reduced-motion via section 28) */
#alert.pg-alert::after {
  content:""; position:absolute; top:0; left:-50%; width:40%; height:100%; z-index:0;
  background:linear-gradient(100deg, transparent, rgba(255,255,255,.28), transparent);
  transform:skewX(-18deg); animation:pgAlertShine 5s var(--ease-out) 1.5s infinite; pointer-events:none;
}
@keyframes pgAlertShine { 0%{left:-50%} 55%,100%{left:130%} }
@media (max-width:560px){ #alert.pg-alert { padding:12px 18px !important; } #alert.pg-alert a { font-size:var(--text-sm); } }
/* ============================================================================
   ARTICLE FOOTER NAV  (.vgprinthide: Next / Contact / Back lines)
   These lines are <h3>s that mix plain text with links. The links were
   rendering at a different size/font than the surrounding heading text, so each
   line looked mismatched. Normalize the block to one clean, consistent size and
   make the links INHERIT it (font:inherit) so text + link match. Brand-neutral.
   ============================================================================ */
#vgbody .vgprinthide { margin-top:var(--space-8); padding-top:var(--space-6); border-top:1px solid var(--border-light); }
#vgbody .vgprinthide h3 {
  font-family:var(--font-body) !important; font-size:var(--text-lg) !important; font-weight:400 !important;
  line-height:1.6 !important; color:var(--text-secondary) !important; margin:0 0 var(--space-3) !important;
}
#vgbody .vgprinthide h3:last-child { margin-bottom:0 !important; }
#vgbody .vgprinthide h3 a {
  font:inherit !important; color:var(--brand-secondary) !important;
  text-decoration:underline !important; text-underline-offset:3px !important; text-decoration-thickness:1.5px !important;
}
#vgbody .vgprinthide h3 a:hover { color:var(--brand-secondary-dark) !important; }
/* ============================================================================
   PG INTENT FORMS  (#vgbody form[id^="frm_"]: stock transfer, bequest intent…)
   These ship as a <table> layout with raw inputs (size=25), so they render as
   cramped default fields. Modernize: wrap as a card, linearize the table into a
   clean stacked layout, full-width padded controls with brand focus rings,
   tidy section headers + buttons. Excludes #vgcom (compare picker). Neutral.
   ============================================================================ */
#vgbody form[id^="frm_"] {
  max-width:760px; margin:var(--space-8) 0;
  background:var(--bg-primary); border:1px solid var(--border-light);
  border-radius:var(--radius-2xl); box-shadow:var(--shadow-sm);
  padding:clamp(var(--space-6), 3vw, var(--space-10));
}
#vgbody form[id^="frm_"] #form-required-note { margin:0 0 var(--space-6); font-size:var(--text-sm); color:var(--text-tertiary); }
/* Linearize the layout table -> stacked rows */
#vgbody form[id^="frm_"] table,
#vgbody form[id^="frm_"] tbody,
#vgbody form[id^="frm_"] tr { display:block; width:100% !important; }
#vgbody form[id^="frm_"] td { display:block; width:100% !important; padding:0 !important; border:0 !important; background:transparent !important; }
#vgbody form[id^="frm_"] tr { margin-bottom:var(--space-4); }
/* Field labels */
#vgbody form[id^="frm_"] td > label,
#vgbody form[id^="frm_"] td > label strong {
  display:block; margin:0 0 var(--space-1); font-family:var(--font-heading);
  font-weight:600; font-size:var(--text-sm); color:var(--text-primary);
}
/* Controls */
#vgbody form[id^="frm_"] input[type="text"],
#vgbody form[id^="frm_"] input[type="email"],
#vgbody form[id^="frm_"] input[type="tel"],
#vgbody form[id^="frm_"] input[type="number"],
#vgbody form[id^="frm_"] input[type="date"],
#vgbody form[id^="frm_"] textarea,
#vgbody form[id^="frm_"] select {
  width:100% !important; max-width:100%; box-sizing:border-box;
  padding:12px 14px; border:1px solid var(--border-default); border-radius:var(--radius-md);
  background:#fff; color:var(--text-primary); font-family:var(--font-body); font-size:var(--text-base); line-height:1.4;
  transition:border-color 160ms var(--ease-out), box-shadow 160ms var(--ease-out);
}
#vgbody form[id^="frm_"] input:focus,
#vgbody form[id^="frm_"] textarea:focus,
#vgbody form[id^="frm_"] select:focus {
  outline:none !important; border-color:var(--brand-primary);
  box-shadow:0 0 0 3px color-mix(in srgb, var(--brand-primary) 18%, transparent);
}
#vgbody form[id^="frm_"] textarea { min-height:130px; resize:vertical; }
/* Section headers (fieldset > legend > h2, formerly in grey cells) */
#vgbody form[id^="frm_"] fieldset { border:0; margin:0; padding:0; min-width:0; }
#vgbody form[id^="frm_"] legend { display:block; width:100%; padding:0; }
#vgbody form[id^="frm_"] legend h2 {
  margin:var(--space-6) 0 var(--space-4); padding-bottom:var(--space-2);
  border-bottom:2px solid var(--brand-primary); font-size:var(--text-xl); line-height:1.2;
}
#vgbody form[id^="frm_"] tr:first-child legend h2 { margin-top:0; }
/* Radio rows */
#vgbody form[id^="frm_"] .pg-radio-input { display:flex; flex-wrap:wrap; align-items:flex-start; gap:10px; margin:var(--space-3) 0; }
#vgbody form[id^="frm_"] .pg-radio-input input[type="radio"] { width:auto !important; flex:none; margin:4px 0 0; accent-color:var(--brand-primary); }
#vgbody form[id^="frm_"] .pg-radio-input > label { flex:1; min-width:0; display:inline; margin:0; font-family:var(--font-body); font-weight:400; font-size:var(--text-base); color:var(--text-secondary); }
#vgbody form[id^="frm_"] .pg-radio-input textarea { flex-basis:100%; }
/* Buttons */
#vgbody form[id^="frm_"] button[type="submit"],
#vgbody form[id^="frm_"] button[type="reset"] {
  display:inline-flex; align-items:center; justify-content:center; min-height:50px;
  margin:var(--space-2) var(--space-3) 0 0; padding:13px 32px;
  border-radius:var(--radius-md); border:1px solid var(--brand-primary);
  font-family:var(--font-button); font-weight:600; font-size:var(--text-base); letter-spacing:.02em; cursor:pointer;
  transition:background-color 160ms var(--ease-out), border-color 160ms var(--ease-out), transform 160ms var(--ease-out), box-shadow 160ms var(--ease-out);
}
#vgbody form[id^="frm_"] button[type="submit"] { background:var(--brand-primary); color:var(--on-primary); }
#vgbody form[id^="frm_"] button[type="submit"]:hover { background:var(--brand-secondary); border-color:var(--brand-secondary); transform:translateY(-1px); box-shadow:var(--shadow-md); }
#vgbody form[id^="frm_"] button[type="reset"] { background:#fff; color:var(--brand-primary); }
#vgbody form[id^="frm_"] button[type="reset"]:hover { background:var(--bg-tertiary); }
@media (max-width:560px){ #vgbody form[id^="frm_"] { padding:var(--space-5); } #vgbody form[id^="frm_"] button[type="submit"], #vgbody form[id^="frm_"] button[type="reset"] { width:100%; margin-right:0; } }
/* ============================================================================
   PERSONAL PLANNING card grid — center it
   The vendor caps .pg-personal-planning .pg-page-card-outer at max-width:1080px
   with NO auto margins, so it sits left-of-center under the centered heading.
   Drop the cap and center it so it lines up with the rest of the section.
   (No #vgbody prefix: this homepage module lives outside #vgbody.)
   ============================================================================ */
.pg-personal-planning .pg-page-card-outer {
  max-width:none !important; margin-left:auto !important; margin-right:auto !important;
}