/* ============================================================
 * DS v2 <-> TIDE BRIDGE — the two-canon load contract (CG-1)
 * Ruled 2026-10-19 (Hub Tide Saturation, coordinator): the Hub
 * dual-loads Tide alongside Design Language v2. DS v2 components
 * are load-bearing in shipped product; Tide wins for all NEW
 * composition. This file is the bridge: it lives in canon, is
 * loaded by the host, and is the only place the reconciliation
 * is written down. Hosts never patch this locally.
 *
 * LOAD ORDER (contract — every dual-load host, in this order):
 *   1. DS v2  tokens.css        (ideas.29court.com/design-system/)
 *   2. DS v2  components.css
 *   3. THIS   ds-tide-bridge.css (tide.29court.com/)
 *   4. Tide   tokens.css
 *   5. Tide   tide.css
 *   6. DS v2  components.js     (defer)
 *   7. Tide   tide.js           (defer)
 *
 * COLLISION FINDINGS (empirical, 2026-10-19 spike — see
 * bridge-check.html and the saturation record):
 * - Shared --29d-* names (32): Tide tokens.css declares inside
 *   @layer c29.tokens; DS v2 tokens.css is UNLAYERED. Unlayered
 *   author styles beat layered ones regardless of order, so the
 *   DS values win every shared name. That is safe ONLY because
 *   DS Rev 7 (2026-10-19) re-pointed its values to Tide's ramps:
 *   the winner is value-identical to Tide for bg / surface /
 *   raised / sunken / text-1..3,5 / border / coral / green /
 *   amber / red / teal, in light AND dark. If either file ever
 *   changes a shared value, the other must move the same day or
 *   this bridge must re-pin it below.
 * - --29d-text-4 is the one deliberate divergence: DS pins the
 *   placeholder step for contrast (light #5C686E, dark #9AABB3 —
 *   Rev 7 pins, 5.64:1 / 6.01:1 on raised). Tide's raw ink-4
 *   (#A3AAAA light, #5A6B76 dark) is decorative-only and must
 *   never win. Re-pinned unlayered below, after Tide, so the
 *   pin holds even if Tide's tokens ever leave their layer.
 * - Tide-only tokens flow through untouched: the sand / sea /
 *   sun ramps, --glow, --pane / --pane-strong, --lift / --lift-hi,
 *   --sheen, and the five knobs (--speed --bounce --corner
 *   --density --accent). This is the atmosphere DS v2 lacks.
 * - DS-only tokens are untouched by Tide: the whole spacing,
 *   radius, type, weight, control and shadow scale
 *   (--29d-s-* / --29d-r-* / --29d-text-* sizes / --29d-lh-* /
 *   --29d-weight-* / --29d-control-h* / --29d-shadow-* /
 *   --29d-focus-* / --29d-t-* / --29d-ease*). Tide components
 *   read their own --s1..--s12 / --fs-* scale; both scales may
 *   coexist on one page.
 * - Element styles: Tide's base layer styles h1-h3 / p / a.
 *   Hosts style their own composition elements deliberately
 *   (README platform rule 3); canon never relies on a layered
 *   class beating a host element rule.
 * - Theme: ONE owner after the bridge — Tide (c29-theme /
 *   Tide.theme, localStorage key sh29core_theme, the Shell's
 *   key). Hosts delete private theme keys and toggles. A host
 *   that hardcodes data-theme on <html> must resolve the stored
 *   theme before first paint (inline boot script), because
 *   tide.js only auto-inits when the attribute is absent.
 * - JS: window.DS and window.Tide coexist; neither file writes
 *   the other's namespace (verified in the spike: DS.stepper /
 *   DS.toast / DS.setProgress and every c29-* element register
 *   side by side, zero page errors, light + dark).
 *
 * FALLBACK TOKEN SET (for injected fragments — shim / bridge
 * panels — that render inside a host page): consume the page's
 * loaded tokens as var(--29d-*) with EXACTLY these fallbacks,
 * the DS v2 light values. One set, everywhere, no drift:
 *   --29d-bg #F5EFE3 · --29d-surface #FBF7EF · --29d-raised #FFFDF8
 *   --29d-sunken #ECE3D2 · --29d-text-1 #1E2A30 · --29d-text-2 #46535A
 *   --29d-text-3 #5C686E · --29d-border #E2D6C0 · --29d-border-strong #CDBEA3
 *   --29d-coral-600 #C7471F · --29d-coral-100 #FFE4D4 · --29d-on-coral #FFFFFF
 *   --29d-green-600 #267A43 · --29d-red-600 #BC4038
 *   --29d-r-2 6px · --29d-r-3 8px · --29d-r-4 12px
 *   --29d-shadow-pop: the DS v2 light value (see tokens.css).
 * ============================================================ */

/* The placeholder pin (see findings): DS Rev 7 values, restated
   after Tide so the divergence survives any future unlayering. */
:root {
  --29d-text-4: #5C686E;
}
[data-theme="dark"] {
  --29d-text-4: #9AABB3;
}
