/* CR-TOKENS:START — generated from inc/tokens.php by bin/build-templates.php. Do not edit by hand. */
:root {
  --cr-navy: #1F4272;
  --cr-navy-deep: #16294B;
  --cr-concrete: #6B6E73;
  --cr-volt: #CCFF00;
  --cr-bone: #F4F1EA;
  --cr-white: #FFFFFF;
  --cr-frame-1: #E6E2D8;
  --cr-frame-2: #EDE9DF;
  --cr-frame-3: #E2DDD0;
  --cr-rule-on-bone: rgba(31,66,114,0.12);
  --cr-rule-on-navy: rgba(244,241,234,0.18);
  --cr-list-divider: rgba(107,110,115,0.3);
  --cr-field-border: rgba(107,110,115,0.35);
  --cr-focus-ring: rgba(31,66,114,0.15);
  --cr-dots-on-bone: rgba(31,66,114,0.045);
  --cr-dots-on-navy: rgba(244,241,234,0.06);
  --cr-body-on-navy: rgba(244,241,234,0.8);
  --cr-font: "Poppins", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --cr-type-h1: clamp(40px, 5.5vw, 72px);
  --cr-type-h1-home: clamp(48px, 7vw, 96px);
  --cr-type-h1-subpage: clamp(44px, 6vw, 80px);
  --cr-type-h2: clamp(32px, 4vw, 52px);
  --cr-type-h2-cta: clamp(34px, 4.5vw, 56px);
  --cr-type-quote: clamp(26px, 3.4vw, 44px);
  --cr-type-h3-talk: clamp(26px, 3vw, 36px);
  --cr-type-lead: clamp(17px, 1.3vw, 19px);
  --cr-type-eyebrow: 12px;
  --cr-type-chip: 11px;
  --cr-type-nav: 15px;
  --cr-type-button: 16px;
  --cr-type-button-hdr: 14px;
  --cr-container: 1200px;
  --cr-container-quote: 1000px;
  --cr-radius-card: 20px;
  --cr-radius-input: 10px;
  --cr-radius-pill: 999px;
  --cr-shadow-frame: 0 40px 80px -40px rgba(31,66,114,0.35);
  --cr-shadow-form-card: 0 40px 80px -48px rgba(31,66,114,0.3);
  --cr-shadow-tile-hover: 0 24px 48px -24px rgba(31,66,114,0.5);
  --cr-shadow-tag-hover: 0 20px 40px -24px rgba(31,66,114,0.4);
  --cr-shadow-focus-ring: 0 0 0 3px rgba(31,66,114,0.15);
  --cr-motion-reveal: .7s cubic-bezier(.2,.7,.2,1);
  --cr-motion-button: .25s ease;
  --cr-motion-tile: .45s cubic-bezier(.2,.7,.2,1);
  --cr-header-breakpoint: 1060px;
}
/* CR-TOKENS:END */

/* =========================================================================
   CitizenRad child theme — global polish.
   The page CONTENT is built entirely from native Elementor widgets (fully
   editable), each styled via its own settings + per-element custom CSS. This
   file only carries site-wide bits that can't live on a single widget:
   the scroll-reveal animation and a couple of safe resets.
   ========================================================================= */

/* ---- Scroll reveal (fade-in-up) ---------------------------------------
   Applied to elements tagged with the .cr-reveal class (added by the builder
   via the element's CSS Classes field, so it stays editable). Uses the modern
   scroll-driven `animation-timeline` where supported and falls back to fully
   visible everywhere else. Honors reduced-motion. */
@media (prefers-reduced-motion: no-preference) {
  @keyframes crRise { from { opacity: 0; transform: translateY(22px); } to { opacity: 1; transform: none; } }
  @supports (animation-timeline: view()) {
    .cr-reveal { opacity: 0; animation: crRise auto linear both; animation-timeline: view(); animation-range: entry 0% entry 22%; }
    .cr-d1 { animation-range: entry 3% entry 25%; }
    .cr-d2 { animation-range: entry 6% entry 28%; }
    .cr-d3 { animation-range: entry 9% entry 31%; }
    .cr-d4 { animation-range: entry 12% entry 34%; }
    .cr-d5 { animation-range: entry 15% entry 37%; }
  }
  @supports not (animation-timeline: view()) { .cr-reveal { opacity: 1; } }
}
@media (prefers-reduced-motion: reduce) { .cr-reveal { opacity: 1 !important; transform: none !important; } }

/* ---- Off-canvas guard -------------------------------------------------
   The mobile drawer slides in from the right (off-screen when closed). Clip
   horizontal overflow so it never creates a horizontal scrollbar. `clip` (not
   `hidden`) avoids creating a scroll container, so Elementor's sticky header is
   unaffected. */
html { overflow-x: clip; }

/* ---- Text widget paragraphs ------------------------------------------
   The design uses `margin:0` on every paragraph and controls spacing with flex
   gaps. Elementor/theme add a ~1em bottom margin to <p>, which throws off
   vertical centering (e.g. the footer "1% for the Planet" line) and inflates
   gaps. Zero it — our Text widgets are single paragraphs. */
.elementor-widget-text-editor p:only-child { margin: 0; }

/* ---- Contact email link (obfuscated) --------------------------------- */
.cr-email { cursor: pointer; }

/* ---- Small safety: keep placeholder-image chips above overlays -------- */
.cr-chip { pointer-events: none; }
