/* Geist via unpkg */
@font-face { font-family:'Geist'; src:url('https://cdn.jsdelivr.net/npm/geist@1.3.1/dist/fonts/geist-sans/Geist-Regular.woff2') format('woff2'); font-weight:400; }
@font-face { font-family:'Geist'; src:url('https://cdn.jsdelivr.net/npm/geist@1.3.1/dist/fonts/geist-sans/Geist-Medium.woff2') format('woff2'); font-weight:500; }
@font-face { font-family:'Geist'; src:url('https://cdn.jsdelivr.net/npm/geist@1.3.1/dist/fonts/geist-sans/Geist-SemiBold.woff2') format('woff2'); font-weight:600; }
@font-face { font-family:'Geist'; src:url('https://cdn.jsdelivr.net/npm/geist@1.3.1/dist/fonts/geist-sans/Geist-Bold.woff2') format('woff2'); font-weight:700; }
@font-face { font-family:'Geist'; src:url('https://cdn.jsdelivr.net/npm/geist@1.3.1/dist/fonts/geist-sans/Geist-Black.woff2') format('woff2'); font-weight:900; }

/* ── Canvas ───────────────────────────── */
html { scroll-behavior: smooth; }
body { background:#fff; color:#4A4A5A; font-family:'Geist',sans-serif; font-size:1.0625rem; }

/* ── Waveform animation ───────────────── */
.wave-line { stroke-dasharray:2000; stroke-dashoffset:2000; animation: drawLine 4s ease forwards; }
.wave-line:nth-child(2){ animation-delay:.5s; }
.wave-line:nth-child(3){ animation-delay:1s; }
.wave-line:nth-child(4){ animation-delay:1.4s; }
@keyframes drawLine { to { stroke-dashoffset:0; } }

/* ── Pulse ring ───────────────────────── */
.pulse-ring { animation: pulseRing 2.4s ease-out infinite; }
@keyframes pulseRing {
  0%   { transform:scale(1); opacity:.7; }
  70%  { transform:scale(2.2); opacity:0; }
  100% { transform:scale(2.2); opacity:0; }
}

/* ── Counter animation ────────────────── */
.counter { display:inline-block; }

/* ── Smooth fade-up on scroll ─────────── */
.reveal { opacity:0; transform:translateY(32px); transition: opacity .7s ease, transform .7s ease; }
.reveal.visible { opacity:1; transform:translateY(0); }

/* Page hero accent line (Resources mock) */
.gradient-text {
  background: linear-gradient(135deg, #6B46FF 0%, #a78bfa 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

.ontarioai-page-hero.hero-mesh:not([style*="background-color"]) {
  background-color: #0F1629;
}

/* ── Gradient mesh hero bg ────────────── */
/* background-color kept separate so Elementor lazy-load (background-image:none) still shows navy */
.hero-mesh {
  background-color: #0F1629;
  background-image:
    radial-gradient(ellipse 55% 70% at 70% 40%, rgba(107,70,255,.22) 0%, transparent 70%),
    radial-gradient(ellipse 35% 50% at 15% 85%, rgba(107,70,255,.10) 0%, transparent 65%);
}

/* Page hero (Solutions / inner pages) */
.dot-grid {
  background-image: radial-gradient(circle, rgba(255,255,255,.06) 1px, transparent 1px);
  background-size: 36px 36px;
}
.bc-sep::before {
  content: '/';
  margin: 0 8px;
  opacity: .3;
}
.ontarioai-hero-section__heading {
  font-size: clamp(2.8rem, 6vw, 5rem);
}

.ontarioai-cta-section__heading {
  font-size: clamp(2.5rem, 5vw, 4rem);
}

/* ── Table hover ──────────────────────── */
.comp-row:hover td { background:rgba(107,70,255,.06); }

/* ── Scrollbar ────────────────────────── */
::-webkit-scrollbar { width:6px; }
::-webkit-scrollbar-track { background:#0F1629; }
::-webkit-scrollbar-thumb { background:#6B46FF; border-radius:3px; }

/* ── Nav link underline ───────────────── */
.nav-link { position:relative; }
.nav-link::after { content:''; position:absolute; bottom:-2px; left:0; width:0; height:1px; background:#6B46FF; transition:width .3s; }
.nav-link:hover::after { width:100%; }

/* Desktop header dropdown (hover bridge, focus-within, optional click-open) */
.ontarioai-header-nav-dropdown {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}
.ontarioai-header-nav-dropdown-panel {
  transition: opacity 0.2s ease;
}
.relative.group:hover > .ontarioai-header-nav-dropdown,
.relative.group:focus-within > .ontarioai-header-nav-dropdown,
.relative.group.is-open > .ontarioai-header-nav-dropdown {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}
.ontarioai-header-nav-dropdown-toggle[aria-expanded="true"] {
  color: #fff;
}

/* ── Mobile header drawer ───────────────── */
.ontarioai-mobile-nav-overlay {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 0.3s ease, visibility 0.3s ease;
}
.ontarioai-mobile-nav-drawer {
  height: 100vh;
  min-height: 100dvh;
  background-color: rgb(15 22 41);
  transform: translateX(100%);
  transition: transform 0.3s ease;
}
.ontarioai-mobile-nav-body {
  min-height: 0;
}
.ontarioai-mobile-nav-menu a:hover,
.ontarioai-mobile-nav-menu button.ontarioai-mobile-nav-toggle:hover {
  color: #fff;
}
.ontarioai-mobile-nav-menu a:hover .ontarioai-mobile-nav-chevron,
.ontarioai-mobile-nav-menu button.ontarioai-mobile-nav-toggle:hover .ontarioai-mobile-nav-chevron {
  color: #6b46ff;
}
body.ontarioai-mobile-nav-open {
  overflow: hidden;
}
body.ontarioai-mobile-nav-open .ontarioai-mobile-nav-overlay {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}
body.ontarioai-mobile-nav-open .ontarioai-mobile-nav-drawer {
  transform: translateX(0);
}
.ontarioai-mobile-nav-submenu.is-open {
  display: block;
}

/* ── WP admin bar + fixed header offset ── */
body.admin-bar nav.fixed.top-0 { top: 32px; }
@media screen and (max-width: 782px) {
  body.admin-bar nav.fixed.top-0 { top: 46px; }
}

/* ── Product card border glow ─────────── */
.prod-card { transition: border-color .3s, box-shadow .3s; }
.prod-card:hover { border-color:#6B46FF; box-shadow:0 0 0 1px #6B46FF, 0 12px 40px rgba(107,70,255,.18); }

/* ── Stat counter animation ───────────── */
@keyframes countUp {
  from { opacity:0; transform:scale(.8); }
  to   { opacity:1; transform:scale(1); }
}
.stat-val { animation: countUp .6s ease both; }

/* ── Timeline dot pulse (investor / explicit tl-dot only) ── */
.tl-dot.flex-shrink-0::before,
.tl-dot.w-3::before {
  content:'';
  position:absolute;
  inset:-6px;
  border-radius:50%;
  border:1px solid #6B46FF;
  animation: pulseRing 2.4s ease-out infinite;
}

/* ── Solution detail — challenge timeline ── */
.ontarioai-solution-detail-section .challenge-tl {
  position: relative;
  padding-left: 0;
}
.ontarioai-solution-detail-section .challenge-tl::before {
  content: '';
  position: absolute;
  left: 0.34375rem;
  top: 0.6rem;
  bottom: 0.25rem;
  width: 1px;
  background: linear-gradient(to bottom, #6B46FF, transparent);
  pointer-events: none;
  transform: scaleY(0);
  transform-origin: top center;
  transition: transform 0.85s cubic-bezier(0.22, 1, 0.36, 1);
}
.ontarioai-solution-detail-section .challenge-tl-item {
  display: flex;
  align-items: flex-start;
  gap: 1rem;
  position: relative;
  z-index: 1;
}
.ontarioai-solution-detail-section .challenge-tl-item + .challenge-tl-item {
  margin-top: 1.25rem;
}
.ontarioai-solution-detail-section .challenge-tl-marker {
  flex-shrink: 0;
  width: 0.75rem;
  display: flex;
  justify-content: center;
  padding-top: 0.35rem;
}
.ontarioai-solution-detail-section .challenge-tl-dot {
  display: block;
  position: relative;
  width: 11px;
  height: 11px;
  border-radius: 50%;
  background: #6B46FF;
  box-shadow: 0 0 0 3px rgba(107, 70, 255, 0.2);
  opacity: 0;
  transform: scale(0);
  transition: opacity 0.45s ease, transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.ontarioai-solution-detail-section .challenge-tl-dot::before {
  content: '';
  position: absolute;
  inset: -6px;
  border-radius: 50%;
  border: 1px solid #6B46FF;
  opacity: 0;
  pointer-events: none;
}
.ontarioai-solution-detail-section .challenge-tl-item:nth-child(1) .challenge-tl-dot {
  transition-delay: 0.2s;
}
.ontarioai-solution-detail-section .challenge-tl-item:nth-child(2) .challenge-tl-dot {
  transition-delay: 0.45s;
}
.ontarioai-solution-detail-section .challenge-tl-item:nth-child(3) .challenge-tl-dot {
  transition-delay: 0.7s;
}
.ontarioai-solution-detail-section .challenge-tl-item:nth-child(4) .challenge-tl-dot {
  transition-delay: 0.95s;
}
.ontarioai-solution-detail-section .challenge-tl-item:nth-child(5) .challenge-tl-dot {
  transition-delay: 1.2s;
}
/* Animate when scroll-reveal parent becomes visible (or reveal disabled). */
.ontarioai-solution-detail-section .reveal.visible .challenge-tl::before,
.ontarioai-solution-detail-section .challenge-tl.is-animated::before,
.ontarioai-solution-detail-section :not(.reveal) .challenge-tl::before,
.elementor-editor-active .ontarioai-solution-detail-section .challenge-tl::before {
  transform: scaleY(1);
}
.ontarioai-solution-detail-section .reveal.visible .challenge-tl .challenge-tl-dot,
.ontarioai-solution-detail-section .challenge-tl.is-animated .challenge-tl-dot,
.ontarioai-solution-detail-section :not(.reveal) .challenge-tl .challenge-tl-dot,
.elementor-editor-active .ontarioai-solution-detail-section .challenge-tl .challenge-tl-dot {
  opacity: 1;
  transform: scale(1);
}
.ontarioai-solution-detail-section .reveal.visible .challenge-tl-dot::before,
.ontarioai-solution-detail-section .challenge-tl.is-animated .challenge-tl-dot::before,
.ontarioai-solution-detail-section :not(.reveal) .challenge-tl-dot::before,
.elementor-editor-active .ontarioai-solution-detail-section .challenge-tl-dot::before {
  animation: pulseRing 2.4s ease-out infinite;
  opacity: 1;
}

/* Platform architecture — highlighted flow cell (Guardian) */
.ontarioai-arch-cell--highlight {
  background: linear-gradient(135deg, rgba(107, 70, 255, 0.04) 0%, #fff 100%);
}

/* Platform Core Engine (#core-engine) — see assets/css/platform-core-engine.css */

/* ── Capability check / cross ─────────── */
.chk { color:#0D7A65; font-weight:700; }
.crs { color:#D0CEC8; }

/* ── Section alt bg ──────────────────── */
.alt-bg { background:#F4F3F0; }

/* ── Regulated industries tabbed panel ── */
.ontarioai-solution-regulated .ontarioai-reg-tab {
  transition: all .25s;
  border-bottom: 2px solid transparent;
  cursor: pointer;
  background: transparent;
  border-top: none;
  border-left: none;
  border-right: none;
}
.ontarioai-solution-regulated .ontarioai-reg-tab.active {
  border-bottom-color: #6B46FF;
  color: #fff;
}
.ontarioai-solution-regulated .ontarioai-reg-tab:not(.active):hover {
  border-bottom-color: rgba(107,70,255,.35);
  color: rgba(255,255,255,.8);
}
.ontarioai-solution-regulated .ontarioai-reg-panel {
  display: none;
}
.ontarioai-solution-regulated .ontarioai-reg-panel.active {
  display: block;
}
/* Elementor editor / preview: stack all tab panels so every repeater row is visible. */
.ontarioai-solution-regulated.ontarioai-reg-editor-all .ontarioai-reg-panel,
.ontarioai-solution-regulated.ontarioai-reg-editor-all .ontarioai-reg-panel[hidden] {
  display: block !important;
}
.ontarioai-solution-regulated.ontarioai-reg-editor-all .ontarioai-reg-panel + .ontarioai-reg-panel {
  border-top: 1px solid #E8E6E1;
}
.ontarioai-solution-regulated.ontarioai-reg-editor-all .reveal {
  opacity: 1 !important;
  transform: none !important;
}
.elementor-editor-active .ontarioai-solution-regulated .ontarioai-reg-panel,
.elementor-editor-active .ontarioai-solution-regulated .ontarioai-reg-panel[hidden],
.elementor-editor-preview .ontarioai-solution-regulated .ontarioai-reg-panel,
.elementor-editor-preview .ontarioai-solution-regulated .ontarioai-reg-panel[hidden] {
  display: block !important;
}
.elementor-editor-active .ontarioai-solution-regulated .reveal,
.elementor-editor-preview .ontarioai-solution-regulated .reveal {
  opacity: 1 !important;
  transform: none !important;
}

/* ── Fix custom color opacity aliases (Tailwind CDN limitation) ── */
.text-body\/50 { color: rgba(74,74,90,0.5) !important; }
.text-body\/40 { color: rgba(74,74,90,0.4) !important; }
.text-body\/30 { color: rgba(74,74,90,0.3) !important; }
.bg-body\/10   { background-color: rgba(74,74,90,0.10) !important; }
.bg-violet\/15 { background-color: rgba(107,70,255,0.15) !important; }

/* ── IR portal card ──────────────────── */
.ir-card { background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.1); }
.ir-card:hover { border-color:#6B46FF; background:rgba(107,70,255,.08); }

/* ── Hero background layers (full canvas — do not clip to bottom strip) ── */
.hero-mesh > svg.hero-mesh__canvas,
.hero-mesh > svg.hero-mesh__dots {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  max-width: none;
  transform: none;
  left: 0;
  top: 0;
}
.hero-mesh > svg.hero-mesh__canvas {
  z-index: 1;
}
.hero-mesh > svg.hero-mesh__dots {
  z-index: 2;
}
.hero-mesh > .relative.z-10 {
  z-index: 10;
}

/* ── Elementor Hero widget (match theme template layout + animations) ── */
.elementor-widget-ontarioai-hero > .elementor-widget-container,
.elementor-widget-ontarioai-problem > .elementor-widget-container,
.elementor-widget-ontarioai-products > .elementor-widget-container,
.elementor-widget-ontarioai-proof > .elementor-widget-container,
.elementor-widget-ontarioai-compare > .elementor-widget-container,
.elementor-widget-ontarioai-solutions > .elementor-widget-container,
.elementor-widget-ontarioai-solution-detail > .elementor-widget-container,
.elementor-widget-ontarioai-solution-gcc > .elementor-widget-container,
.elementor-widget-ontarioai-solution-hr > .elementor-widget-container,
.elementor-widget-ontarioai-solution-regulated > .elementor-widget-container,
.elementor-widget-ontarioai-cta > .elementor-widget-container,
.elementor-widget-ontarioai-regulatory > .elementor-widget-container,
.elementor-widget-ontarioai-resources > .elementor-widget-container,
.elementor-widget-ontarioai-resources-path > .elementor-widget-container,
.elementor-widget-ontarioai-resources-featured > .elementor-widget-container,
.elementor-widget-ontarioai-blog-research > .elementor-widget-container,
.elementor-widget-ontarioai-platform-core-engine > .elementor-widget-container,
.elementor-widget-ontarioai-platform-architecture > .elementor-widget-container,
.elementor-widget-ontarioai-platform-security > .elementor-widget-container {
  padding: 0;
  max-width: none;
}

/* Solution singles — no theme content column */
body.ontarioai-solution-single .ontarioai-solution-single,
body.ontarioai-solution-single .ontarioai-solution-single__content,
body.ontarioai-solution-single .entry-content {
  width: 100%;
  max-width: none;
  padding-left: 0;
  padding-right: 0;
}

/* Resources hub cards */
.res-hub-card,
.ontarioai-resources-hub-card {
  transition: border-color 0.3s, box-shadow 0.3s;
}

.res-hub-card:hover,
.ontarioai-resources-hub-card:hover {
  border-color: rgba(107, 70, 255, 0.45);
  box-shadow: 0 12px 40px rgba(107, 70, 255, 0.1);
}

.ontarioai-resources-card-badge {
  display: inline-flex;
  align-items: center;
  align-self: flex-start;
  width: fit-content;
  max-width: 100%;
  padding: 0.4375rem 0.875rem;
  font-size: 0.8125rem;
  font-family: "DM Mono", monospace;
  line-height: 1.35;
  border-radius: 9999px;
  box-sizing: border-box;
  text-align: left;
}

/* Resources path — section jump nav */
.ontarioai-resources-path-section .res-section-nav a.active {
  color: #6B46FF;
  border-color: #6B46FF;
  background-color: rgba(107, 70, 255, 0.07);
}

/* Elementor editor: show reveal content immediately */
.elementor-editor-active .ontarioai-resources-path-section.reveal,
.elementor-editor-active .ontarioai-resources-path-section.reveal.visible,
.elementor-editor-active .ontarioai-resources-featured-section.reveal,
.elementor-editor-active .ontarioai-resources-featured-section.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}

/* Resources featured hero card (#blog-research featured block) */
.ontarioai-resources-featured-card {
  box-shadow: 0 8px 40px rgba(0, 0, 0, 0.06);
}

.ontarioai-resources-featured-card:hover {
  border-color: rgba(107, 70, 255, 0.4);
}

/* Blog & Research widget */
.ontarioai-blog-research-section .filter-btn.active {
  color: #6B46FF;
  border-color: #6B46FF;
  background-color: rgba(107, 70, 255, 0.07);
}

.ontarioai-blog-research-section .article-card {
  transition: border-color 0.3s, box-shadow 0.3s;
}

.ontarioai-blog-research-section .article-card:hover {
  border-color: #6B46FF;
  box-shadow: 0 0 0 1px rgba(107, 70, 255, 0.3), 0 12px 40px rgba(107, 70, 255, 0.12);
}

/* Insights & Research widget (case-study layout) */
.ontarioai-insights-research-section .metric-case-card {
  transition: border-color 0.3s, box-shadow 0.3s;
}

.ontarioai-insights-research-section .metric-case-card:hover {
  border-color: rgba(107, 70, 255, 0.4);
  box-shadow: 0 8px 32px rgba(15, 22, 41, 0.08);
}

.ontarioai-insights-research-section .article-card {
  transition: border-color 0.3s, box-shadow 0.3s;
}

.ontarioai-insights-research-section .article-card:hover {
  border-color: #6B46FF;
  box-shadow: 0 0 0 1px rgba(107, 70, 255, 0.3), 0 12px 40px rgba(107, 70, 255, 0.12);
}

.ontarioai-case-studies-section .metric-case-card {
  transition: border-color 0.3s, box-shadow 0.3s;
}

.ontarioai-case-studies-section .metric-case-card:hover {
  border-color: rgba(107, 70, 255, 0.4);
  box-shadow: 0 8px 32px rgba(15, 22, 41, 0.08);
}

.ontarioai-case-studies-section .article-card {
  transition: border-color 0.3s, box-shadow 0.3s;
}

.ontarioai-case-studies-section .article-card:hover {
  border-color: #6B46FF;
  box-shadow: 0 0 0 1px rgba(107, 70, 255, 0.3), 0 12px 40px rgba(107, 70, 255, 0.12);
}

/* Case Studies — detailed card layout */
.ontarioai-case-studies-section .case-study-card {
  transition: border-color 0.3s, box-shadow 0.3s;
}

.ontarioai-case-studies-section .case-study-card:hover {
  border-color: rgba(107, 70, 255, 0.35);
  box-shadow: 0 12px 48px rgba(15, 22, 41, 0.08);
}

.ontarioai-case-studies-section .case-study-card__logo {
  box-shadow: 0 4px 16px rgba(15, 22, 41, 0.12);
}

.ontarioai-case-studies-section .case-study-card__results {
  background-color: #F4F3F0;
}

.ontarioai-case-studies-section .case-study-card__quote {
  margin: 0;
}

/* Documentation & API section */
.ontarioai-documentation-section .doc-link-card {
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.1);
  transition: border-color 0.3s, background 0.3s;
}

.ontarioai-documentation-section .doc-link-card:hover {
  border-color: #6B46FF;
  background: rgba(107, 70, 255, 0.09);
}

/* ── Products section: compact layout ── */
.ontarioai-products-section .prod-card {
  transition: border-color .3s, box-shadow .3s, transform .2s ease;
}
.ontarioai-products-grid--compact .prod-card:hover {
  transform: translateY(-2px);
}
.ontarioai-products-engine {
  background-color: rgba(107, 70, 255, 0.05);
}
.elementor-widget-ontarioai-hero .hero-mesh {
  width: 100%;
  position: relative;
  overflow: hidden;
}
/* Hold wave + stat animations until JS adds .is-hero-visible (avoids finishing while off-screen / lazy-loaded) */
.elementor-widget-ontarioai-hero .hero-mesh:not(.is-hero-visible) .wave-line {
  animation: none;
  stroke-dashoffset: 2000;
}
.elementor-widget-ontarioai-hero .hero-mesh:not(.is-hero-visible) .stat-val {
  animation: none;
  opacity: 0;
  transform: scale(0.8);
}
.elementor-widget-ontarioai-hero .hero-mesh.is-hero-visible .wave-line {
  stroke-dasharray: 2000;
  stroke-dashoffset: 2000;
  animation: drawLine 4s ease forwards;
}
.elementor-widget-ontarioai-hero .hero-mesh.is-hero-visible .wave-line:nth-of-type(2) {
  animation-delay: 0.5s;
}
.elementor-widget-ontarioai-hero .hero-mesh.is-hero-visible .wave-line:nth-of-type(3) {
  animation-delay: 1s;
}
.elementor-widget-ontarioai-hero .hero-mesh.is-hero-visible .wave-line:nth-of-type(4) {
  animation-delay: 1.4s;
}
.elementor-widget-ontarioai-hero .hero-mesh.is-hero-visible .stat-val {
  animation: countUp 0.6s ease both;
}

