/* ============================================================
   Tarteaucitron — Zoometry brand overrides
   Single-service setup: banner + floating icon only, no panel.
   Loaded AFTER tarteaucitron.min.css (injected at runtime),
   so we use !important to win the cascade.
   ============================================================ */

/* ---------- Main banner (bottom) ---------- */
body #tarteaucitronRoot div#tarteaucitronAlertBig {
    font-family: 'Poppins', sans-serif !important;
    background: #ffffff !important;
    color: #213330 !important;
    /* A card anchored bottom-left rather than a full-width bar. Paired with the
       consent gate, a compact panel reads as a required choice; a bar across the
       foot of the page reads as a notification you may ignore. */
    border: none !important;
    border-top: 3px solid #6AC497 !important;
    box-shadow: 0 12px 40px rgba(33, 51, 48, 0.22) !important;
    padding: 28px 30px 24px !important;
    /* tarteaucitron sets width:100%; without this the horizontal padding is
       added on top of it and the card overflows its own width. */
    box-sizing: border-box !important;
    border-radius: 14px !important;
    line-height: 1.55 !important;
    width: 420px !important;
    max-width: calc(100vw - 48px) !important;
    inset-block-end: 24px !important;
    inset-inline-start: 24px !important;
    inset-inline-end: auto !important;
    inset-block-start: auto !important;
    text-align: left !important;
    overflow: hidden !important;
}

/* The library prints "☝ 🍪" above the text. */
body #tarteaucitronRoot div#tarteaucitronAlertBig::before {
    content: none !important;
}

/* First line of the disclaimer, promoted to a heading. */
body #tarteaucitronRoot div#tarteaucitronAlertBig .zm-consent-title {
    display: block !important;
    margin-bottom: 10px !important;
    color: #193D2B !important;
    font-size: 17px !important;
    font-weight: 600 !important;
    line-height: 1.3 !important;
}

body #tarteaucitronRoot div#tarteaucitronAlertBig #tarteaucitronDisclaimerAlert {
    font-size: 14px !important;
    color: #3D4A48 !important;
    margin: 0 0 18px 0 !important;
    line-height: 1.55 !important;
    text-align: left !important;
}

body #tarteaucitronRoot div#tarteaucitronAlertBig #tarteaucitronDisclaimerAlert strong {
    color: #193D2B !important;
    font-weight: 600 !important;
}

/* ---------- Banner buttons ---------- */
body #tarteaucitronRoot div#tarteaucitronAlertBig button,
body #tarteaucitronRoot div#tarteaucitronAlertBig a.tarteaucitronCTAButton {
    font-family: 'Poppins', sans-serif !important;
    font-size: 14px !important;
    font-weight: 500 !important;
    padding: 11px 22px !important;
    border-radius: 999px !important;
    border: 1px solid transparent !important;
    /* The mobile rules below stretch these to width:100%; without this the
       22px padding and the border are added on top and they overflow. */
    box-sizing: border-box !important;
    margin: 4px 6px 4px 0 !important;
    cursor: pointer !important;
    text-decoration: none !important;
    transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease !important;
    line-height: 1.2 !important;
    letter-spacing: 0 !important;
    text-transform: none !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 6px !important;
    opacity: 1 !important;
}

/* Accept all — primary brand
   (#tarteaucitronPersonalize2 is misleadingly named — it's the "Accept All" button) */
body #tarteaucitronRoot div#tarteaucitronAlertBig .tarteaucitronAllow,
body #tarteaucitronRoot div#tarteaucitronAlertBig #tarteaucitronPersonalize2 {
    background: #193D2B !important;
    color: #ffffff !important;
}

body #tarteaucitronRoot div#tarteaucitronAlertBig .tarteaucitronAllow:hover,
body #tarteaucitronRoot div#tarteaucitronAlertBig #tarteaucitronPersonalize2:hover {
    background: #2D574F !important;
}

/* Deny all — secondary outlined */
body #tarteaucitronRoot div#tarteaucitronAlertBig .tarteaucitronDeny,
body #tarteaucitronRoot div#tarteaucitronAlertBig #tarteaucitronAllDenied2 {
    background: #ffffff !important;
    color: #213330 !important;
    border: 1px solid #DCE3E1 !important;
}

body #tarteaucitronRoot div#tarteaucitronAlertBig .tarteaucitronDeny:hover,
body #tarteaucitronRoot div#tarteaucitronAlertBig #tarteaucitronAllDenied2:hover {
    background: #F3F8F5 !important;
    border-color: #6AC497 !important;
}

/* Hide the check/cross icon spans inside the CTA buttons (cleaner look) */
body #tarteaucitronRoot div#tarteaucitronAlertBig .tarteaucitronCheck,
body #tarteaucitronRoot div#tarteaucitronAlertBig .tarteaucitronCross {
    display: none !important;
}

