/* PROJECT 1804 · cookie banner (CNIL), v4 2026-11-04. The consent logic (window.P1804Consent: read, save, GA4 and Meta Pixel only after consent) stays inline in the site head; this file draws the banner and the settings. Loaded with defer from the site head. Accept is the filled button, Decline sits next to it at the same size: refusing stays as easy as accepting. */ (function () { var C = window.P1804Consent, b, r, t; if (!C) return; var e = document.createElement('style'); e.textContent = '.p18c{--ease:cubic-bezier(.22,1,.36,1);position:fixed;left:20px;bottom:20px;z-index:2147483647;box-sizing:border-box;width:400px;max-width:calc(100vw - 32px);max-height:calc(100dvh - 40px);overflow-y:auto;overscroll-behavior:contain;padding:22px 22px 18px;border-radius:10px;background:#1f1c1c;color:#f6f6f6;font:500 12px/1.5 Ppneuemontrealmono,ui-monospace,monospace;letter-spacing:-.02em;opacity:0;transform:translateY(16px);transition:opacity .45s var(--ease),transform .55s var(--ease)}' + '.p18c.is-in{opacity:1;transform:none}' + '.p18c.is-out{opacity:0;transform:translateY(12px);transition-duration:.25s;transition-timing-function:ease-in}' + '.p18c[hidden],.p18c [hidden]{display:none!important}' + '.p18c *{box-sizing:border-box}' + '.p18c>*{opacity:0;transform:translateY(6px);transition:opacity .4s var(--ease),transform .5s var(--ease)}' + '.p18c.is-in>*{opacity:1;transform:none}' + '.p18c.is-in>:nth-child(2){transition-delay:.05s}.p18c.is-in>:nth-child(3){transition-delay:.1s}.p18c.is-in>:nth-child(4){transition-delay:.15s}.p18c.is-in>:nth-child(5){transition-delay:.2s}' + '.p18c-h{display:flex;justify-content:space-between;align-items:center;margin:0 0 14px;font-size:11px;line-height:1;text-transform:uppercase;letter-spacing:0;color:#b3a8a8}' + '.p18c-h span:before{content:"";display:inline-block;width:6px;height:6px;margin:0 8px 1px 0;border-radius:50%;background:#f6f6f6;vertical-align:middle}' + '.p18c-h a{color:#b3a8a8;text-decoration:none;transition:color .2s}.p18c-h a:hover{color:#f6f6f6}' + '.p18c-lead{margin:0 0 10px;color:#f6f6f6;font:600 18px/1.15 Ppmori,sans-serif;letter-spacing:-.01em;text-transform:uppercase}' + '.p18c-t{margin:0 0 18px;color:#f6f6f6a6;font:inherit;font-size:11.5px;letter-spacing:inherit}.p18c.is-full .p18c-t{display:none}' + '.p18c button{font:inherit;color:inherit;background:none;border:0;padding:0;margin:0;cursor:pointer}' + '.p18c-b{display:grid;grid-template-columns:1fr 1fr;gap:8px}' + '.p18c-btn{position:relative;min-height:44px;padding:0 14px!important;border:1px solid #f6f6f640!important;border-radius:5px;font:500 11.5px/1 Ppneuemontrealmono,ui-monospace,monospace!important;letter-spacing:-.03em!important;text-transform:uppercase;transition:background-color .25s,color .25s,border-color .25s}' + '.p18c-btn:hover{background:#f6f6f6!important;color:#1f1c1c!important;border-color:#f6f6f6!important}' + '.p18c-btn.is-yes{background:#f6f6f6!important;color:#1f1c1c!important;border-color:#f6f6f6!important}' + '.p18c-btn.is-yes:hover{background:#fff!important}' + '.p18c-btn.is-main{grid-column:1/-1}' + '.p18c-s{display:inline-flex;align-items:center;gap:8px;margin-top:14px!important;padding:6px 0!important;color:#b3a8a8!important;font-size:11px!important;text-transform:uppercase;letter-spacing:0;transition:color .2s}' + '.p18c-s:hover{color:#f6f6f6!important}' + '.p18c-s i{display:inline-block;font-style:normal;transition:transform .3s var(--ease)}.p18c-s:hover i{transform:translateX(3px)}' + '.p18c button:focus-visible,.p18c input:focus-visible,.p18c a:focus-visible{outline:1px solid #f6f6f6;outline-offset:3px}' + '.p18c-o{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .5s var(--ease),opacity .3s,margin .5s var(--ease)}' + '.p18c-o>div{overflow:hidden;min-height:0;padding:0 5px;margin:0 -5px}' + '.p18c.is-full .p18c-o{grid-template-rows:1fr;opacity:1;margin:0 0 18px}' + '.p18c-r{display:flex!important;align-items:center;gap:14px;margin:0!important;padding:12px 0;border-top:1px solid #f6f6f61f;font-weight:500!important;cursor:pointer}' + '.p18c-r:last-child{border-bottom:1px solid #f6f6f61f}' + '.p18c-r b{display:block;font-weight:500;font-size:11.5px;text-transform:uppercase;letter-spacing:0;color:#f6f6f6}' + '.p18c-r small{display:block;margin-top:3px;font-size:11px;line-height:1.4;color:#f6f6f68c}' + '.p18c-r span{flex:1}' + '.p18c-r input{appearance:none;-webkit-appearance:none;flex:none;position:relative;width:36px;height:20px;margin:0;border:1px solid #b3a8a8;border-radius:20px;background:transparent;cursor:pointer;transition:background-color .25s,border-color .25s}' + '.p18c-r input:before{content:"";position:absolute;top:3px;left:3px;width:12px;height:12px;border-radius:50%;background:#b3a8a8;transition:transform .3s var(--ease),background-color .25s}' + '.p18c-r input:checked{background:#f6f6f6;border-color:#f6f6f6}' + '.p18c-r input:checked:before{transform:translateX(16px);background:#1f1c1c}' + '.p18c-r input:focus-visible{outline-color:#b3a8a8}' + '.p18c-r input:disabled{opacity:.4;cursor:default}.p18c-r:has(input:disabled){cursor:default}' + '.p18c-l{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px 18px;padding:16px 3vw 24px;font:500 11px/1.3 Ppneuemontrealmono,ui-monospace,monospace;text-transform:uppercase}' + '.p18c-l a{color:#1f1c1c;text-decoration:none}.p18c-l a:hover{text-decoration:underline}' + '@media (prefers-reduced-motion:reduce){.p18c,.p18c>*,.p18c-o,.p18c-r input:before{transition:opacity .2s!important;transform:none!important}}' + '@media (max-width:479px){.p18c{left:0;right:0;bottom:0;width:auto;max-width:none;max-height:100dvh;border-radius:10px 10px 0 0;padding:20px 16px calc(14px + env(safe-area-inset-bottom));transform:translateY(40px)}.p18c-lead{font-size:16px}}'; document.head.appendChild(e); var LEAD = 'This site uses cookies.', LEAD_FULL = 'Choose what to allow.'; function q(s) { return b.querySelector(s); } function build() { b = document.createElement('div'); b.className = 'p18c'; b.hidden = true; b.setAttribute('role', 'dialog'); b.setAttribute('aria-label', 'Cookies'); b.setAttribute('data-lenis-prevent', ''); b.innerHTML = '
CookiesPrivacy policy
' + '

' + LEAD + '

' + '

They help us see which pages people enjoy and show our work to the right audience. You can change your choice any time in Cookie settings at the bottom of the page.

' + '
' + '' + '' + '' + '
' + '
' + '
' + ''; document.body.append(b); b.addEventListener('click', function (e) { var x = e.target.closest('button'); if (!x) return; var v = x.dataset.v; if (v == 'c') return full(true); hide(); C.save(v == 's' ? { a: q('[data-k=a]').checked, m: q('[data-k=m]').checked } : { a: v == '1', m: v == '1' }); }); } // Second layer: switches; Accept all and Decline all side by side, Save choice under them. function full(on) { b.classList.toggle('is-full', on); q('.p18c-h span').textContent = on ? 'Cookie settings' : 'Cookies'; b.setAttribute('aria-label', on ? 'Cookie settings' : 'Cookies'); q('.p18c-o').inert = !on; // the switches stay out of the tab order and the screen reader while folded q('.p18c-lead').textContent = on ? LEAD_FULL : LEAD; q('[data-v=s]').hidden = !on; q('.p18c-s').hidden = on; q('[data-v="1"]').textContent = on ? 'Accept all' : 'Accept'; q('[data-v="0"]').textContent = on ? 'Decline all' : 'Decline'; if (on) q('[data-k=a]').focus(); } function show(on) { if (!b) build(); var c = C.read() || {}; q('[data-k=a]').checked = !!c.a; q('[data-k=m]').checked = !!c.m; clearTimeout(t); b.classList.remove('is-out'); b.hidden = false; if (on && !b.contains(document.activeElement)) r = document.activeElement; full(!!on); requestAnimationFrame(function () { requestAnimationFrame(function () { b.classList.add('is-in'); }); }); } function hide() { b.classList.remove('is-in'); b.classList.add('is-out'); t = setTimeout(function () { b.hidden = true; }, 260); if (r) r.focus(); } document.addEventListener('click', function (e) { if (!e.target.closest('a[href$="#cookie-settings"],[data-cookie-settings]')) return; e.preventDefault(); show(true); }); function init() { // /: only the preloader lives there and it forwards to /agency, so the banner waits for /agency. if (location.pathname == '/') return; // Pages without the site footer (briefs, Identity, 404) get the legal links at the very bottom, so the privacy policy is // one click away from every form and consent can be withdrawn everywhere. if (!document.querySelector('a[href$="#cookie-settings"]')) { var l = document.createElement('nav'); l.className = 'p18c-l'; l.setAttribute('aria-label', 'Legal'); l.innerHTML = 'Privacy policyLegal noticeCookie settings'; document.body.append(l); } if (!C.read()) show(false); } document.readyState == 'loading' ? document.addEventListener('DOMContentLoaded', init) : init(); })();