/* =========================================================
   SDM · Cookie consent banner + preference centre
   Brand-matched to css/style.css (ink navy / electric blue).
   Loaded on every page; UI is injected by js/cookie-consent.js
   ========================================================= */

.cc-root{
  --cc-ink:#0A1230;
  --cc-ink-2:#0E1A44;
  --cc-electric:#2436E8;
  --cc-electric-soft:#4b5cff;
  --cc-cyan:#12B5CE;
  --cc-white:#fff;
  --cc-mute:#A8B2CE;
  --cc-line:rgba(255,255,255,.16);
  font-family:"Manrope","Noto Sans SC",system-ui,sans-serif;
}

/* ---------------- banner ---------------- */
.cc-banner{
  position:fixed;left:0;right:0;bottom:0;z-index:9000;
  background:var(--cc-ink);
  border-top:2px solid var(--cc-electric);
  box-shadow:0 -18px 50px -20px rgba(0,0,0,.75);
  transform:translateY(110%);
  transition:transform .45s cubic-bezier(.22,.61,.36,1);
}
.cc-banner.cc-in{transform:translateY(0);}
.cc-banner-inner{
  max-width:1180px;margin:0 auto;
  padding:22px clamp(20px,5vw,64px);
  display:flex;gap:26px;align-items:flex-start;justify-content:space-between;
  flex-wrap:wrap;
}
.cc-banner-text{flex:1 1 440px;min-width:0;}
.cc-banner-title{
  font-family:"Sora","Noto Sans SC",system-ui,sans-serif;
  font-size:1.02rem;font-weight:700;color:var(--cc-white);
  margin-bottom:7px;letter-spacing:-.01em;
}
.cc-banner-title .cc-colon{color:var(--cc-cyan);}
.cc-banner-body{color:var(--cc-mute);font-size:.88rem;line-height:1.62;}
.cc-banner-body a{color:#8f9dff;font-weight:600;text-decoration:underline;text-underline-offset:2px;}
.cc-banner-body a:hover{color:#fff;}
.cc-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;flex:0 0 auto;}

/* buttons — Accept and Reject are deliberately identical in
   size/weight/contrast: refusing must be as easy as accepting. */
.cc-btn{
  font:inherit;font-size:.86rem;font-weight:700;
  padding:12px 22px;border-radius:999px;border:1.5px solid transparent;
  cursor:pointer;white-space:nowrap;
  transition:background .2s,border-color .2s,transform .2s,color .2s;
}
.cc-btn:focus-visible{outline:3px solid var(--cc-cyan);outline-offset:2px;}
.cc-btn-primary{background:var(--cc-electric);color:#fff;border-color:var(--cc-electric);}
.cc-btn-primary:hover{background:var(--cc-electric-soft);border-color:var(--cc-electric-soft);transform:translateY(-1px);}
.cc-btn-secondary{background:transparent;color:#fff;border-color:rgba(255,255,255,.55);}
.cc-btn-secondary:hover{background:rgba(255,255,255,.1);border-color:#fff;transform:translateY(-1px);}
.cc-btn-link{
  background:none;border:none;color:var(--cc-mute);font:inherit;font-size:.84rem;
  font-weight:600;text-decoration:underline;text-underline-offset:3px;
  cursor:pointer;padding:10px 4px;
}
.cc-btn-link:hover{color:#fff;}
.cc-btn-link:focus-visible{outline:3px solid var(--cc-cyan);outline-offset:2px;border-radius:4px;}

/* ---------------- preference modal ---------------- */
.cc-overlay{
  position:fixed;inset:0;z-index:9100;
  background:rgba(6,10,28,.68);backdrop-filter:blur(3px);
  display:flex;align-items:center;justify-content:center;
  padding:20px;opacity:0;pointer-events:none;transition:opacity .28s;
}
.cc-overlay.cc-in{opacity:1;pointer-events:auto;}
.cc-modal{
  background:#fff;color:var(--cc-ink);
  width:min(680px,100%);max-height:88vh;overflow-y:auto;
  border-radius:18px;box-shadow:0 40px 90px -30px rgba(0,0,0,.6);
  transform:translateY(16px) scale(.98);transition:transform .28s cubic-bezier(.22,.61,.36,1);
}
.cc-overlay.cc-in .cc-modal{transform:translateY(0) scale(1);}
.cc-modal-head{
  padding:26px clamp(20px,4vw,34px) 18px;border-bottom:1px solid #DCE2EF;
  position:sticky;top:0;background:#fff;border-radius:18px 18px 0 0;z-index:1;
}
.cc-modal-title{
  font-family:"Sora","Noto Sans SC",system-ui,sans-serif;
  font-size:1.28rem;font-weight:800;letter-spacing:-.02em;
}
.cc-modal-title .cc-colon{color:var(--cc-electric);}
.cc-modal-intro{color:#5B6685;font-size:.88rem;margin-top:9px;line-height:1.62;}
.cc-modal-intro a{color:var(--cc-electric);font-weight:600;text-decoration:underline;text-underline-offset:2px;}
.cc-modal-body{padding:8px clamp(20px,4vw,34px) 4px;}
.cc-close{
  position:absolute;top:20px;right:20px;width:34px;height:34px;
  border:none;background:#EAEEF7;border-radius:50%;cursor:pointer;
  color:#5B6685;font-size:1.15rem;line-height:1;
}
.cc-close:hover{background:#DCE2EF;color:var(--cc-ink);}
.cc-close:focus-visible{outline:3px solid var(--cc-electric);outline-offset:2px;}

/* category rows */
.cc-cat{border-bottom:1px solid #EAEEF7;padding:18px 0;}
.cc-cat:last-child{border-bottom:none;}
.cc-cat-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;}
.cc-cat-name{
  font-family:"Sora","Noto Sans SC",system-ui,sans-serif;
  font-size:.99rem;font-weight:700;
}
.cc-cat-desc{color:#5B6685;font-size:.85rem;line-height:1.6;margin-top:7px;}
.cc-cat-meta{color:#8b97ba;font-size:.76rem;margin-top:8px;}
.cc-always{
  flex:0 0 auto;font-size:.76rem;font-weight:700;color:var(--cc-cyan);
  background:rgba(18,181,206,.1);padding:6px 12px;border-radius:999px;white-space:nowrap;
}

/* switch — unticked by default for every optional category */
.cc-switch{flex:0 0 auto;position:relative;display:inline-block;width:50px;height:28px;}
.cc-switch input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer;z-index:2;}
.cc-track{
  position:absolute;inset:0;background:#C6CEE2;border-radius:999px;
  transition:background .22s;pointer-events:none;
}
.cc-track::after{
  content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;
  background:#fff;border-radius:50%;transition:transform .22s;
  box-shadow:0 2px 5px rgba(0,0,0,.25);
}
.cc-switch input:checked + .cc-track{background:var(--cc-electric);}
.cc-switch input:checked + .cc-track::after{transform:translateX(22px);}
.cc-switch input:focus-visible + .cc-track{outline:3px solid var(--cc-electric);outline-offset:3px;}

.cc-modal-foot{
  display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end;
  padding:18px clamp(20px,4vw,34px) 24px;border-top:1px solid #DCE2EF;
  position:sticky;bottom:0;background:#fff;border-radius:0 0 18px 18px;
}
.cc-modal-foot .cc-btn-secondary{color:var(--cc-ink);border-color:#C6CEE2;}
.cc-modal-foot .cc-btn-secondary:hover{background:#EAEEF7;border-color:var(--cc-ink);}
.cc-gpc{
  margin:14px 0 2px;padding:12px 14px;border-radius:12px;
  background:rgba(18,181,206,.09);border:1px solid rgba(18,181,206,.3);
  color:#0e6d7d;font-size:.82rem;line-height:1.55;
}

/* ---------------- responsive ---------------- */
@media (max-width:860px){
  .cc-banner-inner{flex-direction:column;gap:18px;padding:20px clamp(18px,5vw,30px);}
  .cc-actions{width:100%;}
  .cc-actions .cc-btn{flex:1 1 calc(50% - 5px);text-align:center;}
  .cc-btn-link{flex:1 1 100%;text-align:center;}
  .cc-modal{max-height:92vh;}
}
@media (prefers-reduced-motion:reduce){
  .cc-banner,.cc-overlay,.cc-modal,.cc-btn,.cc-track,.cc-track::after{transition:none !important;}
}
