.cb-root { position: fixed; z-index: 9999; pointer-events: none; }
.cb-root * { pointer-events: auto; }

.cb-banner {
  display: flex;
  gap: 16px;
  align-items: center;
  justify-content: space-between;
  padding: 14px 16px;
  border: 1px solid rgba(0,0,0,.12);
  background: #fff;
  box-shadow: 0 10px 28px rgba(0,0,0,.12);
  border-radius: 12px;
}
.cb-text { min-width: 220px; }
.cb-title { font-weight: 800; margin-bottom: 4px; }
.cb-desc { font-size: 14px; line-height: 1.35; }
.cb-links { margin-left: 8px; white-space: nowrap; }
.cb-link { text-decoration: underline; }
.cb-sep { margin: 0 8px; opacity: .6; }

.cb-actions { display: flex; gap: 10px; flex-wrap: wrap; justify-content: flex-end; }
.cb-btn {
  border: 1px solid rgba(0,0,0,.25);
  border-radius: 10px;
  padding: 10px 12px;
  cursor: pointer;
  font-weight: 700;
  background: #fff;
  color: #111;
}
.cb-btn-primary { background: #111; color: #fff; border-color: #111; }
.cb-btn:focus { outline: 2px solid rgba(0,0,0,.35); outline-offset: 2px; }

/* Positions */
.cb-pos-bottom_full { left: 12px; right: 12px; bottom: 12px; }
.cb-pos-bottom_full .cb-banner { width: 100%; }

.cb-pos-bottom_center { left: 0; right: 0; bottom: 12px; display: flex; justify-content: center; }
.cb-pos-bottom_center .cb-banner { width: min(920px, calc(100% - 24px)); }

.cb-pos-bottom_left { left: 12px; bottom: 12px; }
.cb-pos-bottom_left .cb-banner { width: min(420px, calc(100vw - 24px)); }

.cb-pos-bottom_right { right: 12px; bottom: 12px; }
.cb-pos-bottom_right .cb-banner { width: min(420px, calc(100vw - 24px)); }

.cb-pos-center { inset: 0; display: flex; align-items: center; justify-content: center; }
.cb-pos-center .cb-banner { width: min(720px, calc(100% - 24px)); }

/* Modal */
.cb-modal {
  position: fixed;
  inset: 0;
  z-index: 10000;
  background: rgba(0,0,0,.45);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
}
.cb-modal-card {
  width: min(620px, 100%);
  background: #fff;
  border-radius: 14px;
  box-shadow: 0 14px 40px rgba(0,0,0,.25);
  overflow: hidden;
}
.cb-modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 16px;
  border-bottom: 1px solid rgba(0,0,0,.08);
}
.cb-modal-title { font-weight: 900; }
.cb-icon-btn { border: 0; background: transparent; font-size: 22px; line-height: 1; cursor: pointer; padding: 6px 10px; }

.cb-modal-body { padding: 8px 16px 6px; }
.cb-row {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 12px;
  padding: 14px 0;
  border-bottom: 1px solid rgba(0,0,0,.06);
}
.cb-row:last-child { border-bottom: 0; }
.cb-row-title { font-weight: 800; margin-bottom: 2px; }
.cb-row-desc { font-size: 13px; opacity: .85; }
.cb-modal-actions {
  display: flex;
  gap: 10px;
  justify-content: flex-end;
  padding: 14px 16px;
  border-top: 1px solid rgba(0,0,0,.08);
}

/* Robust toggle */
.cb-toggle {
  appearance: none;
  -webkit-appearance: none;
  width: 46px;
  height: 26px;
  background: rgba(0,0,0,.18);
  border-radius: 999px;
  position: relative;
  cursor: pointer;
  border: 1px solid rgba(0,0,0,.18);
  outline: none;
}
.cb-toggle::after {
  content: "";
  position: absolute;
  top: 2px;
  left: 2px;
  width: 20px;
  height: 20px;
  background: #fff;
  border-radius: 50%;
  box-shadow: 0 2px 10px rgba(0,0,0,.25);
  transition: transform .18s ease;
}
.cb-toggle:checked { background: rgba(0,0,0,.85); border-color: rgba(0,0,0,.85); }
.cb-toggle:checked::after { transform: translateX(20px); }
.cb-toggle:disabled { opacity: .6; cursor: not-allowed; }

/* Floating cookie settings button */
.cb-fab {
  position: fixed;
  left: 14px;
  bottom: 14px;
  z-index: 10001;
  border: 1px solid rgba(0,0,0,.2);
  background: #fff;
  border-radius: 999px;
  width: 44px;
  height: 44px;
  cursor: pointer;
  box-shadow: 0 10px 24px rgba(0,0,0,.15);
}


/* Global font size (set via CSS variable) */
#cb-consent-root, #cb-consent-root * { font-size: var(--cbl-font-size, 14px); }


/* Equal width primary buttons */
.cb-actions { display:flex; gap: 10px; flex-wrap: wrap; }
.cb-actions .cb-btn { flex: 1 1 160px; }
