/* CONSENT-SLIM (2026-10-09): the analytics choice is a slim, non-modal bar
   fixed to the bottom of the viewport. Cookie Notice §4: two buttons of equal
   size and weight, nothing pre-chosen, and the page is never blocked.
   analyticsBanner.ts publishes the bar's border-box height as
   --analytics-banner-space. The spacer, scroll-padding, the app shell and every
   other bottom-anchored surface reserve that height (src/index.css), and it is
   0px once a choice exists. On BottomNav routes, src/index.css sets
   --analytics-banner-bottom to the nav's height so the bar sits above the nav.
   Colours are the app's theme-flipping tokens, so light and dark follow the
   app; the hex fallbacks are the light values, for the homepage and static
   pages, which load no token sheet. Nothing here animates (18.378).
   Asserted in src/lib/analyticsBanner.css.test.ts. */
html{scroll-padding-bottom:var(--analytics-banner-space, 0px)}
.analytics-choice-banner{position:fixed;z-index:45;left:0;right:0;bottom:var(--analytics-banner-bottom, 0px);box-sizing:border-box;margin:0 auto;container-type:inline-size;padding:8px max(16px, env(safe-area-inset-right)) 8px max(16px, env(safe-area-inset-left));padding-bottom:calc(8px + var(--analytics-banner-inset, env(safe-area-inset-bottom)));background:var(--bg-base, #FAFAF7);color:var(--text-primary, #111111);border-top:1px solid var(--border-hairline, #DADAD3);font:500 15px/1.35 'Bricolage Grotesque',sans-serif}
.analytics-choice-banner[hidden]{display:none}
/* A reopen focuses the bar itself, never one of the two choices. */
.analytics-choice-banner:focus{outline:none}
.analytics-choice-banner:focus-visible{outline:2px solid var(--violet, #7C3AED);outline-offset:-4px}
.analytics-choice-inner{display:grid;gap:2px;max-width:960px;margin:0 auto}
@container (min-width: 640px){.analytics-choice-inner{grid-template-columns:minmax(0, 1fr) auto;align-items:center;column-gap:24px}}
.analytics-choice-text{margin:0}
.analytics-choice-text strong{font-weight:600}
.analytics-choice-notice{white-space:nowrap}
.analytics-choice-text a{display:inline-flex;align-items:center;min-height:44px;color:inherit;text-decoration:underline;text-underline-offset:3px}
/* The outline pill (BRAND_GUARD: 1px ink edge, fully round, 15px/600), restated
   because this sheet also serves the homepage and static pages, which load no
   app classes. A target for the step-4 pill sweep. */
.analytics-choice-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.analytics-choice-button{min-height:44px;margin:0;border:1px solid currentColor;border-radius:999px;background:transparent;color:inherit;font:600 15px/1.2 'Bricolage Grotesque',sans-serif;padding:8px 12px;cursor:pointer}
.analytics-choice-button:focus-visible,.analytics-choice-text a:focus-visible{outline:2px solid var(--violet, #7C3AED);outline-offset:2px}
/* The toast stays readable after a choice, above the bar and above the nav. */
.analytics-choice-status{position:fixed;z-index:46;left:0;right:0;bottom:calc(var(--analytics-banner-bottom, 0px) + var(--analytics-banner-space, 0px));box-sizing:border-box;margin:0 auto;pointer-events:none;padding:8px 16px max(8px, calc(8px + var(--analytics-banner-inset, env(safe-area-inset-bottom)) - var(--analytics-banner-space, 0px)));background:var(--bg-base, #FAFAF7);color:var(--text-primary, #111111);border-top:1px solid var(--border-hairline, #DADAD3);font:500 15px/1.35 'Bricolage Grotesque',sans-serif}
.analytics-choice-status:empty{display:none}
.analytics-choice-spacer{height:var(--analytics-banner-space, 0px)}
/* App: above every page bar and FAB (z 40 at most), below sheets (z 50).
   Homepage: above Masra (z 60) and its speech (z 61), below the menu sheet (z 80). */
body:has(#landing-q) .analytics-choice-banner,body:has(#landing-q) .analytics-choice-status{z-index:70}
/* A printed Cookie Notice or policy carries no consent controls. */
@media print{.analytics-choice-banner,.analytics-choice-status,.analytics-choice-spacer{display:none}}
