﻿/* ============================================================================
   PLANNED GIVING — TEMPLATE custom.css
   Multi-client design system (loads AFTER the vendor base CSS).
   Current client: United Way of Central Indiana (uwci.plannedgiving.org)
   ----------------------------------------------------------------------------
   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
   ============================================================================ */

@import url("https://fonts.googleapis.com/css2?family=League+Gothic&display=swap");


/* ============================================================================
   1. CLIENT CONFIG  —  *** THE ONLY BLOCK YOU EDIT PER CLIENT ***
   ============================================================================ */
:root {
  /* -- 1a. Brand colors ---------------------------------------------------- */
  --brand-primary:        #fdb913;   /* primary accent (UWCI gold)            */
  --brand-primary-dark:   #b8880e;   /* hover/active of primary               */
  --brand-primary-light:  #ffd766;   /* tints, soft fills                     */
  --brand-secondary:      #d72229;   /* secondary accent (UWCI red)           */
  --brand-secondary-dark: #b51d23;   /* 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:   #000000;           /* text on a primary (gold) fill         */
  --on-secondary: #ffffff;           /* text on a secondary (red) 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: Arial, Helvetica, sans-serif;
  --font-body:    Arial, Helvetica, sans-serif;
  --font-button:  "league-gothic", "League Gothic", 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.01em;
  --heading-line: 1.2;

  /* -- 1d. Layout knobs ---------------------------------------------------- */
  --container-max: 1280px;
  --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.625rem,  calc(1.36rem + 1.30vw), 2.25rem);
  --text-4xl:  clamp(1.875rem,  calc(1.45rem + 2.10vw), 2.875rem);
  --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 {
  font-family:var(--font-heading);
  font-weight:var(--heading-weight);
  line-height:var(--heading-line);
  letter-spacing:var(--heading-tracking);
  color:var(--text-primary);
  margin:0 0 var(--space-4);
}

.pg-content-wrapper h1, .pg-page-title {
  font-size:var(--text-4xl);
  margin-bottom:var(--space-6);
  position:relative;
}
.pg-content-wrapper h1::after, .pg-page-title::after {
  content:''; position:absolute; bottom:-8px; left:0;
  width:60px; height:3px; background:var(--brand-primary);
  border-radius:var(--radius-full);
}
.pg-content-wrapper h2, .pg-section-title { font-size:var(--text-3xl); }
.pg-content-wrapper h3 { font-size:var(--text-2xl); }
.pg-content-wrapper h4 { font-size:var(--text-xl); }
.pg-content-wrapper h5 { font-size:var(--text-lg); }
.pg-content-wrapper h6 { font-size:var(--text-base); }

.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:#000 !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;
}
/* Shared section heading: clean, with a short brand accent rule beneath. */
#vghowworks h2, #vgbenefits h2, #vgnext h2, .pg-important-related-topics h2 {
  color:var(--text-primary);
  font-family:var(--font-heading);
  font-size:var(--text-2xl);
  margin:0 0 var(--space-6);
  padding-bottom:var(--space-3);
  position:relative;
}
#vghowworks h2::after, #vgbenefits h2::after, #vgnext h2::after,
.pg-important-related-topics h2::after {
  content:''; position:absolute; left:0; bottom:0;
  width:48px; height:3px; border-radius:var(--radius-full); background:var(--brand-primary);
}

