/* * The CSS entry (milestone 23, ruling 1). The StyleX plugin emits the compiled * atomic rules into their own layers; what is left here is the element reset * those rules are written against. * * The reset is not optional and not cosmetic. Tailwind's preflight used to * supply it, so every StyleX style in `web/src` is written assuming border-box * sizing, no default margins, unstyled lists and form controls that inherit * their font. Deleting this block does not restore browser defaults — it * silently changes the meaning of every size and spacing value in the app. * Rules are limited to what this app renders; it is not a general reset. * * The reset lives in its own cascade layer, declared here before StyleX emits * its own. Layer order is priority order, and unlayered author CSS outranks * every layer: leaving these rules unlayered silently beat every StyleX rule in * the app, whatever the selector said. */ @layer reset { *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } /* * This is not a reproduction of Tailwind's default stack, which is gone with * the package; text metrics drift here, which ruling 7 accepts. The symbol * families at the end are not decoration: `Select.tsx` renders U+25BE for its * chevron, and Segoe UI does not carry that glyph, so on Windows the stack * has to reach a font that does before it falls back to a substitute box. */ html { line-height: 1.5; -webkit-text-size-adjust: 100%; font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Segoe UI Symbol", "Noto Sans Symbols 2"; } /* Headings carry their scale from StyleX, not from the user agent. */ h1, h2, h3, h4, h5, h6 { font-size: inherit; font-weight: inherit; } ul, ol, menu { list-style: none; } /* Links opt into colour and underline; the shell's nav wants neither. */ a { color: inherit; text-decoration: inherit; } code, kbd, samp, pre { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 1em; } /* Without this the spinner stretches a number input taller than its row. */ ::-webkit-inner-spin-button, ::-webkit-outer-spin-button { height: auto; } /* Firefox draws a red glow on an invalid field; the form shows its own error. */ :-moz-ui-invalid { box-shadow: none; } table { border-collapse: collapse; text-indent: 0; border-color: inherit; } /* * Form controls: inherit type and colour, drop the user-agent chrome, and keep * `appearance: button` so iOS Safari honours a button's border radius. */ button, input, select, optgroup, textarea { font: inherit; letter-spacing: inherit; color: inherit; background-color: transparent; border: 0 solid; border-radius: 0; opacity: 1; } button, input[type="button"], input[type="reset"], input[type="submit"] { appearance: button; } /* A checkbox keeps its native chrome; the rules above would erase it. */ input[type="checkbox"], input[type="radio"] { appearance: auto; } /* * WebKit lays a date/time input out from its own pseudo-elements, and an * empty one comes out shorter than a filled one without these. The query log * filters are two `datetime-local` inputs sitting in a row of controls, so * the height has to hold whether or not a value is set. */ ::-webkit-date-and-time-value { min-height: 1lh; text-align: inherit; } ::-webkit-datetime-edit { display: inline-flex; } ::-webkit-datetime-edit-fields-wrapper { padding: 0; } ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field { padding-block: 0; } ::placeholder { opacity: 1; } /* * Safari below 16.4 resolves `color-mix` against the wrong colour here and * renders the placeholder invisible. The guard admits every engine that * supports either a non-WebKit feature or one Safari only gained afterwards. */ @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) { ::placeholder { color: color-mix(in oklab, currentcolor 50%, transparent); } } /* An inline SVG leaves a baseline gap under a full-width chart. */ svg, img, video, canvas { display: block; vertical-align: middle; } img, video { max-width: 100%; height: auto; } [hidden]:not([hidden="until-found"]) { display: none !important; } }