/* Frigonet page (/frigonet) - styles of the Django page (base/base_frigonet.html and
   components/hero_v2.html), scoped to .fn-page so they do not leak into the BRI header/footer. */
.fn-page {
  --fn-bg-canvas: #111827;
  --fn-bg-subtle: #374151;
  --fn-border-default: #4b5563;
  --fn-fg-default: #e5e7eb;
  --fn-fg-subtle: #6b7280;
  --fn-accent-fg: #60a5fa;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji';
  background-color: var(--fn-bg-canvas);
  color: var(--fn-fg-default);
}
html:has(.fn-page) { scroll-behavior: smooth; }
.fn-page [id] { scroll-margin-top: 140px; }
.fn-page [data-aos] { pointer-events: auto !important; }
.fn-page :focus-visible { outline: 2px solid var(--fn-accent-fg); outline-offset: 2px; }
.fn-page h1, .fn-page h2, .fn-page h3, .fn-page h4, .fn-page h5 { font-family: inherit; }

/* Utility missing from the vendored Tailwind build */
.fn-page .bg-violet-500\/8 { background-color: rgb(139 92 246 / 0.08); }

/* hero_v2.html */
.fn-page .hero-grid-bg {
  background-image:
    linear-gradient(rgba(255,255,255,0.03) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,0.03) 1px, transparent 1px);
  background-size: 60px 60px;
  -webkit-mask-image: radial-gradient(ellipse 80% 50% at 50% 50%, black 40%, transparent 100%);
  mask-image: radial-gradient(ellipse 80% 50% at 50% 50%, black 40%, transparent 100%);
}
.fn-page .floating-element { position: absolute; animation: fn-float-3d 6s ease-in-out infinite; }
@keyframes fn-float-3d {
  0%, 100% { transform: translateY(0) translateZ(0) rotateX(0); }
  50% { transform: translateY(-20px) translateZ(10px) rotateX(5deg); }
}
.fn-page .transform-3d { transform-style: preserve-3d; perspective: 1000px; }
.fn-page .transform-3d:hover { transform: rotateX(-5deg) rotateY(5deg) translateZ(10px); }
.fn-page .data-flow-line { position: relative; }
.fn-page .ecosystem-node { transition: transform 0.3s ease; }
.fn-page .ecosystem-node:hover { transform: translateY(-5px); }
@media (prefers-reduced-motion: reduce) {
  .fn-page *, .fn-page *::before, .fn-page *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
  .fn-page .floating-element, .fn-page .animate-ping, .fn-page .animate-pulse, .fn-page .animate-bounce { animation: none !important; }
}

