/* Shared visual primitives. Geometry/composition belongs to the consumer. */
:root { --fs-glass-blur:20px; }
:root,.light {
 --fs-glass-tint:color-mix(in srgb,var(--background) 86%,transparent);
 --fs-glass-highlight:rgb(255 255 255 / .38);
}
:root.dark,body.dark,.dark { --fs-glass-tint:color-mix(in srgb,var(--background) 91%,transparent);--fs-glass-highlight:rgb(255 255 255 / .07); }
@media(prefers-color-scheme:dark){ :root:not(.light) { --fs-glass-tint:color-mix(in srgb,var(--background) 91%,transparent);--fs-glass-highlight:rgb(255 255 255 / .07); } }
/* Contrast variant is only for controls above unpredictable photo/video pixels. */
.fs-surface--contrast {
 --fs-glass-tint:rgb(21 23 26 / .78);--fs-glass-fallback:#15171a;--fs-glass-foreground:#fff;
 --fs-glass-border:rgb(255 255 255 / .22);--fs-glass-highlight:rgb(255 255 255 / .1);--fs-glass-hover:rgb(21 23 26 / .92);
}
/* Type specificity keeps this composition authoritative over third-party button resets. */
.fs-surface--glass,:is(button,a,div).fs-surface--glass,.fs-button--glass {
 border:1px solid var(--fs-glass-border,color-mix(in srgb,var(--border) 65%,transparent));background:var(--fs-glass-fallback,var(--background));color:var(--fs-glass-foreground,var(--foreground));
 box-shadow:inset 0 1px 0 var(--fs-glass-highlight);
}
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
 .fs-surface--glass,:is(button,a,div).fs-surface--glass,.fs-button--glass {
  background:var(--fs-glass-tint);backdrop-filter:blur(var(--fs-glass-blur)) saturate(140%);-webkit-backdrop-filter:blur(var(--fs-glass-blur)) saturate(140%);
 }
}
:is(button,a).fs-surface--glass:hover:where(:not(:disabled):not([aria-disabled="true"])),.fs-button--glass:hover:where(:not(:disabled):not([aria-disabled="true"])) { background:var(--fs-glass-hover,color-mix(in srgb,var(--background) 96%,transparent));border-color:var(--fs-glass-border,var(--border)); }
@media(prefers-reduced-motion:reduce){
 :root { --fs-motion-micro:0ms;--fs-motion-component-enter:0ms;--fs-motion-component-exit:0ms; }
}
