/* ============================================================
   KEYE — Consent Manager (DSGVO/TTDSG)
   ============================================================ */

.cc-root *{ box-sizing:border-box; }
.cc-root{ font-family:var(--sans, system-ui, sans-serif); }

/* hidden by default; shown via .is-active */
.cc-banner,
.cc-modal{ display:none; }
.cc-root.is-active .cc-banner{ display:block; }
.cc-root.is-modal .cc-banner{ display:none; }
.cc-root.is-modal .cc-modal{ display:flex; }

/* ---------- Banner ---------- */
.cc-banner{
  position:fixed; left:50%; bottom:clamp(12px,3vw,28px); transform:translateX(-50%);
  z-index:10000; width:min(680px, calc(100vw - 24px));
  background:#fff; color:#14110f; border:1px solid rgba(20,17,15,.12);
  border-radius:14px; box-shadow:0 20px 60px -20px rgba(20,17,15,.5);
  padding:clamp(20px,3vw,30px);
  animation:cc-in .5s cubic-bezier(.22,.61,.36,1) both;
}
@keyframes cc-in{ from{ opacity:0; transform:translate(-50%,16px); } to{ opacity:1; transform:translate(-50%,0); } }

.cc-banner__title{ font-family:var(--serif, Georgia, serif); font-size:1.35rem; line-height:1.2; margin:0 0 .5rem; }
.cc-banner__text{ font-size:.92rem; line-height:1.55; color:#4a433b; margin:0 0 1.2rem; }
.cc-banner__text a{ color:#8a673f; text-decoration:underline; text-underline-offset:2px; }

.cc-actions{ display:flex; flex-wrap:wrap; gap:10px; }
.cc-actions .cc-btn{ flex:1 1 auto; }

.cc-btn{
  appearance:none; cursor:pointer; font-family:inherit; font-size:.9rem; font-weight:500;
  padding:.85em 1.3em; border-radius:999px; border:1px solid transparent; transition:all .25s ease;
  white-space:nowrap;
}
.cc-btn--accept{ background:#14110f; color:#f6f2ec; border-color:#14110f; }
.cc-btn--accept:hover{ background:#8a673f; border-color:#8a673f; }
.cc-btn--reject{ background:#fff; color:#14110f; border-color:rgba(20,17,15,.3); }
.cc-btn--reject:hover{ border-color:#14110f; }
.cc-btn--settings{ background:transparent; color:#4a433b; border-color:transparent; text-decoration:underline; text-underline-offset:3px; flex:0 0 auto; }
.cc-btn--settings:hover{ color:#14110f; }

/* ---------- Modal ---------- */
.cc-modal{
  position:fixed; inset:0; z-index:10001; display:none;
  align-items:center; justify-content:center; padding:16px;
  background:rgba(20,17,15,.55); backdrop-filter:blur(3px);
}
.cc-modal__box{
  background:#fff; color:#14110f; border-radius:16px; width:min(640px,100%);
  max-height:90vh; overflow:auto; padding:clamp(22px,3vw,36px);
  box-shadow:0 30px 80px -20px rgba(20,17,15,.6);
}
.cc-modal__title{ font-family:var(--serif, Georgia, serif); font-size:1.7rem; margin:0 0 .4rem; }
.cc-modal__lead{ font-size:.92rem; color:#4a433b; line-height:1.55; margin:0 0 1.4rem; }

.cc-cat{ border-top:1px solid rgba(20,17,15,.12); padding:1.1rem 0; display:grid; grid-template-columns:1fr auto; gap:6px 16px; align-items:start; }
.cc-cat__name{ font-weight:600; font-size:1rem; }
.cc-cat__desc{ grid-column:1 / -1; font-size:.86rem; color:#4a433b; line-height:1.5; margin-top:.2rem; }

/* toggle */
.cc-switch{ position:relative; width:46px; height:26px; flex:0 0 auto; }
.cc-switch input{ position:absolute; opacity:0; width:100%; height:100%; margin:0; cursor:pointer; }
.cc-switch__track{ position:absolute; inset:0; background:#cfc6b8; border-radius:999px; transition:background .25s ease; pointer-events:none; }
.cc-switch__track::after{ content:""; position:absolute; top:3px; left:3px; width:20px; height:20px; background:#fff; border-radius:50%; transition:transform .25s ease; box-shadow:0 1px 3px rgba(0,0,0,.3); }
.cc-switch input:checked + .cc-switch__track{ background:#8a673f; }
.cc-switch input:checked + .cc-switch__track::after{ transform:translateX(20px); }
.cc-switch input:disabled + .cc-switch__track{ background:#14110f; opacity:.55; }

.cc-modal__actions{ display:flex; flex-wrap:wrap; gap:10px; margin-top:1.6rem; }
.cc-modal__actions .cc-btn{ flex:1 1 auto; }

@media (max-width:520px){
  .cc-actions{ flex-direction:column; }
  .cc-btn--settings{ order:3; }
}

@media (prefers-reduced-motion: reduce){
  .cc-banner{ animation:none; }
  .cc-switch__track, .cc-switch__track::after{ transition:none; }
}
