/* ==========================================================
   Cookie Consent Mode: banner, dialog, embed placeholder, cookie table.

   Everything is driven by CSS variables. The defaults below sit in :where(:root), which has no
   specificity, so a theme can set any of them with a plain :root rule and win regardless of load order.
   Accept all and Reject all carry the same weight on purpose.
   ========================================================== */
:where(:root){
  --ccm-bg:#fff;
  --ccm-fg:#16181d;
  --ccm-accent:#1d4ed8;
  --ccm-btn-bg:#16181d;
  --ccm-btn-fg:#fff;
  --ccm-border:1px solid rgba(22,24,29,.2);
  --ccm-line:rgba(22,24,29,.18);
  --ccm-radius:10px;
  --ccm-shadow:0 18px 50px rgba(10,10,10,.25);
  --ccm-font:inherit;
  --ccm-text-size:14.5px;
  --ccm-heading-font:var(--ccm-font);
  --ccm-heading-size:20px;
  --ccm-heading-size-sm:var(--ccm-heading-size);
  --ccm-heading-weight:700;
  --ccm-heading-lh:1.2;
  --ccm-heading-transform:none;
  --ccm-heading-ls:0;
  --ccm-dialog-title-size:24px;
  --ccm-dialog-title-size-sm:var(--ccm-dialog-title-size);
  --ccm-cat-title-size:17px;
  --ccm-btn-font:var(--ccm-font);
  --ccm-btn-weight:600;
  --ccm-btn-size:14px;
  --ccm-btn-ls:0;
  --ccm-btn-transform:none;
  --ccm-btn-pad:12px 20px;
  --ccm-btn-border:1.5px;
  --ccm-btn-lh:1.5;
  --ccm-switch-on:var(--ccm-fg);
  --ccm-switch-on-knob:var(--ccm-bg);
  --ccm-offset:18px;
  --ccm-width:470px;
  --ccm-z:99990;
}

.ccm[hidden], .ccm-dialog[hidden], .ccm-scrim[hidden], .ccm-reopen[hidden]{ display:none !important; }

/* buttons */
.ccm-btn{
  display:inline-block; cursor:pointer; text-align:center; text-decoration:none;
  font-family:var(--ccm-btn-font); font-weight:var(--ccm-btn-weight); font-size:var(--ccm-btn-size); line-height:var(--ccm-btn-lh);
  letter-spacing:var(--ccm-btn-ls); text-transform:var(--ccm-btn-transform);
  padding:var(--ccm-btn-pad); border:var(--ccm-btn-border) solid currentColor; border-radius:var(--ccm-radius);
  transition:background .22s, color .22s, border-color .22s;
}
.ccm-btn--primary{ background:var(--ccm-btn-bg); color:var(--ccm-btn-fg); border-color:var(--ccm-btn-bg); }
.ccm-btn--primary:hover{ background:transparent; color:var(--ccm-btn-bg); }
.ccm-btn--ghost{ background:transparent; color:var(--ccm-fg); border-color:var(--ccm-fg); }
.ccm-btn--ghost:hover{ background:var(--ccm-btn-bg); color:var(--ccm-btn-fg); border-color:var(--ccm-btn-bg); }
.ccm-btn:focus-visible, .ccm-link:focus-visible, .ccm-dialog__x:focus-visible, .ccm-reopen:focus-visible{ outline:2px solid var(--ccm-accent); outline-offset:3px; }

/* banner */
.ccm{
  position:fixed; bottom:var(--ccm-offset); z-index:var(--ccm-z); width:min(var(--ccm-width), calc(100vw - 2 * var(--ccm-offset)));
  opacity:0; transform:translateY(22px); transition:opacity .45s, transform .55s cubic-bezier(.2,.7,.3,1);
}
.ccm--left{ left:var(--ccm-offset); }
.ccm--right{ right:var(--ccm-offset); }
.ccm.is-in{ opacity:1; transform:none; }
.ccm__card{
  background:var(--ccm-bg); color:var(--ccm-fg); border:var(--ccm-border); border-radius:var(--ccm-radius);
  padding:22px 22px 20px; box-shadow:var(--ccm-shadow); font-family:var(--ccm-font);
}
.ccm__h{
  margin:0 0 10px; font-family:var(--ccm-heading-font); font-weight:var(--ccm-heading-weight); font-size:var(--ccm-heading-size);
  line-height:var(--ccm-heading-lh); text-transform:var(--ccm-heading-transform); letter-spacing:var(--ccm-heading-ls);
}
.ccm__p{ margin:0 0 16px; font-size:var(--ccm-text-size); line-height:1.55; }
.ccm__p a, .ccm-dialog__p a{
  color:inherit; text-decoration:underline; text-decoration-color:var(--ccm-accent); text-decoration-thickness:1.5px; text-underline-offset:3px;
}
.ccm__row{ display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:10px; }
.ccm__row .ccm-btn{ flex:1 1 0; min-width:0; padding-inline:14px; white-space:nowrap; }
.ccm-link{
  flex:1 0 100%; background:none; border:0; padding:8px 0 0; color:inherit; cursor:pointer;
  font-family:var(--ccm-btn-font); font-weight:var(--ccm-btn-weight); font-size:calc(var(--ccm-btn-size) - 1px); letter-spacing:var(--ccm-btn-ls); text-transform:var(--ccm-btn-transform);
  text-decoration:underline; text-decoration-color:var(--ccm-accent); text-decoration-thickness:1.5px; text-underline-offset:5px;
}
.ccm-link:hover{ color:var(--ccm-accent); }

