/* register - page-scoped rules, lifted verbatim from the page's
   former inline <style> block. Loaded from page_styles, i.e. the same
   cascade position the inline block held, so no winner can flip. */
/* page-local: composition only — the auth split, same geometry as login.
   The LAYOUT now comes from css/auth/shell.css; this view restates only its own measure,
   which is wider than login's because of the two-up name row below.

   THE TWO-UP SPLIT MOVED TO THE FAMILY SHEET and is no longer restated here - it was
   spelled on the BARE `.auth` class rather than on the `auth--split` handle this template
   emits (register.html:7), so this page and login were the only two of the six emitters
   that happened to get a second track. See css/auth/shell.css for the repair. */
.auth-card { width: min(440px, 100%); }
/* two-up name row, collapses on a narrow viewport */
  .name-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--space-5); }
/* anti-automation decoy: out of sight, out of the tab order, out of the a11y tree */
  .hp-field { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
    overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
@media (max-width: 420px){ .name-row { grid-template-columns: minmax(0, 1fr); } }

/* ---- THE LEGAL-CONSENT CONTROL --------------------------------------------
   Page-scoped because `register.html` is its ONLY emitter, in the whole tree.

   THE CHECKBOX ITSELF IS NOT DECLARED HERE, AND THAT IS THE POINT. The row was repointed
   from `.legal-consent__check` to the shared `.check` (css/shared/common.css), which is
   the application's own established checkbox idiom - `vps/orders/new.html:241,303`,
   `vps/instances/partials/_network_tab.html:257`, `vps/account/index.html:128` and
   `manage/subscriptions/index.html:55` all already spell it that way, and it is the
   bundle's spelling too (bundle/register.html:160). `.check input` then paints the box,
   the checked tick, the focus-visible ring, the disabled state AND the four
   `forced-colors` blocks that hand the control back to the UA.

   RESTATING ANY OF THAT UNDER A BEM NAME WAS THE ALTERNATIVE, AND IT WAS THE WRONG ONE:
   ~15 declarations plus an inline SVG tick duplicated onto a second owner of a WCAG SC
   1.4.11 component, which then drifts silently the first time the shared control moves -
   and the forced-colors half is the half a copy always forgets, which is precisely the
   user for whom `appearance: none` fails closed. Consent is the one control on this page
   that must not be quietly wrong.

   WHAT THE BLOCK STILL OWNS is what the shared idiom has no opinion about: the group's
   own rhythm, the wrapping label, the document list, and the INVALID state. */
.legal-consent { display: flex; flex-direction: column; gap: var(--space-3); }
/* The agreement text. `<label for>`-associated rather than wrapping, so the pointer is
   declared: the tag alone does not carry one. `line-height` is stated because this label
   is a sentence that wraps to two or three lines inside a 440px card, which is not the
   single-line case `.check`'s alignment was tuned for. */
.legal-consent__label { font-size: var(--t-sm); line-height: 1.5; cursor: pointer; }
/* The document list. Same type as a field hint - it is one - but it is a `<p>` carrying
   links rather than the bundle's `<span class="hint">`, so it kills its own UA margin
   instead of leaving a second owner of the group's gap above. */
.legal-consent__help { margin: 0; font-size: var(--t-xs); color: var(--ink-500); }
/* The bundle-version line, which closes the sentence and is not part of the link list.
   Selected as the paragraph's only `<span>` rather than by a class: the two it used to
   carry, `d-block mt-1`, were Bootstrap utilities the Nocturne token layer never replaced
   and that no sheet declared, and re-declaring generic utility names inside a PAGE sheet
   would be a landmine - the next `d-block` anywhere else would silently not apply. */
.legal-consent__help > span { display: block; margin-top: var(--space-1); }
/* THE INVALID STATE, WHICH NOTHING ELSE SUPPLIES. `.input.is-invalid` is scoped to the
   three text-control classes, so a rejected checkbox carried `aria-invalid="true"` and a
   `role="alert"` message while the control itself looked untouched - the failure was
   announced but never SHOWN (WCAG SC 1.4.1: colour/state must not be conveyed by one
   channel alone). Same token and same property as the text controls' rule, so the two
   read as one system. */
.legal-consent__checkbox.is-invalid { border-color: var(--danger); }
