/* ══════════════════════════════════════════════════════════════════════════
   Preflight — the reset the Tailwind CDN used to ship, kept after its removal.
   ──────────────────────────────────────────────────────────────────────────
   Every signed-in page in this app was authored against Tailwind's preflight:
   zeroed heading margins, list bullets off, links inheriting colour, buttons
   with no chrome, block-level media. The utility classes were removed from
   the templates wave by wave, but the *reset* was still arriving with the
   CDN — so pulling the <script> tag out without this file would restyle
   every page at once in the browser's default direction: blue underlined
   links, giant <h1>s, bulleted nav lists, beveled grey buttons.

   This is a faithful transcription of the rules the app actually relied on
   (Tailwind v3 preflight), with two deliberate changes:

     * default border-color is var(--border) rather than Tailwind's #e5e7eb,
       so an element that sets a border-width without a colour follows the
       theme instead of hardcoding light grey;
     * default ::placeholder colour derives from --fg for the same reason.

   Loaded from base.html BEFORE design-system.css, because resets must lose
   to everything written after them. The standalone auth pages (login, join,
   setup, error) never extended base.html and never had preflight, so they
   neither load nor need this file.
   ══════════════════════════════════════════════════════════════════════════ */

*, ::before, ::after {
  box-sizing: border-box;
  border-width: 0;
  border-style: solid;
  border-color: var(--border, currentColor);
}

html {
  line-height: 1.5;
  -webkit-text-size-adjust: 100%;
  -moz-tab-size: 4;
  tab-size: 4;
  font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,
               "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}

body { margin: 0; line-height: inherit; }

hr { height: 0; color: inherit; border-top-width: 1px; }

abbr:where([title]) { text-decoration: underline dotted; }

h1, h2, h3, h4, h5, h6 { font-size: inherit; font-weight: inherit; }

a { color: inherit; text-decoration: inherit; }

b, strong { font-weight: bolder; }

code, kbd, samp, pre {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
               "Liberation Mono", "Courier New", monospace;
  font-size: 1em;
}

small { font-size: 80%; }

sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
sub { bottom: -0.25em; }
sup { top: -0.5em; }

table { text-indent: 0; border-color: inherit; border-collapse: collapse; }

button, input, optgroup, select, textarea {
  font-family: inherit;
  font-size: 100%;
  font-weight: inherit;
  line-height: inherit;
  color: inherit;
  margin: 0;
  padding: 0;
}

button, select { text-transform: none; }

button, [type='button'], [type='reset'], [type='submit'] {
  -webkit-appearance: button;
  background-color: transparent;
  background-image: none;
}

:-moz-focusring { outline: auto; }
:-moz-ui-invalid { box-shadow: none; }

progress { vertical-align: baseline; }

::-webkit-inner-spin-button, ::-webkit-outer-spin-button { height: auto; }

[type='search'] { -webkit-appearance: textfield; outline-offset: -2px; }
::-webkit-search-decoration { -webkit-appearance: none; }

::-webkit-file-upload-button { -webkit-appearance: button; font: inherit; }

summary { display: list-item; }

blockquote, dl, dd, h1, h2, h3, h4, h5, h6, hr, figure, p, pre { margin: 0; }

fieldset { margin: 0; padding: 0; }
legend { padding: 0; }

ol, ul, menu { list-style: none; margin: 0; padding: 0; }

textarea { resize: vertical; }

input::placeholder, textarea::placeholder {
  opacity: 1;
  color: color-mix(in srgb, var(--fg, #5a5248) 40%, transparent);
}

button, [role='button'] { cursor: pointer; }

:disabled { cursor: default; }

img, svg, video, canvas, audio, iframe, embed, object {
  display: block;
  vertical-align: middle;
}

img, video { max-width: 100%; height: auto; }
