/* ---------- Gate 2B: tracking-consent banner ----------
   Non-blocking (role="region", not a modal dialog) — never traps
   focus or covers the sign-in form. Defaults to hidden; js/marketing.js
   shows it only when no consent choice has been recorded yet. */
#consent-banner{
  display:none;position:fixed;left:0;right:0;bottom:0;z-index:95;
  background:rgba(18,19,28,.97);border-top:1px solid var(--line-strong);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  padding:16px 18px;box-shadow:0 -12px 30px rgba(6,7,12,.5);
}
.consent-inner{
  max-width:1080px;margin:0 auto;display:flex;align-items:center;gap:18px;flex-wrap:wrap;
}
.consent-text{flex:1;min-width:240px;font-size:13px;line-height:1.55;color:#D5DBF0}
.consent-text b{color:var(--text)}
.consent-actions{display:flex;gap:10px;flex-wrap:wrap}
.consent-actions .btn{white-space:nowrap}

@media (max-width:640px){
  #consent-banner{padding:14px 14px calc(14px + env(safe-area-inset-bottom))}
  .consent-inner{flex-direction:column;align-items:stretch}
  .consent-actions{width:100%}
  .consent-actions .btn{flex:1}
}

/* Keep the PWA install toolbar (bottom-right) clear of this banner
   when both happen to be visible at once — pure layout, no coupling
   between js/pwa.js and js/marketing.js. */
body.consent-banner-open #pwa-toolbar{
  bottom:104px;
}
@media (max-width:640px){
  body.consent-banner-open #pwa-toolbar{
    bottom:150px;
  }
}

/* ================================================================
   CHECKOUT CONFIRMATION
   Price, access period and the cancellation waiver, shown before any
   money moves. The continue button is disabled until the customer
   ticks the box themselves — a pre-ticked box would not be consent.
   ================================================================ */
.checkout-confirm-open{overflow:hidden}
.checkout-confirm-overlay{
  position:fixed;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;
  padding:20px;background:rgba(8,9,14,.72);backdrop-filter:blur(4px);
}
.checkout-confirm{
  width:100%;max-width:480px;max-height:calc(100dvh - 40px);overflow-y:auto;
  background:var(--card);border:1px solid var(--line-strong);border-radius:18px;
  padding:24px 26px;box-shadow:var(--shadow);
}
.checkout-confirm:focus{outline:none}
.checkout-confirm h2{margin:0 0 16px;font-size:20px;font-weight:800;letter-spacing:-.3px}
.checkout-confirm-terms{margin:0 0 16px;display:flex;flex-direction:column;gap:9px}
.checkout-confirm-terms > div{display:flex;justify-content:space-between;gap:16px;
  padding-bottom:9px;border-bottom:1px solid var(--line)}
.checkout-confirm-terms > div:last-child{border-bottom:none;padding-bottom:0}
.checkout-confirm-terms dt{font-size:11px;font-weight:800;letter-spacing:.6px;
  text-transform:uppercase;color:var(--faint);flex:none}
.checkout-confirm-terms dd{margin:0;font-size:15px;font-weight:700;color:var(--text);text-align:right}
.checkout-confirm-drip{margin:0 0 16px;font-size:13px;line-height:1.55;color:var(--muted)}
.checkout-confirm-waiver{display:flex;gap:11px;align-items:flex-start;margin-bottom:20px;
  padding:13px 15px;border-radius:12px;background:rgba(233,180,76,.07);
  border:1px solid rgba(233,180,76,.32);font-size:13.5px;line-height:1.55;color:#F3DCAF;cursor:pointer}
.checkout-confirm-waiver input{margin-top:2px;flex:none;width:17px;height:17px;
  accent-color:var(--crimson);cursor:pointer}
.checkout-confirm-actions{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}
.checkout-confirm-actions .btn[disabled]{opacity:.45;cursor:not-allowed}
@media (max-width:520px){
  .checkout-confirm{padding:20px 18px}
  .checkout-confirm-actions{flex-direction:column-reverse}
  .checkout-confirm-actions .btn{width:100%}
  .checkout-confirm-terms > div{flex-direction:column;gap:3px}
  .checkout-confirm-terms dd{text-align:left}
}
