/* ==========================================================================
   Cookie consent — banner + preferences modal. Self-hosted, brand-matched.
   Loaded alongside style.css. All colours use the shared brand tokens.
   ========================================================================== */

.cc-banner{position:fixed;left:16px;right:16px;bottom:16px;z-index:1000;
  max-width:560px;margin:0 auto;background:#fff;color:var(--color-ink-black);
  border:1px solid var(--color-skylight);border-top:4px solid var(--color-sky);
  border-radius:12px;box-shadow:0 12px 44px rgba(28,28,28,.20);
  padding:22px 24px;font-family:var(--font-base)}
.cc-banner h2{font-family:var(--font-display);font-weight:500;font-size:20px;margin:0 0 8px}
.cc-banner p{font-size:15px;line-height:1.5;margin:0 0 16px}
.cc-banner a,.cc-modal a{color:var(--color-ink-black);text-decoration:underline}

.cc-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.cc-btn{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.06em;
  font-size:13px;font-weight:500;padding:11px 18px;border-radius:8px;cursor:pointer;
  border:2px solid var(--color-ink-black);background:transparent;color:var(--color-ink-black);
  transition:transform .08s ease}
.cc-btn:hover{transform:translateY(-1px)}
.cc-btn-primary{background:var(--color-ink-black);color:var(--color-paper)}
.cc-btn-link{border-color:transparent;background:transparent;text-decoration:underline;
  padding:11px 6px;letter-spacing:.02em}
/* Reject and Accept share equal prominence; Preferences is the quieter option. */
.cc-actions .cc-btn:not(.cc-btn-link){flex:1 1 auto;min-width:120px}
.cc-btn:focus-visible{outline:2px solid var(--color-ink-black);outline-offset:2px}

/* preferences modal */
.cc-overlay{position:fixed;inset:0;z-index:1001;background:rgba(28,28,28,.55);
  display:flex;align-items:center;justify-content:center;padding:16px}
.cc-modal{background:#fff;color:var(--color-ink-black);border-radius:14px;
  max-width:600px;width:100%;max-height:86vh;overflow:auto;padding:28px 28px 24px;
  font-family:var(--font-base);box-shadow:0 20px 60px rgba(28,28,28,.30)}
.cc-modal h2{font-family:var(--font-display);font-weight:500;font-size:24px;margin:0 0 6px}
.cc-lead{font-size:15px;line-height:1.5;margin:0 0 20px}
.cc-cat{border:1px solid var(--color-skylight);border-radius:10px;padding:16px 18px;margin-bottom:12px}
.cc-cat-head{display:flex;justify-content:space-between;align-items:center;gap:14px}
.cc-cat h3{font-family:var(--font-base);font-weight:700;font-size:16px;margin:0}
.cc-cat p{font-size:14px;line-height:1.5;margin:8px 0 0}
.cc-modal-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}
.cc-modal-actions .cc-btn{flex:1 1 auto;min-width:130px}

/* toggle switch */
.cc-switch{position:relative;display:inline-block;width:46px;height:26px;flex:0 0 auto}
.cc-switch input{opacity:0;width:0;height:0}
.cc-slider{position:absolute;inset:0;background:var(--color-skylight);border-radius:999px;transition:.2s;cursor:pointer}
.cc-slider::before{content:"";position:absolute;height:20px;width:20px;left:3px;top:3px;
  background:#fff;border-radius:50%;transition:.2s}
.cc-switch input:checked + .cc-slider{background:var(--color-teal)}
.cc-switch input:checked + .cc-slider::before{transform:translateX(20px)}
.cc-switch input:disabled + .cc-slider{opacity:.55;cursor:not-allowed}
.cc-switch input:focus-visible + .cc-slider{outline:2px solid var(--color-ink-black);outline-offset:2px}

@media(max-width:520px){
  .cc-banner{left:8px;right:8px;bottom:8px;padding:18px 18px}
  .cc-actions .cc-btn:not(.cc-btn-link){flex:1 1 100%}
}