/* -- 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); }
.vgslide { max-height:0; overflow:hidden; transition:max-height 300ms var(--ease-in-out); background:var(--bg-primary); border-radius:var(--radius-lg); margin-bottom:var(--space-4); }
.pg-faq-open + .vgslide { max-height:1000px; transition:max-height 400ms var(--ease-in-out); }
#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:anywhere !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; width:24px !important; height:24px !important; margin:0 !important; accent-color:var(--brand-secondary) !important; cursor:pointer !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));
  }
}



































































body.overlay-open { overflow:hidden !important; }

#vgbody #blankets {
  position:fixed !important;
  box-sizing:border-box !important;
  inset:0 !important;
  width:100vw !important;
  height:100dvh !important;
  min-height:100vh !important;
  background:rgba(8,13,22,0.68) !important;
  backdrop-filter:blur(8px) saturate(120%) !important;
  -webkit-backdrop-filter:blur(8px) saturate(120%) !important;
  z-index:9000 !important;
}

#vgbody #blankets[style*="display: block"],
#vgbody #blankets[style*="display:block"] {
  display:block !important;
}

#vgbody #popped {
  position:fixed !important;
  box-sizing:border-box !important;
  top:50% !important;
  right:auto !important;
  bottom:auto !important;
  left:50% !important;
  width:min(920px, calc(100vw - 40px)) !important;
  max-width:920px !important;
  height:auto !important;
  max-height:calc(100dvh - 40px) !important;
  margin:0 !important;
  padding:clamp(10px, 1.8vw, 18px) !important;
  overflow:visible !important;
  background:#fff !important;
  border:1px solid rgba(15,23,42,0.12) !important;
  border-radius:8px !important;
  box-shadow:0 26px 80px rgba(0,0,0,0.34) !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 {
  display:block !important;
  position:absolute !important;
  top:-16px !important;
  right:-16px !important;
  left:auto !important;
  box-sizing:border-box !important;
  width:42px !important;
  height:42px !important;
  max-width:none !important;
  max-height:none !important;
  padding:8px !important;
  background:#fff !important;
  border:1px solid rgba(15,23,42,0.22) !important;
  border-radius:999px !important;
  box-shadow:0 12px 28px rgba(15,23,42,0.28) !important;
  cursor:pointer !important;
  object-fit:contain !important;
  z-index:9002 !important;
}

#vgbody #close_popped:hover,
#vgbody #close_popped:focus {
  background:var(--brand-primary, #fdb913) !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;
  max-height:calc(100dvh - 84px) !important;
  min-height:0 !important;
  margin:0 !important;
  background:#000 !important;
  border:0 !important;
  border-radius:6px !important;
}

@media (max-width:760px) {
  #vgbody #popped {
    width:min(640px, calc(100vw - 24px)) !important;
    max-height:calc(100dvh - 24px) !important;
    padding:8px !important;
  }

  #vgbody #close_popped {
    top:-12px !important;
    right:-8px !important;
    width:38px !important;
    height:38px !important;
    padding:7px !important;
  }

  #vgbody #popped iframe,
  #vgbody #popped video {
    max-height:calc(100dvh - 58px) !important;
  }
}

/* ============================================================================
   UWCI HEADER DONATE BUTTON MATCH
   Live uwci.org button: League Gothic, UWCI gold, black text, slight tracking.
   ============================================================================ */
body a.btn.btn--border.theme-btn--primary-inverse.sqs-button-element--secondary,
body a.theme-btn--primary-inverse.sqs-button-element--secondary,
body .header-actions a[href*="donate"],
body .pg-header a[href*="donate"],
body .pg-header a[href*="give"] {
  display:inline-block !important;
  padding:21.824px 36.446px !important;
  background:#fdb913 !important;
  border:0 !important;
  border-radius:6.4px !important;
  color:#000 !important;
  font-family:"League Gothic", "league-gothic", "Arial Narrow", Arial, Helvetica, sans-serif !important;
  font-size:19.84px !important;
  font-weight:400 !important;
  line-height:normal !important;
  letter-spacing:0.3968px !important;
  text-transform:none !important;
  text-decoration:none !important;
  box-shadow:none !important;
}

body a.btn.btn--border.theme-btn--primary-inverse.sqs-button-element--secondary:hover,
body a.btn.btn--border.theme-btn--primary-inverse.sqs-button-element--secondary:focus,
body a.theme-btn--primary-inverse.sqs-button-element--secondary:hover,
body a.theme-btn--primary-inverse.sqs-button-element--secondary:focus,
body .header-actions a[href*="donate"]:hover,
body .header-actions a[href*="donate"]:focus,
body .pg-header a[href*="donate"]:hover,
body .pg-header a[href*="donate"]:focus,
body .pg-header a[href*="give"]:hover,
body .pg-header a[href*="give"]:focus {
  background:#fdb913 !important;
  color:#000 !important;
  text-decoration:none !important;
  filter:brightness(.96) !important;
}

@media (max-width:760px) {
  body a.btn.btn--border.theme-btn--primary-inverse.sqs-button-element--secondary,
  body a.theme-btn--primary-inverse.sqs-button-element--secondary,
  body .header-actions a[href*="donate"],
  body .pg-header a[href*="donate"],
  body .pg-header a[href*="give"] {
    padding:16px 24px !important;
    font-size:19px !important;
  }
}