/* dialog */
.ccm-scrim{ position:fixed; inset:0; z-index:calc(var(--ccm-z) + 10); background:rgba(10,10,10,.6); opacity:0; transition:opacity .3s; }
.ccm-scrim.is-in{ opacity:1; }
.ccm-dialog{
  position:fixed; z-index:calc(var(--ccm-z) + 20); left:50%; top:50%; width:min(680px, calc(100vw - 28px));
  max-height:calc(100vh - 28px); max-height:calc(100dvh - 28px);
  opacity:0; transform:translate(-50%,-46%); transition:opacity .3s, transform .4s cubic-bezier(.2,.7,.3,1);
}
.ccm-dialog.is-in{ opacity:1; transform:translate(-50%,-50%); }
.ccm-dialog:focus{ outline:none; }
.ccm-dialog__card{
  display:flex; flex-direction:column; max-height:inherit; background:var(--ccm-bg); color:var(--ccm-fg); font-family:var(--ccm-font);
  border:var(--ccm-border); border-radius:var(--ccm-radius); box-shadow:0 30px 80px rgba(10,10,10,.4); overflow:hidden;
}
.ccm-dialog__hd{ display:flex; align-items:center; justify-content:space-between; gap:16px; flex:none; padding:20px 24px 16px; border-bottom:1px solid var(--ccm-line); }
.ccm-dialog__t{
  margin:0; font-family:var(--ccm-heading-font); font-weight:var(--ccm-heading-weight); font-size:var(--ccm-dialog-title-size);
  line-height:var(--ccm-heading-lh); text-transform:var(--ccm-heading-transform); letter-spacing:var(--ccm-heading-ls); color:inherit;
}
.ccm-dialog__x{
  background:none; border:1px solid currentColor; border-radius:var(--ccm-radius); padding:8px 13px; cursor:pointer; color:inherit;
  font-family:var(--ccm-heading-font); font-size:16px; letter-spacing:.08em;
}
.ccm-dialog__x:hover{ background:var(--ccm-btn-bg); color:var(--ccm-btn-fg); border-color:var(--ccm-btn-bg); }
.ccm-dialog__bd{ overflow-y:auto; overscroll-behavior:contain; padding:18px 24px 8px; }
.ccm-dialog__p{ margin:0 0 16px; font-size:var(--ccm-text-size); line-height:1.55; }
.ccm-cat{ border-top:1px solid var(--ccm-line); padding:16px 0; }
.ccm-cat__top{ display:flex; align-items:flex-start; justify-content:space-between; gap:20px; }
.ccm-cat__t{
  margin:0 0 6px; font-family:var(--ccm-heading-font); font-weight:600; font-size:var(--ccm-cat-title-size); line-height:1;
  text-transform:var(--ccm-heading-transform); letter-spacing:var(--ccm-heading-ls); color:inherit;
}
.ccm-cat__txt p{ margin:0; font-size:14px; line-height:1.5; opacity:.85; }
.ccm-cat__on{ flex:none; padding-top:3px; font-weight:600; font-size:12px; letter-spacing:.12em; text-transform:uppercase; color:var(--ccm-accent); white-space:nowrap; }
.ccm-cat__d{ margin-top:10px; font-size:13.5px; }
.ccm-cat__d summary{ display:inline-block; cursor:pointer; padding:4px 0; font-weight:600; font-size:12px; letter-spacing:.1em; text-transform:uppercase; }
.ccm-cat__d ul{ list-style:none; margin:6px 0 0; padding:0; }
.ccm-cat__d li{ margin:0; padding:7px 0; border-top:1px dashed var(--ccm-line); line-height:1.45; }
.ccm-cat__d strong{ font-weight:600; }

