/* gv-consent-banner — the owned consent layer (DECISIONS 082), in the age gate's design language: the same card, the
   theme's one-button-system tokens (080) for the pair, the same 076 grays. Hidden unless <html> carries the pending
   class the <head> script sets; the GPC line shows only under html.gv-gpc. Below the age gate (z 999999): a first-time
   visitor on a DTC store answers the age question first, then this. */
#gv-consent-banner{display:none}
html.gv-consent-pending #gv-consent-banner{display:block}
/* While the age gate is in front (html.gv-age-pending — the <head> script on a gated store, cleared on confirm) the
   banner stays hidden even though consent is pending: measured 2026-09-21 on a fresh Got Vape visit, both dialogs
   painted at once, the banner under the gate's dim. One question at a time, as the live Shopify gate did. */
html.gv-age-pending #gv-consent-banner{display:none}
#gv-consent-banner{position:fixed;right:16px;bottom:16px;left:16px;z-index:999990}
#gv-consent-banner .gv-cb-card{background:#fff;max-width:560px;margin:0 auto;padding:20px 22px;border-radius:16px;box-shadow:0 8px 32px rgba(0,0,0,.22);text-align:left}
#gv-consent-banner .gv-cb-body{font-size:.9375rem;color:#333;line-height:1.55;margin:0 0 12px}
#gv-consent-banner .gv-cb-body a{color:inherit;text-decoration:underline}
#gv-consent-banner .gv-cb-gpc{display:none;font-size:.8125rem;color:#6d6d6d;line-height:1.5;margin:0 0 12px}
html.gv-gpc #gv-consent-banner .gv-cb-gpc{display:block}
#gv-consent-banner .gv-cb-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
#gv-consent-banner .gv-cb-btn{margin:0;white-space:normal}
#gv-consent-banner .gv-cb-choices{font-size:.875rem;color:#6d6d6d;text-decoration:underline;margin-left:auto}
@media (min-width:768px){#gv-consent-banner{left:auto;right:24px;bottom:24px;width:min(560px,calc(100vw - 48px))}}
@media (prefers-reduced-motion: reduce){#gv-consent-banner *{transition:none}}