/* Privacy policy button — dropped from the banner on request. Note that while
   the consent gate is up the rest of the page is inert, so the footer link is
   out of reach: there is no route to the policy before answering. */
body #tarteaucitronRoot div#tarteaucitronAlertBig #tarteaucitronPrivacyUrl,
body #tarteaucitronRoot div#tarteaucitronAlertBig #tarteaucitronPrivacyUrlDialog {
    display: none !important;
}

/* "Manage preferences" — the third choice, a quiet outline button so that
   Accept and Essentials-only stay the two obvious answers.
   Two traps in tarteaucitron's naming: #tarteaucitronPersonalize2 (with the "2")
   is Accept All, and #tarteaucitronCloseAlert is not a close button — it closes
   the banner in order to open the panel. #tarteaucitronPersonalize does not
   exist in the banner at all. */
body #tarteaucitronRoot div#tarteaucitronAlertBig #tarteaucitronCloseAlert {
    background: transparent !important;
    color: #193D2B !important;
    border: 1px solid rgba(25, 61, 43, 0.25) !important;
}

body #tarteaucitronRoot div#tarteaucitronAlertBig #tarteaucitronCloseAlert:hover {
    border-color: #193D2B !important;
    background: rgba(25, 61, 43, 0.04) !important;
}

/* ---------- Floating icon (BottomRight, persistent) ---------- */
body #tarteaucitronRoot #tarteaucitronAlertSmall {
    background: #193D2B !important;
    color: #ffffff !important;
    border-radius: 999px !important;
    box-shadow: 0 6px 18px rgba(33, 51, 48, 0.25) !important;
    bottom: 20px !important;
    right: 20px !important;
    padding: 10px 16px !important;
    font-family: 'Poppins', sans-serif !important;
    font-size: 13px !important;
    font-weight: 500 !important;
    transition: background 0.2s ease !important;
}

body #tarteaucitronRoot #tarteaucitronAlertSmall:hover {
    background: #2D574F !important;
}

body #tarteaucitronRoot #tarteaucitronManager {
    color: #ffffff !important;
    font-family: 'Poppins', sans-serif !important;
    cursor: pointer !important;
}

body #tarteaucitronRoot #tarteaucitronCookiesNumber {
    background: #6AC497 !important;
    color: #193D2B !important;
    border-radius: 999px !important;
    padding: 2px 8px !important;
    font-weight: 600 !important;
    margin-left: 6px !important;
}

/* ---------- Consent gate ----------
   Until the visitor answers, the page underneath is dimmed and inert.
   Accepting and refusing are both a single click away and both give full
   access, so this forces a choice rather than walling the site off — a
   cookie wall would make consent involuntary, and therefore invalid.
   The class is only ever added by JS once the banner is really on screen,
   so a visitor whose script fails is never locked out of the page. */
html.tarteaucitron--waiting,
html.tarteaucitron--waiting body {
    overflow: hidden !important;
}

html.tarteaucitron--waiting body::before {
    content: "" !important;
    position: fixed !important;
    inset: 0 !important;
    background: rgba(33, 51, 48, 0.55) !important;
    z-index: 2147483643 !important; /* tarteaucitron sits on 2147483644+ */
}

/* Fallback for browsers without inert: nothing outside the banner reacts. */
html.tarteaucitron--waiting body > *:not(#tarteaucitronRoot) {
    pointer-events: none !important;
}

/* ---------- Preferences panel ----------
   Enabled again now that there are two purposes to arbitrate: analytics
   (Google Analytics) and advertising (LinkedIn Insight Tag). It stayed hidden
   while Google Analytics was the only service, when it would have shown a
   single switch duplicating the banner's own two answers. */
body #tarteaucitronRoot div#tarteaucitron {
    font-family: 'Poppins', sans-serif !important;
    background: #ffffff !important;
    border-radius: 14px !important;
    box-shadow: 0 20px 60px rgba(33, 51, 48, 0.28) !important;
    overflow: hidden !important;
}

/* The default sheet prints several headings in white on a light background,
   which is unreadable, so every text colour here is set explicitly.
   Note the absence of a descendant selector on the main line:
   ".tarteaucitronMainLine *" counts an extra class and would outrank the
   #tarteaucitronInfo and button rules below, painting dark green text onto the
   dark green block. Colour is set on the line itself and inherited instead, so
   those rules can still win. */
body #tarteaucitronRoot #tarteaucitronDisclaimerAlert,
body #tarteaucitronRoot .tarteaucitronH1,
body #tarteaucitronRoot .tarteaucitronH2,
body #tarteaucitronRoot #tarteaucitronServices .tarteaucitronMainLine {
    color: #193D2B !important;
}