/* toggle */
.ccm-switch{ position:relative; flex:none; display:block; width:52px; height:30px; margin-top:2px; cursor:pointer; }
.ccm-switch input{ position:absolute; inset:0; z-index:1; width:100%; height:100%; margin:0; opacity:0; cursor:pointer; }
.ccm-switch__i{ position:absolute; inset:0; border:1.5px solid var(--ccm-fg); border-radius:var(--ccm-radius); background:transparent; transition:background .2s; }
.ccm-switch__i::after{
  content:""; position:absolute; top:3px; left:3px; width:20px; height:20px; background:var(--ccm-fg);
  border-radius:calc(var(--ccm-radius) * .6); transition:transform .2s, background .2s;
}
.ccm-switch input:checked + .ccm-switch__i{ background:var(--ccm-switch-on); }
.ccm-switch input:checked + .ccm-switch__i::after{ transform:translateX(22px); background:var(--ccm-switch-on-knob); }
.ccm-switch input:focus-visible + .ccm-switch__i{ outline:2px solid var(--ccm-accent); outline-offset:3px; }
.ccm-switch__l{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }

.ccm-dialog__ft{ display:flex; flex-wrap:wrap; gap:10px; flex:none; padding:16px 24px 20px; border-top:1px solid var(--ccm-line); }
.ccm-dialog__ft .ccm-btn{ flex:1 1 150px; min-width:0; padding-inline:14px; white-space:nowrap; }

html.ccm-lock{ overflow:hidden; }

/* reopen button */
.ccm-reopen{
  position:fixed; bottom:var(--ccm-offset); z-index:calc(var(--ccm-z) - 5); display:grid; place-items:center; width:44px; height:44px; padding:0;
  background:var(--ccm-btn-bg); color:var(--ccm-btn-fg); border:0; border-radius:50%; cursor:pointer; box-shadow:var(--ccm-shadow);
}
.ccm-reopen--left{ left:var(--ccm-offset); }
.ccm-reopen--right{ right:var(--ccm-offset); }

/* embeds held back until they are allowed */
.ccm-embed{
  box-sizing:border-box; aspect-ratio:var(--ccm-ratio, 16 / 9); display:grid; place-content:center; justify-items:center; gap:14px; text-align:center; padding:24px;
  border:var(--ccm-border); border-radius:var(--ccm-radius); background:rgba(127,127,127,.07); color:inherit; font-family:var(--ccm-font);
}
.ccm-embed p{ margin:0; max-width:34ch; font-size:14px; opacity:.75; }
.ccm-embed.ccm-loaded{ display:block; padding:0; overflow:hidden; }
.ccm-embed iframe{ display:block; width:100%; height:100%; border:0; }

/* the cookie list on the policy page; each row becomes a card on a phone.
   Zero specificity (:where), so a theme restyles it with any selector of its own. */
:where(.ccm-table){ overflow-x:auto; margin:6px 0 24px; }
:where(.ccm-table table){ width:100%; border-collapse:collapse; font-size:.92em; }
:where(.ccm-table th){ text-align:left; font-weight:600; padding:10px 16px 10px 0; border-bottom:2px solid currentColor; white-space:nowrap; }
:where(.ccm-table td){ padding:12px 16px 12px 0; border-bottom:1px solid var(--ccm-line); vertical-align:top; line-height:1.5; }
:where(.ccm-table td:first-child){ font-weight:600; }

@media (max-width:640px){
  .ccm{ left:14px; right:14px; bottom:14px; width:auto; }
  .ccm__card{ padding:18px 16px 16px; }
  .ccm__h{ font-size:var(--ccm-heading-size-sm); }
  .ccm-dialog__hd, .ccm-dialog__bd, .ccm-dialog__ft{ padding-left:16px; padding-right:16px; }
  .ccm-dialog__t{ font-size:var(--ccm-dialog-title-size-sm); }
  :where(.ccm-table){ overflow:visible; }
  :where(.ccm-table table, .ccm-table tbody, .ccm-table tr){ display:block; width:auto; }
  :where(.ccm-table thead){ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
  :where(.ccm-table tr){ border-top:2px solid currentColor; padding:10px 0 8px; }
  :where(.ccm-table tr:last-child){ border-bottom:1px solid var(--ccm-line); }
  :where(.ccm-table td){ display:grid; grid-template-columns:6.6rem 1fr; gap:12px; border:0; padding:5px 0; font-weight:400; }
  :where(.ccm-table td:first-child){ font-weight:600; }
  :where(.ccm-table td)::before{ content:attr(data-label); font-weight:600; font-size:.8em; letter-spacing:.1em; text-transform:uppercase; padding-top:.2em; opacity:.7; }
}
@media (prefers-reduced-motion:reduce){
  .ccm, .ccm-dialog, .ccm-scrim, .ccm-switch__i, .ccm-switch__i::after, .ccm-btn{ transition:none; }
}
@media print{ .ccm, .ccm-dialog, .ccm-scrim, .ccm-reopen{ display:none !important; } }
