/* Small native HTML replacements for React primitives. Source design tokens/classes stay authoritative. */
dialog::backdrop{background:rgb(0 0 0/.5)}dialog{max-height:calc(100dvh - 2rem);overflow-y:auto}input[role=switch]{appearance:none;width:36px;height:20px;border-radius:9999px;background:hsl(var(--input));position:relative}input[role=switch]:checked{background:hsl(var(--primary))}input[role=switch]::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:100%;background:hsl(var(--background));transition:transform .15s}input[role=switch]:checked::after{transform:translateX(16px)}input[role=switch]:disabled{opacity:.5}
[hidden]{display:none!important}button,a,input,select,summary{touch-action:manipulation}button:disabled{cursor:not-allowed;opacity:.6}svg{flex-shrink:0}summary{list-style-position:outside}summary::marker{color:hsl(var(--primary))}:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:3px}html{scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
/* The compiled Source CSS does not emit top-full; keep the account menu below its trigger. */
#customer-user-menu{top:calc(100% + .25rem);right:0;bottom:auto;margin-top:0}

/* Mobile float clearance (float-clearance.js): fade out instead of covering purchase/newsletter controls. */
[data-float-obscured]{opacity:0!important;visibility:hidden!important;pointer-events:none!important}[data-support-widget-open]{transition:opacity .2s ease,visibility .2s ease}@media (prefers-reduced-motion:reduce){[data-support-widget-open]{transition:none}}
