/*
Theme Name:  Global Clinical Education
Theme URI:   https://globalclinicaleducation.com
Author:      Global Clinical Education
Description: Healthcare compliance and accreditation consulting theme for Global Clinical Education — surveys, plans of correction, HIPAA and licensure across hospitals, clinics, post-acute and behavioral health. Self-contained (no CDN or external fonts), WCAG 2.1 AA oriented.
Version:     1.1.1
Requires at least: 6.0
Requires PHP: 7.2.24
Tested up to: 6.9
License:     GPL-2.0-or-later
Text Domain: gce
Tags:        healthcare, consulting, accessibility-ready, custom-colors, block-styles
*/

/* ==========================================================================
   1. Design tokens
   Palette is contrast-checked against WCAG 2.1 AA (4.5:1 body, 3:1 large).
   ========================================================================== */
:root {
  --gce-navy:        #0f3350;
  --gce-navy-deep:   #0a2438;
  --gce-teal:        #12708c;
  --gce-teal-dark:   #0d5468;   /* 4.6:1 on white — safe for link text */
  --gce-accent:      #c2703a;   /* 4.5:1 on white */
  --gce-ink:         #1b2733;
  --gce-ink-soft:    #4a5766;   /* 7.0:1 on white */
  --gce-line:        #d9e2ea;
  --gce-bg:          #ffffff;
  --gce-bg-tint:     #f4f8fa;
  --gce-bg-deep:     #0f3350;
  --gce-success:     #1a6b45;
  --gce-focus:       #b3540f;

  --gce-max:         1160px;
  --gce-gutter:      clamp(1.15rem, 4vw, 2.5rem);
  --gce-radius:      10px;
  --gce-shadow:      0 1px 2px rgba(15, 51, 80, .06), 0 8px 24px rgba(15, 51, 80, .07);

  --gce-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --gce-font-head: Georgia, "Times New Roman", serif;
}

/* ==========================================================================
   2. Base
   ========================================================================== */
*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}

body {
  margin: 0;
  font-family: var(--gce-font);
  font-size: 1.0625rem;
  line-height: 1.65;
  color: var(--gce-ink);
  background: var(--gce-bg);
}

h1, h2, h3, h4 {
  font-family: var(--gce-font-head);
  line-height: 1.2;
  color: var(--gce-navy);
  margin: 0 0 .6em;
  font-weight: 700;
}
h1 { font-size: clamp(2rem, 4.4vw, 3.05rem); letter-spacing: -.015em; }
h2 { font-size: clamp(1.6rem, 3.1vw, 2.25rem); letter-spacing: -.01em; }
h3 { font-size: 1.25rem; }
h4 { font-size: 1.06rem; }

p, ul, ol { margin: 0 0 1.15rem; }
img { max-width: 100%; height: auto; display: block; }

a { color: var(--gce-teal-dark); text-underline-offset: .18em; }
a:hover { color: var(--gce-navy); }

/* Visible, high-contrast focus — required for Section 508 / WCAG 2.4.7 */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible {
  outline: 3px solid var(--gce-focus);
  outline-offset: 2px;
  border-radius: 3px;
}

/* ==========================================================================
   3. Layout helpers
   ========================================================================== */