/* Title row: a plain block, left-aligned, without the library's tall banner. */
body #tarteaucitronRoot #tarteaucitronServices .tarteaucitronMainLine {
    background: #ffffff !important;
    border-bottom: 1px solid #E3E8E2 !important;
    padding: 20px 24px !important;
    min-height: 0 !important;
    text-align: left !important;
}

body #tarteaucitronRoot #dialogTitle {
    display: block !important;
    text-align: left !important;
    font-size: 18px !important;
    font-weight: 600 !important;
    padding: 0 !important;
    margin: 0 !important;
}

/* Category headings — Advertising network, Audience measurement. */
body #tarteaucitronRoot #tarteaucitronServices .tarteaucitronTitle,
body #tarteaucitronRoot #tarteaucitronServices .tarteaucitronTitle * {
    background: transparent !important;
    color: #193D2B !important;
    font-weight: 600 !important;
}

body #tarteaucitronRoot #tarteaucitronServices .tarteaucitronLine {
    background: #ffffff !important;
    border-left: 4px solid transparent !important;
    color: #3D4A48 !important;
}

body #tarteaucitronRoot #tarteaucitronServices .tarteaucitronLine .tarteaucitronName,
body #tarteaucitronRoot #tarteaucitronServices .tarteaucitronLine .tarteaucitronName * {
    color: #213330 !important;
}

/* The intro block sits on a dark panel by default; keep it, but on brand. */
body #tarteaucitronRoot #tarteaucitronInfo,
body #tarteaucitronRoot #tarteaucitronInfo * {
    background: #193D2B !important;
    color: #ffffff !important;
}

body #tarteaucitronRoot #tarteaucitronInfo a,
body #tarteaucitronRoot #tarteaucitronInfo button {
    color: #193D2B !important;
    background: #ffffff !important;
}

body #tarteaucitronRoot .tarteaucitronAllow,
body #tarteaucitronRoot #tarteaucitronAllAllowed {
    background: #193D2B !important;
    color: #ffffff !important;
    border-radius: 999px !important;
}

body #tarteaucitronRoot .tarteaucitronDeny,
body #tarteaucitronRoot #tarteaucitronAllDenied {
    background: #ffffff !important;
    color: #193D2B !important;
    border: 1px solid rgba(25, 61, 43, 0.25) !important;
    border-radius: 999px !important;
}

/* A labelled dark tab hanging off the corner; turned into a quiet × inside the
   panel. font-size: 0 hides the "Close" text while keeping the accessible name
   for screen readers, and the glyph is drawn by the pseudo-element. */
body #tarteaucitronRoot #tarteaucitronClosePanel {
    background: transparent !important;
    color: #193D2B !important;
    font-size: 0 !important;
    border: 0 !important;
    width: 44px !important;
    height: 44px !important;
    line-height: 44px !important;
    padding: 0 !important;
    top: 10px !important;
    right: 10px !important;
    border-radius: 999px !important;
    /* The services block is painted after it and starts 20px lower, covering
       all but the top sliver of the glyph. */
    z-index: 5 !important;
}

body #tarteaucitronRoot #tarteaucitronClosePanel::after {
    content: "\00d7";
    font-size: 26px !important;
    line-height: 1 !important;
}

body #tarteaucitronRoot #tarteaucitronClosePanel:hover {
    background: rgba(25, 61, 43, 0.07) !important;
}

/* Footer holding Save — dark grey by default. */
body #tarteaucitronRoot #tarteaucitronSave {
    background: #F4F6F3 !important;
    border-top: 1px solid #E3E8E2 !important;
    padding: 16px 20px !important;
}

body #tarteaucitronRoot #tarteaucitronSave button,
body #tarteaucitronRoot #tarteaucitronSaveButton {
    background: #193D2B !important;
    color: #ffffff !important;
    border-radius: 999px !important;
}

/* ---------- Panel: strip it back to the two purposes ----------
   The default sheet shows all eight of tarteaucitron's categories, including
   the six we have no service in — "APIs" renders with a "(0)" counter. It also
   repeats each category as an expandable service list. What is left below is a
   title, one row per purpose with its own allow/deny, and Save. */

/* Intro block and the global allow/deny row: the per-purpose controls and the
   banner already say all of this. */
body #tarteaucitronRoot #tarteaucitronInfo,
body #tarteaucitronRoot #tarteaucitronMainLineOffset .tarteaucitronH2,
body #tarteaucitronRoot #tarteaucitronScrollbarAdjust {
    display: none !important;
}

