/* Scale text, never the viewport: editor canvas and tour coordinates stay in CSS pixels. */
:root { --flowi-text-scale: 1; }
html[data-text-scale="112"] { --flowi-text-scale: 1.12; font-size: 112%; }
html[data-text-scale="125"] { --flowi-text-scale: 1.25; font-size: 125%; }
html:is([data-text-scale="112"], [data-text-scale="125"]) :is(input, textarea, select) { font-size: 1.125rem !important; line-height: 1.5 !important; }
html[data-blue-light="low"] { --flowi-warm-opacity: .08; }
html[data-blue-light="medium"] { --flowi-warm-opacity: .16; }
html[data-blue-light="high"] { --flowi-warm-opacity: .24; }
/* Multiply removes blue without changing fixed-position containing blocks or pointer targets. */
body::after, dialog::after {
  content: ""; position: fixed; inset: 0; z-index: 2147483647; pointer-events: none;
  background: rgb(255 213 153 / var(--flowi-warm-opacity, 0)); mix-blend-mode: multiply;
}
html[data-reduce-motion="true"] *, html[data-reduce-motion="true"] *::before, html[data-reduce-motion="true"] *::after {
  animation: none !important; transition: none !important; scroll-behavior: auto !important;
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}
@media (forced-colors: active) { body::after, dialog::after { display: none; } }
