/* =========================================================================
   Cookie consent: banner, preferences dialog, blocked embeds
   ========================================================================= */
.cookie-btn {
  display:inline-flex; align-items:center; justify-content:center; min-height:2.875rem; padding:0 1.25rem;
  border:1.5px solid transparent; border-radius:0.75rem; cursor:pointer; text-decoration:none;
  font-family:var(--font-display); font-weight:600; font-size:0.9375rem; line-height:1.2;
  transition:background .2s ease, border-color .2s ease, color .2s ease, opacity .2s ease;
}
/* Accept is filled, refuse is outlined: told apart at a glance, but the same
   size and weight, so neither choice is played down. The third, quieter
   style is for the secondary actions. */
.cookie-btn--solid { background:var(--ink); color:var(--surface); border-color:var(--ink); }
.cookie-btn--solid:hover { opacity:.86; }
.cookie-btn--outline { background:var(--surface); color:var(--ink); border-color:var(--ink); }
.cookie-btn--outline:hover { background:var(--surface-2); }
.cookie-btn--ghost { background:transparent; color:var(--muted); border-color:transparent; text-decoration:underline; padding-inline:0.75rem; }
.cookie-btn--ghost:hover { color:var(--ink); }
.cookie-btn--link { background:transparent; color:var(--ink); padding:0 0.25rem; text-decoration:underline; }
.cookie-btn:focus-visible, .cookie-link:focus-visible { outline:none; box-shadow:0 0 0 3px var(--focus); }

.cookie-link {
  padding:0; border:0; background:none; cursor:pointer; color:inherit; font:inherit; text-align:left;
}
.cookie-link:hover { color:var(--red); }
:root[data-theme="dark"] .cookie-link:hover { color:var(--red-on-dark); }

/* ---- Banner ---- */
.cookie-banner {
  position:fixed; z-index:90; left:1rem; right:1rem; bottom:1rem; margin-inline:auto; max-width:46rem;
  padding:1.25rem 1.375rem 1.375rem; background:var(--surface); color:var(--ink);
  border:1px solid var(--line-strong); border-radius:1.25rem;
  box-shadow:0 1.5rem 4rem -1rem rgba(16,18,27,.35), 0 0.25rem 1rem rgba(16,18,27,.08);
  animation:cookie-rise .4s cubic-bezier(0,0,.2,1);
}
.cookie-banner[hidden] { display:none; }
@keyframes cookie-rise { from { opacity:0; transform:translateY(1.5rem); } to { opacity:1; transform:none; } }
.cookie-banner__close {
  position:absolute; top:0.75rem; right:0.75rem; width:2.25rem; height:2.25rem; padding:0;
  display:inline-flex; align-items:center; justify-content:center;
  border:0; border-radius:0.625rem; background:transparent; color:var(--muted); cursor:pointer;
}
.cookie-banner__close:hover { background:var(--surface-2); color:var(--ink); }
.cookie-banner__close svg, .cookie-prefs__close svg { width:1.125rem; height:1.125rem; }
.cookie-banner__title { margin:0 2.5rem 0.375rem 0; font-family:var(--font-display); font-weight:800; font-size:1.125rem; letter-spacing:-.01em; }
.cookie-banner__text { margin:0; font-size:0.875rem; line-height:1.55; color:var(--muted); }
.cookie-banner__text a, .cookie-prefs__intro a { color:var(--ink); font-weight:600; text-decoration:underline; white-space:nowrap; }
.cookie-banner__actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:0.625rem; margin-top:1.125rem; }

/* On the shop the filter bar is fixed at the bottom on small screens. */
@media (max-width:900px){
  .woocommerce-shop .cookie-banner, .tax-product_cat .cookie-banner { bottom:5.25rem; }
}

/* ---- Preferences dialog ---- */
.cookie-prefs { position:fixed; inset:0; z-index:95; display:flex; align-items:center; justify-content:center; padding:1rem; }
.cookie-prefs[hidden] { display:none; }
.cookie-prefs__backdrop { position:absolute; inset:0; background:rgba(16,18,27,.55); }
.cookie-prefs__panel {
  position:relative; display:flex; flex-direction:column; width:100%; max-width:38rem; max-height:min(44rem, 100%);
  background:var(--surface); color:var(--ink); border:1px solid var(--line-strong); border-radius:1.25rem;
  box-shadow:0 2rem 5rem -1rem rgba(0,0,0,.5); outline:none;
  animation:cookie-rise .3s cubic-bezier(0,0,.2,1);
}
.cookie-prefs__head { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:1.125rem 1.375rem; border-bottom:1px solid var(--line); }
.cookie-prefs__title { margin:0; font-family:var(--font-display); font-weight:800; font-size:1.25rem; letter-spacing:-.015em; }
.cookie-prefs__close {
  width:2.25rem; height:2.25rem; padding:0; flex-shrink:0; display:inline-flex; align-items:center; justify-content:center;
  border:0; border-radius:0.625rem; background:transparent; color:var(--muted); cursor:pointer;
}
.cookie-prefs__close:hover { background:var(--surface-2); color:var(--ink); }
.cookie-prefs__body { flex:1 1 auto; overflow-y:auto; padding:1.125rem 1.375rem; }
.cookie-prefs__intro { margin:0 0 1rem; font-size:0.875rem; line-height:1.55; color:var(--muted); }
.cookie-prefs__actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:0.625rem; padding:1rem 1.375rem; border-top:1px solid var(--line); }
html.cookie-prefs-open, html.cookie-prefs-open body { overflow:hidden; }

