/* ===== Consent banner (DECISIONS #169): a dark card bottom-left, above the tab bar on phones ===== */
.consent{position:fixed;left:24px;bottom:24px;z-index:1080;width:min(520px,calc(100vw - 32px));opacity:0;transform:translateY(12px);transition:opacity .25s,transform .25s}
.consent.is-open{opacity:1;transform:none}
.consent__in{background:var(--c-dark);color:#fff;border-radius:var(--r-lg);padding:22px 24px;box-shadow:0 24px 60px rgba(20,22,62,.45);border:1px solid rgba(255,255,255,.08)}
.consent__t{display:block;font:800 17px/1.25 var(--ff-display);margin-bottom:8px}
.consent__x{margin:0;font-size:14px;line-height:1.55;color:var(--c-on-dark-muted)}
.consent__x a{color:#fff;text-decoration:underline;text-underline-offset:3px;margin-left:8px;white-space:nowrap}
.consent__opts{display:flex;flex-direction:column;gap:10px;margin:16px 0 2px;padding-top:14px;border-top:1px solid rgba(255,255,255,.14)}
.consent__opt{display:flex;gap:10px;align-items:flex-start;font-size:13.5px;line-height:1.45;color:var(--c-on-dark-muted);cursor:pointer}
.consent__opt input{margin-top:3px;accent-color:var(--c-live);flex:none}
.consent__opt b{color:#fff;margin-right:4px}
.consent__btns{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.consent__btns .btn-primary,.consent__btns .btn-ghost{padding:10px 16px;font-size:13.5px}
.consent__btns .btn-ghost{background:transparent;border-color:rgba(255,255,255,.35);color:#fff}
.consent__btns .btn-ghost:hover{background:#fff;color:var(--c-primary);border-color:#fff}
.consent__btns .btn-primary{background:var(--c-primary)}
.consent__btns .btn-primary:hover{background:#fff;color:var(--c-primary)}
.consent [hidden]{display:none!important}
@media (max-width:767.98px){
  .consent{left:12px;right:12px;bottom:calc(74px + env(safe-area-inset-bottom));width:auto}
  .consent__in{padding:18px 18px 16px}
  .consent__x a{display:inline-block;margin:6px 10px 0 0}
  .consent__btns .btn-primary,.consent__btns .btn-ghost{flex:1 1 auto}
}
@media (prefers-reduced-motion:reduce){.consent{transition:none}}

/* ===== Gated embeds (DECISIONS #171): the card stands where the embed will go ===== */
.egate{position:relative;margin:24px 0;border-radius:var(--r-card);background:var(--c-dark);color:#fff;overflow:hidden}
.egate:not(.is-loaded){min-height:180px;display:grid;place-items:center}
.egate--youtube:not(.is-loaded),.egate--vimeo:not(.is-loaded),.egate--maps:not(.is-loaded){aspect-ratio:16/9;min-height:0}
.egate__in{max-width:520px;padding:28px 24px;text-align:center}
.egate__t{display:block;font:800 17px/1.25 var(--ff-display);margin-bottom:8px}
.egate__x{margin:0 0 16px;font-size:14px;line-height:1.55;color:var(--c-on-dark-muted)}
.egate__btns{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.egate__btns .btn-primary{background:var(--c-live);padding:10px 16px;font-size:13.5px}
.egate__btns .btn-primary:hover{background:#fff;color:var(--c-dark)}
.egate__btns .btn-ghost{background:transparent;border-color:rgba(255,255,255,.35);color:#fff;padding:10px 16px;font-size:13.5px}
.egate__btns .btn-ghost:hover{background:#fff;color:var(--c-primary);border-color:#fff}
.egate.is-loaded{background:transparent;color:inherit}
.egate.is-loaded iframe{display:block;width:100%;max-width:100%}
.egate--youtube.is-loaded iframe,.egate--vimeo.is-loaded iframe{aspect-ratio:16/9;height:auto}
.legal__status{margin-top:28px;padding:14px 16px;border-radius:var(--r-md);background:var(--c-raised);font-size:14px}
.legal__status+.legal__consent{margin-top:12px}
