/* ============================================================
   HOUSE.CSS — shared layer for all registers (Laws III–VII)
   Load order: fonts.css → tokens/house.css → tokens/<register>.css
   A surface gets exactly ONE register class (Law: no mixing):
   .reg-colophon | .reg-wire | .reg-meridian | .reg-almanac
   .reg-maison   | .reg-foundry
   ============================================================ */

:root {
  /* spacing — 8px rhythm, vary section gaps on purpose */
  --sp-1: 8px; --sp-2: 16px; --sp-3: 24px; --sp-4: 40px; --sp-5: 64px; --sp-6: 96px;

  /* breakpoints (reference: phone ≤640 · tablet 641–1024 · desktop >1024)
     every surface must work at 390px — test, don't assume */

  /* motion — 150–200ms ease-out, opacity/transform only, no bounce */
  --ease: cubic-bezier(0.2, 0, 0, 1);
  --dur: 180ms;

  /* page shell */
  --shell-max: 1200px;
  --measure-max: 66ch;
}

/* Law IV — the group's data voice, identical in every register.
   Each register maps --font-label / --font-data in its own file. */
.u-label {
  font-family: var(--font-label);
  font-size: 11px;
  font-weight: var(--label-weight, 500);
  letter-spacing: .15em;
  text-transform: uppercase;
}
.u-tnum { font-variant-numeric: tabular-nums; }

/* Law III — structure is rules and hairlines, never blurred shadows */
.u-rule-hard { border-top: 2px solid var(--ink); }
.u-rule-soft { border-top: 1px solid var(--line); }

/* Law VII — attribution, required on every deliverable.
   Marker square takes the register's group accent; text sits muted,
   the name in full ink, whole line accent on hover. */
.attribution {
  display: inline-flex; align-items: center; gap: 8px;
  font-family: var(--font-label);
  font-size: 11px; letter-spacing: .15em; text-transform: uppercase;
  color: var(--muted); text-decoration: none;
}
.attribution::before { content: ""; width: 7px; height: 7px; background: var(--group-accent); }
.attribution b, .attribution strong { color: var(--ink); font-weight: 600; }
.attribution:hover, .attribution:hover b { color: var(--group-accent); }

/* registry chips — rendered from registry.json, never hand-drawn */
.reg-no { font-family: var(--font-data); font-variant-numeric: tabular-nums; letter-spacing: .1em; }
.reg-accent-chip { display: inline-block; width: 12px; height: 12px; border-radius: 2px; background: var(--child-accent, var(--group-accent)); }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
}
