/* frontli-tracking-kit v1.4.0 148cb717 cfg:6e62eb55c413 kit:0016d33732d6 */
/* Frontli tracking kit: cookie banner. A static file because strict CSPs (style-src 'self') block injected <style>.
   Override the look from the site's own CSS with these custom properties. While the banner is open, <html> has the
   class ft-has-consent and --ft-consent-h (banner height), so a sticky bar can ride above it:
     html.ft-has-consent .stick { bottom: var(--ft-consent-h); } */
.ft-consent {
  --_bg: var(--ft-consent-bg, #ffffff);
  --_fg: var(--ft-consent-fg, #1a1a1a);
  --_accent: var(--ft-consent-accent, #1a1a1a);
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 2147483000;
  background: var(--_bg);
  color: var(--_fg);
  font-family: var(--ft-consent-font, inherit);
  font-size: 16px;
  line-height: 1.45;
  box-shadow: 0 -2px 16px rgba(0, 0, 0, 0.18);
  padding: 16px 16px max(16px, env(safe-area-inset-bottom));
  /* Enters from below the viewport: the first paint has no visible area, so the banner text is never the page's
     Largest Contentful Paint (Liveo launch speed bar, 2026-11-13). Fill-mode both = off screen on frame one. */
  animation: ft-consent-in 0.2s ease-out both;
}
@keyframes ft-consent-in { from { transform: translateY(100%); } to { transform: none; } }
@media (prefers-reduced-motion: reduce) {
  .ft-consent { animation-duration: 0.01s; }
}
.ft-consent[hidden] { display: none; }
.ft-consent:focus { outline: 2px solid var(--_accent); outline-offset: -2px; }
.ft-consent__inner { max-width: 960px; margin: 0 auto; display: flex; flex-wrap: wrap; align-items: center; gap: 8px 24px; }
.ft-consent__title { margin: 0; font-weight: 700; flex-basis: 100%; }
.ft-consent__text { margin: 0; flex: 1 1 320px; }
.ft-consent__link { color: inherit; text-decoration: underline; }
.ft-consent__actions { display: flex; gap: 12px; flex: 0 0 auto; }
.ft-consent__btn {
  min-height: 44px;
  min-width: 112px;
  padding: 10px 20px;
  font: inherit;
  font-weight: 600;
  color: var(--_bg);
  background: var(--_accent);
  border: 2px solid var(--_accent);
  border-radius: 6px;
  cursor: pointer;
}
.ft-consent__btn:focus-visible { outline: 3px solid var(--_accent); outline-offset: 2px; }
/* kit 1.4 notice model: the X (last item of the actions row, 44x44 target), the inline "Cookie settings" button
   styled as a link, and the settings panel's state line. */
.ft-consent__inner[hidden] { display: none; }
.ft-consent__close {
  min-height: 44px;
  min-width: 44px;
  padding: 0;
  font: inherit;
  font-size: 26px;
  line-height: 1;
  color: var(--_fg);
  background: transparent;
  border: 0;
  border-radius: 6px;
  cursor: pointer;
}
.ft-consent__close:focus-visible { outline: 3px solid var(--_accent); outline-offset: 2px; }
.ft-consent__inline {
  padding: 0;
  margin: 0;
  font: inherit;
  color: inherit;
  text-decoration: underline;
  background: none;
  border: 0;
  cursor: pointer;
}
.ft-consent__inline:focus-visible { outline: 2px solid var(--_accent); outline-offset: 2px; }
.ft-consent__state { margin: 0; flex: 1 1 320px; }
@media (max-width: 480px) {
  .ft-consent__actions { flex-basis: 100%; }
  .ft-consent__btn { flex: 1 1 0; }
  .ft-consent__close { flex: 0 0 44px; }
}
/* Lead-form honeypot (bot-field, pipeline-gaps §5.4): site CSS that sets `display` on its container would override
   the browser's [hidden] style and show the field to people, who would fill it and lose their lead. Every page links
   this file, so the kit keeps it hidden. Bots read the HTML, not the CSS, so they still fill it. */
[hidden]:has(input[name="bot-field"]) { display: none !important; }
input[name="bot-field"] { display: none !important; }