/* "Cookies necessary for its proper functioning" — nothing to decide. */
body #tarteaucitronRoot li#tarteaucitronServicesTitle_mandatory,
body #tarteaucitronRoot ul#tarteaucitronServices_mandatory {
    display: none !important;
}

/* Hide every category, then bring back only the two we actually use. Keyed by
   id rather than by emptiness, which CSS cannot test. Adding a service in a new
   category means adding its id here. */
body #tarteaucitronRoot li[id^="tarteaucitronServicesTitle_"] {
    display: none !important;
}

body #tarteaucitronRoot li#tarteaucitronServicesTitle_analytic,
body #tarteaucitronRoot li#tarteaucitronServicesTitle_ads {
    display: block !important;
}

/* Per-service breakdown behind "Manage services (n)": one service per category
   here, so the expander only adds a click to reach the same switch. */
body #tarteaucitronRoot .tarteaucitron-toggle-group,
body #tarteaucitronRoot span[id^="tarteaucitronCounter-"],
body #tarteaucitronRoot li.tarteaucitronLine[id$="Line"] {
    display: none !important;
}

/* ---------- Allow/Deny pairs rendered as a single on/off switch ----------
   tarteaucitron ships two buttons per purpose and marks the container with
   tarteaucitronIsAllowed / tarteaucitronIsDenied (neither before a choice).
   Only the button that would change the current state is shown, so one control
   is visible and clicking it flips the switch. The labels stay in the
   accessible tree — font-size:0 hides them visually, it does not remove them —
   so a screen reader still announces "Allow" or "Deny".
   Scoped to .tarteaucitronAsk: the banner CTAs carry the same classes. */
body #tarteaucitronRoot .tarteaucitronAsk {
    background: transparent !important;
    border: 0 !important;
    padding: 0 !important;
}

body #tarteaucitronRoot .tarteaucitronAsk .tarteaucitronAllow,
body #tarteaucitronRoot .tarteaucitronAsk .tarteaucitronDeny {
    position: relative !important;
    display: none !important;
    width: 46px !important;
    height: 26px !important;
    min-width: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 0 !important;
    border-radius: 999px !important;
    font-size: 0 !important;
    box-shadow: none !important;
    transition: background-color 0.18s ease !important;
}

body #tarteaucitronRoot .tarteaucitronAsk .tarteaucitronAllow::after,
body #tarteaucitronRoot .tarteaucitronAsk .tarteaucitronDeny::after {
    content: "" !important;
    position: absolute !important;
    top: 3px !important;
    width: 20px !important;
    height: 20px !important;
    border-radius: 50% !important;
    background: #ffffff !important;
    box-shadow: 0 1px 3px rgba(16, 21, 18, 0.28) !important;
    transition: left 0.18s ease !important;
}

/* Off — undecided or refused: showing "Allow" turns it on. */
body #tarteaucitronRoot .tarteaucitronAsk:not(.tarteaucitronIsAllowed) .tarteaucitronAllow {
    display: inline-block !important;
    background: #C5CFC8 !important;
}

body #tarteaucitronRoot .tarteaucitronAsk:not(.tarteaucitronIsAllowed) .tarteaucitronAllow::after {
    left: 3px !important;
}

/* On — accepted: showing "Deny" turns it off. */
body #tarteaucitronRoot .tarteaucitronAsk.tarteaucitronIsAllowed .tarteaucitronDeny {
    display: inline-block !important;
    background: #193D2B !important;
}

body #tarteaucitronRoot .tarteaucitronAsk.tarteaucitronIsAllowed .tarteaucitronDeny::after {
    left: 23px !important;
}

/* ☐ glyphs the library prefixes to every allow/deny label. */
body #tarteaucitronRoot .tarteaucitronCheck,
body #tarteaucitronRoot .tarteaucitronCross {
    display: none !important;
}

/* ---------- Mobile ---------- */
@media (max-width: 767px) {
    /* A 420px card off to one side has no meaning on a phone: it becomes a
       sheet spanning the width, still inset so it reads as a card. */
    body #tarteaucitronRoot div#tarteaucitronAlertBig {
        padding: 20px 18px !important;
        width: auto !important;
        max-width: none !important;
        inset-inline: 12px !important;
        inset-block-end: 12px !important;
    }
    body #tarteaucitronRoot div#tarteaucitronAlertBig button,
    body #tarteaucitronRoot div#tarteaucitronAlertBig a.tarteaucitronCTAButton {
        display: flex !important;
        width: 100% !important;
        justify-content: center !important;
        margin: 6px 0 !important;
    }
    body #tarteaucitronRoot #tarteaucitronAlertSmall {
        bottom: 12px !important;
        right: 12px !important;
        font-size: 12px !important;
        padding: 8px 12px !important;
    }
}
