/* Ad slots reserve their space from the first paint, so filling them later cannot
   shove the page around. An empty slot is invisible - no border, no placeholder -
   so the site looks finished rather than broken while ads are off. */
.f2f-ad{display:block;width:100%;margin:22px auto;max-width:970px;overflow:hidden}
.f2f-ad:empty{min-height:0!important;margin:0}          /* collapse entirely until live */
.f2f-ads-live .f2f-ad{background:rgba(143,166,196,.04);border-radius:12px}

.f2f-consent{position:fixed;left:50%;bottom:16px;transform:translateX(-50%);z-index:2147482000;
  width:min(560px,calc(100% - 24px));padding:16px 18px;border-radius:14px;
  background:#0a2238;color:#edf4fa;border:1px solid rgba(145,167,185,.28);
  box-shadow:0 20px 60px rgba(0,0,0,.5);font:500 13px/1.55 'Archivo',system-ui,sans-serif}
.f2f-consent p{margin:0 0 12px}
.f2f-consent-btns{display:flex;gap:9px;justify-content:flex-end}
.f2f-consent button{padding:10px 18px;border-radius:9px;border:0;cursor:pointer;
  font:800 10px 'Chivo Mono',ui-monospace,monospace;letter-spacing:.09em;background:#27d3f2;color:#04131d}
/* Reject is styled as a peer of accept, not a hidden link - a banner where saying no
   is harder than saying yes is not valid consent under UK/EU rules. */
.f2f-consent button.ghost{background:transparent;color:#edf4fa;border:1px solid rgba(145,167,185,.35)}
@media(max-width:520px){.f2f-consent-btns{flex-direction:column-reverse}.f2f-consent button{width:100%}}