.gce-wrap { max-width: var(--gce-max); margin-inline: auto; padding-inline: var(--gce-gutter); }
.gce-section { padding-block: clamp(3rem, 7vw, 5.5rem); }
.gce-section--tint { background: var(--gce-bg-tint); }
.gce-section--deep { background: var(--gce-bg-deep); color: #e8f0f5; }
.gce-section--deep h2, .gce-section--deep h3 { color: #fff; }

.gce-lede { font-size: 1.15rem; color: var(--gce-ink-soft); max-width: 62ch; }
.gce-eyebrow {
  display: inline-block;
  font-family: var(--gce-font);
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .11em;
  text-transform: uppercase;
  color: var(--gce-teal-dark);
  margin-bottom: .7rem;
}
.gce-section--deep .gce-eyebrow { color: #7fc4d8; }

.gce-grid { display: grid; gap: 1.5rem; }
@media (min-width: 640px)  { .gce-grid--2 { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 900px)  { .gce-grid--3 { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 900px)  { .gce-grid--4 { grid-template-columns: repeat(4, 1fr); } }
@media (min-width: 640px) and (max-width: 899px) { .gce-grid--3, .gce-grid--4 { grid-template-columns: repeat(2, 1fr); } }

/* Screen-reader-only, still focusable */
.screen-reader-text {
  border: 0; clip: rect(1px,1px,1px,1px); clip-path: inset(50%);
  height: 1px; width: 1px; overflow: hidden; padding: 0;
  position: absolute !important; word-wrap: normal !important;
}
.skip-link {
  position: absolute; left: -9999px; top: 0; z-index: 999;
  background: #fff; color: var(--gce-navy); padding: .8rem 1.2rem;
  font-weight: 700; box-shadow: var(--gce-shadow);
}
.skip-link:focus { left: .5rem; top: .5rem; }

/* ==========================================================================
   4. Buttons
   ========================================================================== */
.gce-btn {
  display: inline-block;
  font-weight: 600;
  font-size: 1rem;
  padding: .8rem 1.5rem;
  border-radius: 6px;
  border: 2px solid transparent;
  text-decoration: none;
  cursor: pointer;
  transition: background-color .15s ease, color .15s ease, border-color .15s ease;
}
.gce-btn--primary { background: var(--gce-teal-dark); color: #fff; }
.gce-btn--primary:hover { background: var(--gce-navy); color: #fff; }
/* Solid white button, for use on the navy hero and CTA bands. */
.gce-btn--invert { background: #fff; color: var(--gce-navy); }
.gce-btn--invert:hover { background: var(--gce-bg-tint); color: var(--gce-navy-deep); }
.gce-btn--ghost { border-color: currentColor; color: var(--gce-navy); background: transparent; }
.gce-btn--ghost:hover { background: var(--gce-navy); color: #fff; border-color: var(--gce-navy); }
/* On any dark band the ghost button has to invert, or it renders navy-on-navy. */
.gce-section--deep .gce-btn--ghost,
.gce-hero .gce-btn--ghost { color: #fff; border-color: rgba(255,255,255,.55); }
.gce-section--deep .gce-btn--ghost:hover,
.gce-hero .gce-btn--ghost:hover { background: #fff; color: var(--gce-navy); border-color: #fff; }
.gce-btn-row { display: flex; flex-wrap: wrap; gap: .85rem; margin-top: 1.6rem; }

/* ==========================================================================
   5. Header / navigation
   ========================================================================== */
.gce-topbar {
  background: var(--gce-navy-deep);
  color: #cfe0ea;
  font-size: .85rem;
}
.gce-topbar .gce-wrap { display: flex; flex-wrap: wrap; gap: .4rem 1.5rem; justify-content: space-between; padding-block: .5rem; }
.gce-topbar a { color: #cfe0ea; }
.gce-topbar a:hover { color: #fff; }

.gce-header { background: #fff; border-bottom: 1px solid var(--gce-line); position: sticky; top: 0; z-index: 60; }
.gce-header .gce-wrap { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; justify-content: space-between; padding-block: .9rem; }

/* min-width:0 lets the wordmark shrink instead of forcing the header wider than
   the viewport, which pushed the menu button off-screen on narrow phones. */
.gce-brand { display: flex; align-items: center; gap: .7rem; text-decoration: none; min-width: 0; flex: 0 1 auto; }
/* Company mark (globe inside a "G"). Fixed box so the header never reflows while
   the image loads; object-fit keeps it undistorted whatever the file's aspect. */
.gce-brand__mark {
  width: 54px; height: 54px; flex: 0 0 54px;
  object-fit: contain;
}
.gce-brand__name { font-family: var(--gce-font-head); font-weight: 700; font-size: 1.15rem; letter-spacing: -.005em; color: var(--gce-navy); line-height: 1.12; }
.gce-brand__tag { display: block; font-family: var(--gce-font); font-size: .71rem; letter-spacing: .14em; text-transform: uppercase; color: var(--gce-teal-dark); font-weight: 600; margin-top: .12em; }

.gce-nav ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .25rem; }
.gce-nav a {
  display: block; padding: .55rem .8rem; text-decoration: none;
  color: var(--gce-ink); font-weight: 600; font-size: .97rem; border-radius: 5px;
}
.gce-nav a:hover { background: var(--gce-bg-tint); color: var(--gce-navy); }
.gce-nav .current-menu-item > a,
.gce-nav .current_page_item > a { color: var(--gce-teal-dark); box-shadow: inset 0 -3px 0 var(--gce-teal-dark); border-radius: 0; }

.gce-nav-toggle {
  display: none; background: transparent; border: 2px solid var(--gce-line);
  border-radius: 6px; padding: .5rem .8rem; font: inherit; font-weight: 600;
  color: var(--gce-navy); cursor: pointer;
}
.gce-header__cta { display: inline-block; }

@media (max-width: 940px) {
  .gce-nav-toggle { display: inline-block; }
  .gce-header__cta { display: none; }
  .gce-nav { display: none; width: 100%; order: 3; }
  .gce-nav.is-open { display: block; }
  .gce-nav ul { flex-direction: column; gap: 0; padding-block: .5rem; }
  .gce-nav a { padding: .75rem .4rem; border-bottom: 1px solid var(--gce-line); border-radius: 0; }
}

@media (max-width: 520px) {
  .gce-brand__name { font-size: 1.02rem; }
  .gce-brand__mark { width: 46px; height: 46px; flex-basis: 46px; }
  .gce-topbar { font-size: .8rem; }
  .gce-topbar .gce-wrap { justify-content: flex-start; }
}

/* Nothing should ever be able to scroll the page sideways. Long unbroken
   strings — an email address, a URL pasted into content — wrap instead. */
.gce-wrap, .gce-prose { overflow-wrap: break-word; }

/* ==========================================================================
   6. Hero
   ========================================================================== */
.gce-hero {
  background:
    radial-gradient(1100px 480px at 12% -10%, rgba(18,112,140,.30), transparent 62%),
    linear-gradient(160deg, var(--gce-navy) 0%, var(--gce-navy-deep) 100%);
  color: #eaf2f7;
  padding-block: clamp(3.4rem, 8vw, 6.2rem);
}
.gce-hero h1 { color: #fff; max-width: 20ch; }
.gce-hero p { color: #cfe0ea; font-size: 1.19rem; max-width: 58ch; }
.gce-hero .gce-eyebrow { color: #7fc4d8; }
.gce-hero__inner { display: grid; gap: 2.5rem; }
@media (min-width: 980px) { .gce-hero__inner { grid-template-columns: 1.25fr .85fr; align-items: center; } }

.gce-hero__card {
  background: rgba(255,255,255,.07);
  border: 1px solid rgba(255,255,255,.16);
  border-radius: var(--gce-radius);
  padding: 1.6rem 1.5rem;
  backdrop-filter: blur(2px);
}
.gce-hero__card h2 { font-size: 1.1rem; color: #fff; margin-bottom: 1rem; }
.gce-hero__card ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .75rem; }
.gce-hero__card li { display: flex; gap: .65rem; align-items: flex-start; font-size: .98rem; color: #dce9f0; }
.gce-hero__card li::before {
  content: ""; flex: 0 0 8px; width: 8px; height: 8px; margin-top: .52rem;
  border-radius: 50%; background: #7fc4d8;
}

/* ==========================================================================
   7. Cards
   ========================================================================== */
.gce-card {
  background: #fff;
  border: 1px solid var(--gce-line);
  border-radius: var(--gce-radius);
  padding: 1.55rem;
  display: flex; flex-direction: column;
  transition: box-shadow .18s ease, transform .18s ease, border-color .18s ease;
}
.gce-card:hover { box-shadow: var(--gce-shadow); border-color: #b9cddb; transform: translateY(-2px); }
.gce-card h3 { margin-bottom: .45rem; }
.gce-card h3 a { text-decoration: none; color: inherit; }
.gce-card h3 a:hover { color: var(--gce-teal-dark); }
.gce-card p { color: var(--gce-ink-soft); font-size: .98rem; margin-bottom: 1rem; }
.gce-card__more { margin-top: auto; font-weight: 600; font-size: .95rem; text-decoration: none; }
.gce-card__more::after { content: " \2192"; }

.gce-card__icon {
  width: 44px; height: 44px; border-radius: 9px;
  background: var(--gce-bg-tint); color: var(--gce-teal-dark);
  display: grid; place-items: center; margin-bottom: 1rem;
  font-family: var(--gce-font-head); font-weight: 700; font-size: 1.05rem;
  border: 1px solid var(--gce-line);
}

/* ==========================================================================
   8. Stats / credentials
   ========================================================================== */
.gce-stat { text-align: left; }
.gce-stat__num { font-family: var(--gce-font-head); font-size: clamp(2rem, 4vw, 2.7rem); font-weight: 700; color: #fff; line-height: 1; }
.gce-stat__label { color: #b9d3e0; font-size: .95rem; margin-top: .5rem; }

.gce-chips { display: flex; flex-wrap: wrap; gap: .6rem; list-style: none; margin: 0; padding: 0; }
.gce-chips li {
  border: 1px solid var(--gce-line); border-radius: 100px;
  padding: .42rem 1rem; font-size: .89rem; font-weight: 600;
  color: var(--gce-ink-soft); background: #fff;
}

/* ==========================================================================
   9. Steps (approach)
   ========================================================================== */
.gce-step { position: relative; padding-left: 3.25rem; }
.gce-step__num {
  position: absolute; left: 0; top: 0;
  width: 2.35rem; height: 2.35rem; border-radius: 50%;
  background: var(--gce-teal-dark); color: #fff;
  display: grid; place-items: center; font-weight: 700; font-size: .98rem;
}
.gce-step h3 { margin-bottom: .35rem; }
.gce-step p { color: var(--gce-ink-soft); font-size: .98rem; margin: 0; }

/* ==========================================================================
   10. Page + article content
   ========================================================================== */
.gce-page-head { background: var(--gce-bg-tint); border-bottom: 1px solid var(--gce-line); padding-block: clamp(2.2rem, 5vw, 3.4rem); }
.gce-page-head h1 { margin-bottom: .35rem; }
.gce-breadcrumb { font-size: .88rem; color: var(--gce-ink-soft); }
.gce-breadcrumb a { color: var(--gce-ink-soft); }

.gce-prose { max-width: 72ch; }
.gce-prose h2 { margin-top: 2.4rem; }
.gce-prose h3 { margin-top: 1.8rem; }
.gce-prose ul, .gce-prose ol { padding-left: 1.35rem; }
.gce-prose li { margin-bottom: .45rem; }
.gce-prose blockquote {
  margin: 1.8rem 0; padding: 1rem 1.4rem;
  border-left: 4px solid var(--gce-teal); background: var(--gce-bg-tint);
  font-size: 1.06rem; color: var(--gce-ink);
}
.gce-prose blockquote p:last-child { margin-bottom: 0; }
.gce-prose table { width: 100%; border-collapse: collapse; margin-bottom: 1.4rem; }
.gce-prose th, .gce-prose td { border: 1px solid var(--gce-line); padding: .65rem .8rem; text-align: left; }
.gce-prose th { background: var(--gce-bg-tint); }
.gce-prose code { background: var(--gce-bg-tint); padding: .12em .4em; border-radius: 4px; font-size: .93em; }

.gce-meta { font-size: .9rem; color: var(--gce-ink-soft); margin-bottom: 1.2rem; }
.gce-meta span + span::before { content: " \00b7 "; }

/* Layout with sidebar */
.gce-with-aside { display: grid; gap: 2.5rem; }
@media (min-width: 1000px) { .gce-with-aside { grid-template-columns: 1fr 300px; align-items: start; } }
.gce-aside { border: 1px solid var(--gce-line); border-radius: var(--gce-radius); padding: 1.4rem; background: var(--gce-bg-tint); }
.gce-aside h2 { font-size: 1.05rem; }
.gce-aside ul { list-style: none; padding: 0; margin: 0; }
.gce-aside li { margin-bottom: .55rem; }

/* ==========================================================================
   11. Forms
   ========================================================================== */
.gce-form { display: grid; gap: 1.1rem; max-width: 640px; }
.gce-field label { display: block; font-weight: 600; font-size: .95rem; margin-bottom: .35rem; }
.gce-field .gce-hint { display: block; font-weight: 400; font-size: .85rem; color: var(--gce-ink-soft); margin-top: .15rem; }
.gce-field input, .gce-field select, .gce-field textarea {
  width: 100%; font: inherit; font-size: 1rem;
  padding: .68rem .8rem; border: 1px solid #b9cddb; border-radius: 6px;
  background: #fff; color: var(--gce-ink);
}
.gce-field input:hover, .gce-field textarea:hover, .gce-field select:hover { border-color: var(--gce-teal); }
.gce-required { color: #a4341f; }

.gce-notice {
  border-left: 4px solid var(--gce-teal); background: var(--gce-bg-tint);
  padding: .9rem 1.1rem; border-radius: 0 6px 6px 0; font-size: .95rem;
}
.gce-notice--warn { border-left-color: var(--gce-accent); }
.gce-notice--ok   { border-left-color: var(--gce-success); background: #edf7f1; }

/* Honeypot — off-screen for people and assistive tech, visible to bots. */
.gce-hp {
  position: absolute !important;
  left: -9999px; top: auto;
  width: 1px; height: 1px; overflow: hidden;
}

/* --------------------------------------------------------------------------
   11a. Plugin-rendered contact form
   The Contact page uses a form plugin rather than the built-in form above, so
   the plugin's markup is restyled here to match .gce-field exactly. Everything
   is scoped to .gce-form-embed so no other plugin form on the site is touched.
   Several rules need !important: the plugin ships its own frontend stylesheet
   that is enqueued after this one and already uses !important itself.
   -------------------------------------------------------------------------- */
.gce-form-embed { max-width: 640px; }

/* The plugin repeats the form title and intro, which the page header above
   already shows. Two identical headings in a row read as a rendering bug. */
.gce-form-embed .fm-header-bg,
.gce-form-embed .wdform_footer { display: none; }

.gce-form-embed .fm-form-container,
.gce-form-embed .fm-form,
.gce-form-embed .wdform_section,
.gce-form-embed .wdform_column { width: 100% !important; max-width: 100% !important; }

/* One field per row, spaced like the .gce-form grid gap. */
.gce-form-embed .wdform_row {
  position: static !important;
  margin: 0 0 1.1rem !important;
  padding: 0 !important;
  width: 100% !important;
}

.gce-form-embed .wdform-field { width: 100% !important; }

.gce-form-embed .wdform-label-section {
  width: 100% !important;
  margin-bottom: .35rem;
}

.gce-form-embed .wdform-label {
  display: inline-block;
  font-family: var(--gce-font) !important;
  font-weight: 600 !important;
  font-size: .95rem !important;
  color: var(--gce-ink) !important;
  margin: 0 !important;
}

/* The plugin nests the field hint inside the label, so it inherits the bold
   label styling above. Pulled back to match .gce-hint on the built-in form. */
.gce-form-embed .wdform-label .subtitle {
  display: block;
  font-weight: 400 !important;
  font-size: .85rem !important;
  line-height: 1.5;
  color: var(--gce-ink-soft) !important;
  margin-top: .15rem;
}

/* The hint is already a block, so the plugin's line break just adds a gap. */
.gce-form-embed .wdform-label br { display: none; }

.gce-form-embed .wdform-required {
  color: #a4341f !important;
  font-size: .95rem;
  margin-left: .15rem;
}

.gce-form-embed .wdform-element-section { width: 100% !important; }

.gce-form-embed input[type="text"],
.gce-form-embed input[type="email"],
.gce-form-embed input[type="tel"],
.gce-form-embed input[type="number"],
.gce-form-embed select,
.gce-form-embed textarea {
  width: 100% !important;
  max-width: 100% !important;
  font: inherit !important;
  font-size: 1rem !important;
  padding: .68rem .8rem !important;
  border: 1px solid #b9cddb !important;
  border-radius: 6px !important;
  background: #fff !important;
  color: var(--gce-ink) !important;
  box-shadow: none !important;
}

.gce-form-embed textarea { min-height: 150px; line-height: 1.6; resize: vertical; }

.gce-form-embed input[type="text"]:hover,
.gce-form-embed input[type="email"]:hover,
.gce-form-embed input[type="tel"]:hover,
.gce-form-embed select:hover,
.gce-form-embed textarea:hover { border-color: var(--gce-teal) !important; }

/* Focus ring must survive the plugin's own outline reset — this is the only
   visible focus indicator on the page's main interactive element. */
.gce-form-embed input:focus-visible,
.gce-form-embed select:focus-visible,
.gce-form-embed textarea:focus-visible,
.gce-form-embed button:focus-visible {
  outline: 3px solid var(--gce-focus) !important;
  outline-offset: 2px !important;
}

/* Submit button, matched to .gce-btn--primary. */
.gce-form-embed .button-submit {
  display: inline-block;
  font-family: var(--gce-font) !important;
  font-weight: 600 !important;
  font-size: 1rem !important;
  padding: .8rem 1.5rem !important;
  border-radius: 6px !important;
  border: 2px solid transparent !important;
  background: var(--gce-teal-dark) !important;
  color: #fff !important;
  cursor: pointer;
  width: auto !important;
  transition: background-color .15s ease;
}
.gce-form-embed .button-submit:hover { background: var(--gce-navy) !important; }

/* Plugin validation messages, aligned with .gce-notice. */
.gce-form-embed .fm-message {
  border-left: 4px solid var(--gce-accent) !important;
  background: var(--gce-bg-tint) !important;
  border-radius: 0 6px 6px 0 !important;
  padding: .9rem 1.1rem !important;
  font-size: .95rem !important;
  color: var(--gce-ink) !important;
}
.gce-form-embed .fm-message.fm-notice-success {
  border-left-color: var(--gce-success) !important;
  background: #edf7f1 !important;
}

/* Validation. The plugin's red row flash is switched off in theme.js; the
   message and a border on the offending field carry the error instead. The
   plugin's own rule is pure red at a fixed 13px with a stray left indent, which
   sits badly against the fields it is pointing at. */
.gce-form-embed .fm-not-filled,
.gce-form-embed .fm-not-valid-date,
.gce-form-embed .fm-error {
  width: auto !important;
  padding-left: 0 !important;
  margin-top: .35rem !important;
  font-size: .85rem !important;
  line-height: 1.5 !important;
  color: #a4341f !important;
}

/* Mark the field itself, so the message is not the only thing to go looking for.
   :has() is a progressive enhancement — without it the message still shows. */
.gce-form-embed .wdform_row:has(.fm-not-filled) input,
.gce-form-embed .wdform_row:has(.fm-not-filled) select,
.gce-form-embed .wdform_row:has(.fm-not-filled) textarea {
  border-color: #a4341f !important;
}

/* Backstop for the flash itself, in case a cached copy of the old script runs
   or the plugin writes the colour from somewhere the switch above misses. */
.gce-form-embed .wdform_row,
.gce-form-embed .wdform-field { background-color: transparent !important; }

/* ==========================================================================
   11b. Trust bar, credentials, testimonials, team
   These carry most of the "established US healthcare firm" signal, so they are
   quiet by design — no gradients, no shadows competing with the content.
   ========================================================================== */
.gce-trust {
  background: #fff;
  border-bottom: 1px solid var(--gce-line);
  padding-block: 1.5rem;
}
.gce-trust__label {
  font-size: .74rem; font-weight: 700; letter-spacing: .12em;
  text-transform: uppercase; color: var(--gce-ink-soft);
  text-align: center; margin-bottom: 1rem;
}
.gce-trust__list {
  list-style: none; margin: 0; padding: 0;
  display: flex; flex-wrap: wrap; justify-content: center;
  gap: .75rem 2.25rem;
}
.gce-trust__list li {
  font-family: var(--gce-font-head);
  font-weight: 700; font-size: 1rem; color: var(--gce-navy);
  display: flex; align-items: center; gap: .5rem;
}
.gce-trust__list li::before {
  content: ""; width: 7px; height: 7px; border-radius: 50%;
  background: var(--gce-teal); flex: 0 0 7px;
}

.gce-quote {
  background: #fff; border: 1px solid var(--gce-line);
  border-radius: var(--gce-radius); padding: 1.7rem 1.6rem;
  display: flex; flex-direction: column;
}
.gce-quote blockquote {
  margin: 0 0 1.1rem; padding: 0; border: 0; background: none;
  font-family: var(--gce-font-head); font-size: 1.08rem;
  line-height: 1.55; color: var(--gce-ink);
}
.gce-quote blockquote::before { content: "\201C"; }
.gce-quote blockquote::after  { content: "\201D"; }
.gce-quote__by {
  margin-top: auto; font-size: .9rem; color: var(--gce-ink-soft);
  border-top: 1px solid var(--gce-line); padding-top: .9rem;
}
.gce-quote__by strong { display: block; color: var(--gce-navy); font-size: .95rem; }

.gce-person__photo {
  width: 76px; height: 76px; border-radius: 50%;
  background: linear-gradient(135deg, var(--gce-navy), var(--gce-teal));
  color: #fff; display: grid; place-items: center; margin-bottom: 1rem;
  font-family: var(--gce-font-head); font-weight: 700; font-size: 1.4rem;
}
.gce-person__role { font-size: .93rem; color: var(--gce-teal-dark); font-weight: 600; margin-bottom: .1rem; }
.gce-person__cred { font-size: .85rem; color: var(--gce-ink-soft); margin-bottom: .8rem; }

/* ==========================================================================
   12. Footer
   ========================================================================== */
.gce-footer { background: var(--gce-navy-deep); color: #b9cddb; padding-block: 3.2rem 1.6rem; font-size: .95rem; }
.gce-footer h2 { color: #fff; font-size: 1.03rem; font-family: var(--gce-font); font-weight: 700; letter-spacing: .04em; text-transform: uppercase; margin-bottom: .9rem; }
.gce-footer a { color: #cfe0ea; text-decoration: none; }
.gce-footer a:hover { color: #fff; text-decoration: underline; }
.gce-footer ul { list-style: none; padding: 0; margin: 0; }
.gce-footer li { margin-bottom: .5rem; }
.gce-footer__brand p { color: #9fb9c9; max-width: 34ch; }
.gce-footer__bottom {
  margin-top: 2.4rem; padding-top: 1.4rem;
  border-top: 1px solid rgba(255,255,255,.14);
  display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; justify-content: space-between;
  font-size: .87rem; color: #9fb9c9;
}

/* ==========================================================================
   13. Pagination / misc
   ========================================================================== */
.gce-pagination { margin-top: 2.5rem; }
.gce-pagination .page-numbers {
  display: inline-block; padding: .5rem .85rem; margin-right: .3rem;
  border: 1px solid var(--gce-line); border-radius: 6px; text-decoration: none;
}
.gce-pagination .current { background: var(--gce-teal-dark); color: #fff; border-color: var(--gce-teal-dark); }

.alignleft  { float: left;  margin: .3rem 1.5rem 1rem 0; }
.alignright { float: right; margin: .3rem 0 1rem 1.5rem; }
.aligncenter { margin-inline: auto; }
.wp-caption-text { font-size: .87rem; color: var(--gce-ink-soft); }

@media print {
  .gce-header, .gce-topbar, .gce-footer, .gce-nav-toggle, .gce-btn-row { display: none !important; }
  body { color: #000; font-size: 11pt; }
}
