/* ==========================================================================
   BodyPathfinder — cookie-consent.css
   GDPR consent UI. Themed to match streaming-dark-gold + Lato.
   Consent policy version: v1.0_20260709_e2368d02
   No third-party trackers are wired to this banner.
   ========================================================================== */

.ccBanner {
  position: fixed;
  left: 50%;
  bottom: 1.4vw;
  transform: translateX(-50%) translateY(140%);
  width: min(980px, 94vw);
  background: var(--bgRaised, #232323);
  color: var(--textSecondary, #cccccc);
  border: 1px solid var(--borderSoft, rgba(255, 255, 255, 0.08));
  border-radius: 10px;
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.5);
  padding: 1.35rem 1.5rem;
  z-index: 2000;
  font-family: 'Lato', -apple-system, BlinkMacSystemFont, sans-serif;
  transition: transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.ccBanner.ccVisible { transform: translateX(-50%) translateY(0); }

.ccBannerBody { display: flex; align-items: center; gap: 1.5rem; flex-wrap: wrap; }
.ccBannerText { flex: 1 1 340px; min-width: 0; }
.ccBannerText h2 {
  font-size: 1.05rem;
  font-weight: 900;
  color: var(--textPrimary, #fff);
  margin-bottom: 0.4rem;
  letter-spacing: -0.01em;
}
.ccBannerText p { font-size: 0.87rem; line-height: 1.6; margin: 0; }
.ccLink { color: var(--accent, #ffcd46); text-decoration: underline; }
.ccLink:hover { color: var(--accentHover, #ffd966); }

.ccActions { display: flex; gap: 0.65rem; flex-wrap: wrap; flex-shrink: 0; }
.ccBtn {
  font-family: inherit;
  font-size: 0.86rem;
  font-weight: 700;
  padding: 0.75rem 1.5rem;
  border-radius: 4px;
  cursor: pointer;
  border: 1px solid var(--borderHard, rgba(255, 255, 255, 0.16));
  background: transparent;
  color: var(--textSecondary, #ccc);
  transition: border-color 0.3s ease, color 0.3s ease, background 0.3s ease;
  white-space: nowrap;
}
.ccBtn:hover { border-color: var(--accent, #ffcd46); color: var(--accent, #ffcd46); }
.ccBtn:focus-visible { outline: 2px solid var(--accent, #ffcd46); outline-offset: 2px; }

/* Accept and Reject carry equal visual weight — no dark patterns. */
.ccBtnAccept,
.ccBtnReject {
  background: transparent;
  border-color: var(--borderHard, rgba(255, 255, 255, 0.16));
  color: var(--textPrimary, #fff);
  min-width: 128px;
  text-align: center;
}
.ccBtnAccept:hover,
.ccBtnReject:hover { border-color: var(--accent, #ffcd46); color: var(--accent, #ffcd46); }
.ccBtnConfigure { min-width: 128px; text-align: center; }

/* -------------------------------------------------------------------------- */
/* Settings modal                                                              */
/* -------------------------------------------------------------------------- */
.ccModal {
  position: fixed;
  inset: 0;
  z-index: 2100;
  display: grid;
  place-items: center;
  padding: 4vh 4vw;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.3s ease, visibility 0.3s ease;
}
.ccModal.ccVisible { opacity: 1; visibility: visible; }
.ccModalBackdrop { position: absolute; inset: 0; background: rgba(0, 0, 0, 0.72); }
.ccModalCard {
  position: relative;
  width: min(620px, 100%);
  max-height: 84vh;
  overflow-y: auto;
  background: var(--bgRaised, #232323);
  border: 1px solid var(--borderSoft, rgba(255, 255, 255, 0.08));
  border-radius: 10px;
  box-shadow: 0 30px 70px rgba(0, 0, 0, 0.6);
  padding: 1.75rem;
}
.ccModalCard h2 { font-size: 1.2rem; font-weight: 900; color: var(--textPrimary, #fff); margin-bottom: 0.5rem; }
.ccModalIntro { font-size: 0.88rem; color: var(--textSecondary, #ccc); margin-bottom: 1.35rem; line-height: 1.6; }
.ccModalClose {
  position: absolute;
  top: 1rem;
  right: 1rem;
  background: none;
  border: none;
  font-size: 1.6rem;
  line-height: 1;
  color: var(--textMuted, #999);
  cursor: pointer;
}
.ccModalClose:hover { color: var(--accent, #ffcd46); }

.ccCategory {
  border-top: 1px solid var(--borderSoft, rgba(255, 255, 255, 0.08));
  padding: 1.05rem 0;
}
.ccCategoryHead { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.ccCategoryHead h3 { font-size: 0.98rem; font-weight: 700; color: var(--textPrimary, #fff); }
.ccCategory p { font-size: 0.83rem; color: var(--textMuted, #999); margin-top: 0.4rem; line-height: 1.6; }

.ccToggle { position: relative; display: inline-flex; align-items: center; flex-shrink: 0; }
.ccToggle input { position: absolute; opacity: 0; width: 44px; height: 24px; margin: 0; cursor: pointer; }
.ccToggle input:disabled { cursor: not-allowed; }
.ccToggleTrack {
  width: 44px;
  height: 24px;
  border-radius: 999px;
  background: var(--bgTertiary, #1d1d1d);
  border: 1px solid var(--borderHard, rgba(255, 255, 255, 0.16));
  position: relative;
  transition: background 0.3s ease, border-color 0.3s ease;
  pointer-events: none;
}
.ccToggleTrack::after {
  content: "";
  position: absolute;
  top: 2px;
  left: 2px;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: var(--textMuted, #999);
  transition: transform 0.3s ease, background 0.3s ease;
}
.ccToggle input:checked + .ccToggleTrack { background: var(--accent, #ffcd46); border-color: var(--accent, #ffcd46); }
.ccToggle input:checked + .ccToggleTrack::after { transform: translateX(20px); background: var(--onAccent, #0f0f0f); }
.ccToggle input:disabled + .ccToggleTrack { opacity: 0.6; }
.ccToggle input:focus-visible + .ccToggleTrack { outline: 2px solid var(--accent, #ffcd46); outline-offset: 2px; }

.ccModalActions {
  display: flex;
  gap: 0.65rem;
  flex-wrap: wrap;
  justify-content: flex-end;
  margin-top: 1.5rem;
  padding-top: 1.25rem;
  border-top: 1px solid var(--borderSoft, rgba(255, 255, 255, 0.08));
}
.ccVersionNote { margin-top: 1rem; font-size: 0.72rem; color: var(--textMuted, #999); opacity: 0.75; }

@media (max-width: 768px) {
  .ccBanner { bottom: 0; left: 0; transform: translateY(140%); width: 100%; border-radius: 10px 10px 0 0; padding: 1.2rem 1.1rem; }
  .ccBanner.ccVisible { transform: translateY(0); }
  .ccActions { width: 100%; }
  .ccBtn { flex: 1 1 100%; }
  .ccModalCard { padding: 1.4rem 1.2rem; }
  .ccModalActions { justify-content: stretch; }
  .ccModalActions .ccBtn { flex: 1 1 100%; }
}