.cookie-cat { padding:1rem 0; border-top:1px solid var(--line); }
.cookie-cat__head { display:flex; align-items:center; gap:0.75rem; }
.cookie-cat__label { flex:1 1 auto; font-family:var(--font-display); font-weight:700; font-size:1rem; color:var(--ink); cursor:pointer; }
.cookie-cat__always { font-family:var(--font-label); font-size:0.6875rem; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); }
.cookie-cat__text { margin:0.375rem 0 0; font-size:0.875rem; line-height:1.5; color:var(--muted); }
.cookie-cat__details { margin-top:0.625rem; font-size:0.8125rem; }
.cookie-cat__details summary { cursor:pointer; color:var(--ink); font-family:var(--font-display); font-weight:600; }
.cookie-cat__services { list-style:none; margin:0.625rem 0 0; padding:0; display:grid; gap:0.625rem; }
.cookie-cat__services li { margin:0; padding:0.625rem 0.75rem; background:var(--surface-2); border-radius:0.625rem; display:grid; gap:0.125rem; line-height:1.45; }
.cookie-cat__services strong { color:var(--ink); }
.cookie-cat__services span { color:var(--ink); }
.cookie-cat__services small { color:var(--muted); overflow-wrap:anywhere; }

/* The switch is a real checkbox: keyboard and screen readers get it for free. */
.cookie-switch {
  appearance:none; -webkit-appearance:none; position:relative; flex:0 0 auto; width:2.75rem; height:1.5rem; margin:0;
  border-radius:1rem; background:var(--line-strong); cursor:pointer; transition:background .2s ease;
}
.cookie-switch::after {
  content:""; position:absolute; top:0.1875rem; left:0.1875rem; width:1.125rem; height:1.125rem; border-radius:50%;
  background:#fff; box-shadow:0 1px 3px rgba(0,0,0,.3); transition:transform .2s cubic-bezier(.4,0,.2,1);
}
.cookie-switch:checked { background:var(--green); }
.cookie-switch:checked::after { transform:translateX(1.25rem); }
.cookie-switch:disabled { opacity:.55; cursor:not-allowed; }
.cookie-switch:focus-visible { outline:none; box-shadow:0 0 0 3px var(--focus); }

/* ---- Embeds waiting for consent ---- */
.cookie-embed { display:grid; }
.cookie-embed__placeholder {
  display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; gap:1rem;
  min-height:18rem; padding:2rem 1.25rem; background:var(--surface-2);
}
.cookie-embed__text { margin:0; max-width:44ch; font-size:0.9375rem; line-height:1.5; color:var(--muted); }
.cookie-embed__actions { display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:0.5rem 1rem; }
.cookie-embed.is-active .cookie-embed__placeholder { display:none; }

/* ---- Cookie policy page ---- */
.cookie-policy .cookie-link {
  display:inline-flex; align-items:center; min-height:2.875rem; padding:0 1.25rem; margin:0.25rem 0 1rem;
  border:1.5px solid var(--ink); border-radius:0.75rem; color:var(--ink);
  font-family:var(--font-display); font-weight:600; font-size:0.9375rem;
}
.cookie-policy .cookie-link:hover { background:var(--surface-2); color:var(--ink); }
.cookie-table { overflow-x:auto; margin:0.75rem 0 1.75rem; border:1px solid var(--line); border-radius:0.75rem; }
.cookie-table table { width:100%; min-width:40rem; border-collapse:collapse; font-size:0.875rem; }
.cookie-table th, .cookie-table td { padding:0.625rem 0.75rem; text-align:left; vertical-align:top; border-bottom:1px solid var(--line); overflow-wrap:anywhere; }
.cookie-table th { background:var(--surface-2); font-family:var(--font-display); font-weight:700; white-space:nowrap; }
.cookie-table tr:last-child td { border-bottom:0; }

@media (max-width:560px){
  .cookie-banner { left:0.5rem; right:0.5rem; bottom:0.5rem; padding:1rem 1rem 1.125rem; }
  .cookie-banner__actions .cookie-btn, .cookie-prefs__actions .cookie-btn { flex:1 1 auto; }
  .cookie-banner__actions .cookie-btn--ghost, .cookie-prefs__actions .cookie-btn--ghost { flex-basis:100%; }
  .cookie-prefs { padding:0; align-items:flex-end; }
  .cookie-prefs__panel { max-height:92%; border-radius:1.25rem 1.25rem 0 0; }
}
@media (prefers-reduced-motion:reduce){
  .cookie-banner, .cookie-prefs__panel { animation:none; }
}
