
/* === overnight contrast-safe theme bridge (2026-09-15) === */
:root {
  --imp-fg-fallback: #0f172a;
  --imp-bg-fallback: #ffffff;
  --imp-heading-fallback: #0f172a;
  --imp-muted-fallback: #475569;
  --imp-surface-fallback: #f8fafc;
  --imp-border-fallback: #e2e8f0;
  --imp-fg: var(--body-color, var(--color-fg, var(--nf-body-text, var(--imp-fg-fallback))));
  --imp-bg: var(--body-bg, var(--color-bg, var(--nf-body-bg, var(--imp-bg-fallback))));
  --imp-heading: var(--heading-color, var(--nf-body-text, var(--imp-heading-fallback)));
  --imp-muted: var(--muted-color, color-mix(in srgb, var(--imp-fg) 62%, var(--imp-bg)));
  --imp-surface: var(--surface-color, var(--sh-card-bg, color-mix(in srgb, var(--imp-fg) 6%, var(--imp-bg))));
  --imp-border: var(--border-color, var(--sh-border, color-mix(in srgb, var(--imp-fg) 16%, var(--imp-bg))));
  --imp-icon: var(--imp-fg);
  --imp-link: var(--link-color, var(--nf-link, LinkText));
}
@supports (color: light-dark(#111, #eee)) {
  :root {
    --imp-fg-fallback: light-dark(#0f172a, #e8eef5);
    --imp-bg-fallback: light-dark(#ffffff, #0b1220);
    --imp-heading-fallback: light-dark(#0f172a, #f1f5f9);
    --imp-muted-fallback: light-dark(#475569, #9db0c0);
    --imp-surface-fallback: light-dark(#f8fafc, #121a28);
    --imp-border-fallback: light-dark(#e2e8f0, #2a3648);
  }
}

/* CMP keeps its own dark panel for readability on any page chrome */
.ip-banner { color: #e7f0f4; }
.ip-banner__title, .ip-banner__text, .ip-tab, .ip-cat, .ip-vendor { color: inherit; }
/* ImperoPrivacy CMP — enterprise dialog (not a thin ribbon) */
.ip-banner[hidden]{display:none!important}
.ip-banner{
  position:fixed;inset:0;z-index:10450;
  display:flex;align-items:center;justify-content:center;
  padding:clamp(.75rem,2vw,1.5rem);
  background:rgba(4,10,18,.78);
  backdrop-filter:blur(8px);
  font-family:Manrope,Segoe UI,system-ui,sans-serif;
  color:#e7f0f4;
}
.ip-banner__backdrop{position:absolute;inset:0}
.ip-banner__panel{
  position:relative;max-width:740px;width:100%;
  max-height:min(92vh,880px);overflow:auto;
  background:linear-gradient(165deg,#0c1a28 0%,#122636 55%,#0e2030 100%);
  border-radius:22px;padding:1.35rem 1.45rem 1.25rem;
  border:1px solid rgba(157,176,192,.28);
  box-shadow:0 32px 90px rgba(0,0,0,.5);
}
.ip-banner__header{display:flex;gap:.85rem;align-items:flex-start;margin-bottom:.75rem}
.ip-banner__seal{
  flex:0 0 44px;width:44px;height:44px;border-radius:12px;
  display:grid;place-items:center;
  background:linear-gradient(135deg,#12b886,#0a9a6f);
  color:#041018;font-weight:800;font-size:.85rem;letter-spacing:.04em;
}
.ip-banner__eyebrow{
  margin:0 0 .2rem;font-size:.68rem;letter-spacing:.14em;
  text-transform:uppercase;color:#9db0c0;font-weight:600;
}
.ip-banner__title{
  margin:0;font:700 clamp(1.15rem,2.4vw,1.4rem)/1.25 Fraunces,Georgia,serif;
  color:#f2f7fa;
}
.ip-banner__text{margin:.15rem 0 .85rem;color:#9db0c0;line-height:1.5;font-size:.95rem}
.ip-banner__tabs{display:flex;flex-wrap:wrap;gap:.45rem;margin:.5rem 0 .85rem}
.ip-tab{
  border:1px solid rgba(157,176,192,.28);background:transparent;
  color:#9db0c0;border-radius:999px;padding:.4rem .95rem;
  font-weight:700;font-size:.82rem;cursor:pointer;
}
.ip-tab.is-active,.ip-tab[aria-selected="true"]{
  color:#7de2b6;background:rgba(18,184,134,.16);
  border-color:rgba(18,184,134,.45);
}
.ip-banner__cats,.ip-banner__vendors{
  display:grid;gap:.55rem;max-height:38vh;overflow:auto;
  margin-bottom:1rem;padding-right:.15rem;
}
.ip-banner__cats[hidden],.ip-banner__vendors[hidden]{display:none!important}
.ip-cat,.ip-vendor{
  display:flex;gap:.75rem;align-items:flex-start;
  padding:.85rem .9rem;border:1px solid rgba(157,176,192,.22);
  border-radius:14px;background:rgba(255,255,255,.035);
}
.ip-vendor{flex-direction:column;gap:.35rem}
.ip-vendor__row{display:flex;gap:.75rem;align-items:flex-start;width:100%}
.ip-cat input,.ip-vendor input{
  margin-top:.2rem;width:1.1rem;height:1.1rem;accent-color:#12b886;flex-shrink:0;
}
.ip-cat strong,.ip-vendor strong{display:block;color:#e7f0f4;font-size:.95rem}
.ip-cat span,.ip-vendor span{display:block;color:#9db0c0;font-size:.82rem;line-height:1.4;margin-top:.15rem}
.ip-vendor-empty{margin:0;color:#9db0c0;font-size:.9rem}
.ip-banner__actions{
  display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end;margin-top:.25rem;
}
.ip-btn{
  border:0;border-radius:999px;padding:.65rem 1.15rem;
  font-weight:700;font-size:.9rem;cursor:pointer;
  font-family:inherit;line-height:1.2;
}
.ip-btn:focus-visible{outline:2px solid #7de2b6;outline-offset:2px}
.ip-btn--primary{background:linear-gradient(135deg,#12b886,#0a9a6f);color:#041018}
.ip-btn--secondary{
  background:rgba(255,255,255,.08);color:#e7f0f4;
  border:1px solid rgba(157,176,192,.28);
}
.ip-btn--ghost{
  background:transparent;color:#9db0c0;
  border:1px solid rgba(157,176,192,.28);
}
.ip-banner__links{margin:.9rem 0 0;font-size:.82rem;color:#9db0c0}
.ip-banner__links a{color:#7de2b6;font-weight:600;text-decoration:underline;text-underline-offset:2px}
.ip-banner--prefs .ip-banner__panel{max-width:820px}
.ip-reopen[hidden]{display:none!important}
.ip-reopen{
  position:fixed;right:max(1rem,env(safe-area-inset-right));bottom:max(1rem,env(safe-area-inset-bottom));
  z-index:10400;border:1px solid rgba(18,184,134,.55);border-radius:999px;
  padding:.62rem .9rem;background:#0c1a28;color:#e7f0f4;
  box-shadow:0 8px 28px rgba(0,0,0,.34);font:700 .82rem/1.2 Manrope,Segoe UI,system-ui,sans-serif;
  cursor:pointer;
}
.ip-reopen:hover{background:#122636;border-color:#12b886}
.ip-reopen:focus-visible{outline:3px solid #7de2b6;outline-offset:3px}
@media (max-width:560px){
  .ip-banner__actions{justify-content:stretch}
  .ip-btn{flex:1 1 auto;text-align:center}
  .ip-banner__cats,.ip-banner__vendors{max-height:42vh}
}
@media (prefers-reduced-motion:reduce){
  .ip-banner{backdrop-filter:none}
}