/* fn-page: Tailwind utilities re-applied over Bootstrap !important utilities (generated). */
/* Bootstrap collisions: border border-2 flex-shrink-0 flex-wrap gap-1 gap-2 gap-3 gap-4 mb-1 mb-2 mb-3 mb-4 min-w-0 mt-1 mt-2 mt-3 mx-auto opacity-75 overflow-hidden p-2 p-3 p-4 p-5 px-2 px-3 px-4 py-1 py-2 py-4 rounded shadow-lg text-center text-white top-0 */
.fn-page .top-0{top:0 !important}
.fn-page .top-1\/2{top:50% !important}
.fn-page .top-1\/3{top:33.333333% !important}
.fn-page .top-2{top:8px !important;top:.5rem !important}
.fn-page .top-7{top:28px !important;top:1.75rem !important}
.fn-page .mx-auto{margin-left:auto !important;margin-right:auto !important}
.fn-page .mb-0\.5{margin-bottom:2px !important;margin-bottom:.125rem !important}
.fn-page .mb-1{margin-bottom:4px !important;margin-bottom:.25rem !important}
.fn-page .mb-1\.5{margin-bottom:6px !important;margin-bottom:.375rem !important}
.fn-page .mb-10{margin-bottom:40px !important;margin-bottom:2.5rem !important}
.fn-page .mb-16{margin-bottom:64px !important;margin-bottom:4rem !important}
.fn-page .mb-2{margin-bottom:8px !important;margin-bottom:.5rem !important}
.fn-page .mb-3{margin-bottom:12px !important;margin-bottom:.75rem !important}
.fn-page .mb-4{margin-bottom:16px !important;margin-bottom:1rem !important}
.fn-page .mb-6{margin-bottom:24px !important;margin-bottom:1.5rem !important}
.fn-page .mb-8{margin-bottom:32px !important;margin-bottom:2rem !important}
.fn-page .ml-auto{margin-left:auto !important}
.fn-page .mt-1{margin-top:4px !important;margin-top:.25rem !important}
.fn-page .mt-2{margin-top:8px !important;margin-top:.5rem !important}
.fn-page .mt-3{margin-top:12px !important;margin-top:.75rem !important}
.fn-page .min-h-screen{min-height:100vh !important}
.fn-page .min-w-0{min-width:0px !important}
.fn-page .flex-1{flex:1 1 0% !important}
.fn-page .flex-shrink-0{flex-shrink:0 !important}
.fn-page .flex-col{flex-direction:column !important}
.fn-page .flex-wrap{flex-wrap:wrap !important}
.fn-page .gap-1{gap:4px !important;gap:.25rem !important}
.fn-page .gap-12{gap:48px !important;gap:3rem !important}
.fn-page .gap-2{gap:8px !important;gap:.5rem !important}
.fn-page .gap-3{gap:12px !important;gap:.75rem !important}
.fn-page .gap-4{gap:16px !important;gap:1rem !important}
.fn-page .gap-6{gap:24px !important;gap:1.5rem !important}
.fn-page .space-y-0\.5>:not([hidden])~:not([hidden]){margin-top:calc(.125rem * (1 - var(--tw-space-y-reverse))) !important;margin-top:.125rem !important;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse))) !important;margin-bottom:0rem !important;margin-bottom:calc(.125rem * var(--tw-space-y-reverse)) !important}
.fn-page .space-y-2>:not([hidden])~:not([hidden]){margin-top:calc(.5rem * (1 - var(--tw-space-y-reverse))) !important;margin-top:.5rem !important;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse))) !important;margin-bottom:0rem !important;margin-bottom:calc(.5rem * var(--tw-space-y-reverse)) !important}
.fn-page .space-y-2\.5>:not([hidden])~:not([hidden]){margin-top:calc(.625rem * (1 - var(--tw-space-y-reverse))) !important;margin-top:.625rem !important;margin-top:calc(.625rem * calc(1 - var(--tw-space-y-reverse))) !important;margin-bottom:0rem !important;margin-bottom:calc(.625rem * var(--tw-space-y-reverse)) !important}
.fn-page .space-y-3>:not([hidden])~:not([hidden]){margin-top:calc(.75rem * (1 - var(--tw-space-y-reverse))) !important;margin-top:.75rem !important;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse))) !important;margin-bottom:0rem !important;margin-bottom:calc(.75rem * var(--tw-space-y-reverse)) !important}
.fn-page .space-y-4>:not([hidden])~:not([hidden]){margin-top:calc(1rem * (1 - var(--tw-space-y-reverse))) !important;margin-top:1rem !important;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse))) !important;margin-bottom:0rem !important;margin-bottom:calc(1rem * var(--tw-space-y-reverse)) !important}
.fn-page .overflow-hidden{overflow:hidden !important}
.fn-page .truncate{overflow:hidden !important;text-overflow:ellipsis !important}
.fn-page .rounded{border-radius:.25rem !important}
.fn-page .rounded-2xl{border-radius:1rem !important}
.fn-page .rounded-3xl{border-radius:1.5rem !important}
.fn-page .rounded-full{border-radius:9999px !important}
.fn-page .rounded-lg{border-radius:.5rem !important}
.fn-page .rounded-sm{border-radius:.125rem !important}
.fn-page .rounded-xl{border-radius:.75rem !important}
.fn-page .border{border-width:1px !important}
.fn-page .border-2{border-width:2px !important}
.fn-page .border-b{border-bottom-width:1px !important}
.fn-page .border-amber-500\/30{border-color:#f59e0b4d !important}
.fn-page .border-amber-500\/40{border-color:#f59e0b66 !important}
.fn-page .border-blue-500\/30{border-color:#3b82f64d !important}
.fn-page .border-blue-500\/40{border-color:#3b82f666 !important}
.fn-page .border-emerald-500\/30{border-color:#10b9814d !important}
.fn-page .border-emerald-500\/40{border-color:#10b98166 !important}
.fn-page .border-gray-600{border-color:#4b5563 !important;border-color:rgba(75,85,99,var(--tw-border-opacity, 1)) !important}
.fn-page .border-gray-700{border-color:#374151 !important;border-color:rgba(55,65,81,var(--tw-border-opacity, 1)) !important}
.fn-page .border-gray-700\/50{border-color:#37415180 !important}
.fn-page .border-violet-400\/50{border-color:#a78bfa80 !important}
.fn-page .border-violet-500\/30{border-color:#8b5cf64d !important}
.fn-page .border-violet-500\/40{border-color:#8b5cf666 !important}
.fn-page .border-violet-500\/50{border-color:#8b5cf680 !important}
.fn-page .p-2{padding:8px !important;padding:.5rem !important}
.fn-page .p-2\.5{padding:10px !important;padding:.625rem !important}
.fn-page .p-3{padding:12px !important;padding:.75rem !important}
.fn-page .p-4{padding:16px !important;padding:1rem !important}
.fn-page .p-5{padding:20px !important;padding:1.25rem !important}
.fn-page .p-8{padding:32px !important;padding:2rem !important}
.fn-page .px-1\.5{padding-left:6px !important;padding-left:.375rem !important;padding-right:6px !important;padding-right:.375rem !important}
.fn-page .px-2{padding-left:8px !important;padding-left:.5rem !important;padding-right:8px !important;padding-right:.5rem !important}
.fn-page .px-3{padding-left:12px !important;padding-left:.75rem !important;padding-right:12px !important;padding-right:.75rem !important}
.fn-page .px-4{padding-left:16px !important;padding-left:1rem !important;padding-right:16px !important;padding-right:1rem !important}
.fn-page .px-6{padding-left:24px !important;padding-left:1.5rem !important;padding-right:24px !important;padding-right:1.5rem !important}
.fn-page .px-8{padding-left:32px !important;padding-left:2rem !important;padding-right:32px !important;padding-right:2rem !important}
.fn-page .py-0\.5{padding-top:2px !important;padding-top:.125rem !important;padding-bottom:2px !important;padding-bottom:.125rem !important}
.fn-page .py-1{padding-top:4px !important;padding-top:.25rem !important;padding-bottom:4px !important;padding-bottom:.25rem !important}
.fn-page .py-1\.5{padding-top:6px !important;padding-top:.375rem !important;padding-bottom:6px !important;padding-bottom:.375rem !important}
.fn-page .py-2{padding-top:8px !important;padding-top:.5rem !important;padding-bottom:8px !important;padding-bottom:.5rem !important}
.fn-page .py-20{padding-top:80px !important;padding-top:5rem !important;padding-bottom:80px !important;padding-bottom:5rem !important}
.fn-page .py-24{padding-top:96px !important;padding-top:6rem !important;padding-bottom:96px !important;padding-bottom:6rem !important}
.fn-page .py-4{padding-top:16px !important;padding-top:1rem !important;padding-bottom:16px !important;padding-bottom:1rem !important}
.fn-page .pb-20{padding-bottom:80px !important;padding-bottom:5rem !important}
.fn-page .pt-28{padding-top:112px !important;padding-top:7rem !important}
.fn-page .text-center{text-align:center !important}
.fn-page .uppercase{text-transform:uppercase !important}
.fn-page .text-amber-400{color:#fbbf24 !important;color:rgba(251,191,36,var(--tw-text-opacity, 1)) !important}
.fn-page .text-amber-500{color:#f59e0b !important;color:rgba(245,158,11,var(--tw-text-opacity, 1)) !important}
.fn-page .text-blue-400{color:#60a5fa !important;color:rgba(96,165,250,var(--tw-text-opacity, 1)) !important}
.fn-page .text-emerald-400{color:#34d399 !important;color:rgba(52,211,153,var(--tw-text-opacity, 1)) !important}
.fn-page .text-emerald-500{color:#10b981 !important;color:rgba(16,185,129,var(--tw-text-opacity, 1)) !important}
.fn-page .text-emerald-500\/50{color:#10b98180 !important}
.fn-page .text-gray-300{color:#d1d5db !important;color:rgba(209,213,219,var(--tw-text-opacity, 1)) !important}
.fn-page .text-gray-400{color:#9ca3af !important;color:rgba(156,163,175,var(--tw-text-opacity, 1)) !important}
.fn-page .text-gray-500{color:#6b7280 !important;color:rgba(107,114,128,var(--tw-text-opacity, 1)) !important}
.fn-page .text-transparent{color:transparent !important}
.fn-page .text-violet-400{color:#a78bfa !important;color:rgba(167,139,250,var(--tw-text-opacity, 1)) !important}
.fn-page .text-white{color:#fff !important;color:rgba(255,255,255,var(--tw-text-opacity, 1)) !important}
.fn-page .opacity-75{opacity:.75 !important}
.fn-page .shadow-lg{box-shadow:0 0 #0000,0 0 #0000,0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a !important;box-shadow:var(--tw-ring-offset-shadow, 0 0 rgba(0,0,0,0)),var(--tw-ring-shadow, 0 0 rgba(0,0,0,0)),var(--tw-shadow) !important}
.fn-page .hover\:border-amber-500\/50:hover{border-color:#f59e0b80 !important}
.fn-page .hover\:border-blue-500\/50:hover{border-color:#3b82f680 !important}
.fn-page .hover\:border-emerald-500\/50:hover{border-color:#10b98180 !important}
.fn-page .hover\:border-gray-400:hover{border-color:#9ca3af !important;border-color:rgba(156,163,175,var(--tw-border-opacity, 1)) !important}
.fn-page .hover\:border-violet-500\/50:hover{border-color:#8b5cf680 !important}
.fn-page .hover\:text-white:hover{color:#fff !important;color:rgba(255,255,255,var(--tw-text-opacity, 1)) !important}
.fn-page .group:hover .group-hover\:gap-2{gap:8px !important;gap:.5rem !important}
.fn-page .group:hover .group-hover\:gap-3{gap:12px !important;gap:.75rem !important}
.fn-page .group:hover .group-hover\:text-\[\#3FB6C6\]{color:#3fb6c6 !important;color:rgba(63,182,198,var(--tw-text-opacity, 1)) !important}
.fn-page .group:hover .group-hover\:text-\[\#5b6af0\]{color:#5b6af0 !important;color:rgba(91,106,240,var(--tw-text-opacity, 1)) !important}
.fn-page .group:hover .group-hover\:text-\[\#f97171\]{color:#f97171 !important;color:rgba(249,113,113,var(--tw-text-opacity, 1)) !important}
.fn-page .group:hover .group-hover\:text-\[var\(--ft-text\)\]{color:var(--ft-text) !important}
.fn-page .group:hover .group-hover\:text-cyan-600{color:#0891b2 !important;color:rgba(8,145,178,var(--tw-text-opacity, 1)) !important}
.fn-page .group:hover .group-hover\:text-gray-900{color:#111827 !important;color:rgba(17,24,39,var(--tw-text-opacity, 1)) !important}
.fn-page .group:hover .group-hover\:text-jb-accent{color:var(--jb-accent) !important}
.fn-page .group:hover .group-hover\:text-white{color:#fff !important;color:rgba(255,255,255,var(--tw-text-opacity, 1)) !important}
.fn-page .group:hover .group-hover\:underline{text-decoration-line:underline !important}
.fn-page .group:hover .group-hover\:opacity-100{opacity:1 !important}
.fn-page .group:hover .group-hover\:opacity-40{opacity:.4 !important}
.fn-page .group:focus .group-focus\:text-gray-900{color:#111827 !important;color:rgba(17,24,39,var(--tw-text-opacity, 1)) !important}
.fn-page .group:focus .group-focus\:ring-4{box-shadow:0 0 #fff,var(--tw-ring-shadow),0 0 #0000 !important;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 rgba(0,0,0,0)) !important}
.fn-page .group:focus .dark\:group-focus\:text-white:is(.dark *){color:#fff !important;color:rgba(255,255,255,var(--tw-text-opacity, 1)) !important}
@media(min-width:640px){.fn-page .sm\:flex-row{flex-direction:row !important}}
@media(min-width:640px){.fn-page .sm\:px-6{padding-left:1.5rem !important;padding-right:1.5rem !important}}
@media(min-width:1024px){.fn-page .lg\:gap-4{gap:1rem !important}}
@media(min-width:1024px){.fn-page .lg\:p-6{padding:1.5rem !important}}
@media(min-width:1024px){.fn-page .lg\:px-8{padding-left:2rem !important;padding-right:2rem !important}}
@media(min-width:1024px){.fn-page .lg\:py-28{padding-top:7rem !important;padding-bottom:7rem !important}}
.fn-page .rtl\:ml-auto:where([dir=rtl]{margin-left:auto !important}
.fn-page .rtl\:mr-0:where([dir=rtl]{margin-right:0 !important}
.fn-page .rtl\:flex-row-reverse:where([dir=rtl]{flex-direction:row-reverse !important}
.fn-page .rtl\:text-left:where([dir=rtl]{text-align:left !important}
.fn-page .rtl\:text-right:where([dir=rtl]{text-align:right !important}
