/* SHARED·SAFETYTEXT (1036) — the safety text block. Extracted 2026-09-03 (brief 046)
 * from web/css/app.css, where .safety-tel/.safety-chip sat UNOWNED after the 2026-08-25
 * consolidation retired chat's private .safety-card box (411's job in the wrong family).
 *
 * THE TEXT BLOCK IS NOT THE BOX. 411 SHARED·NOTICEBOX owns the chassis (kind bar + .bxh
 * head) that the acute line mounts INSIDE; this card owns the parsed line itself and the
 * quiet HCP chip. The one rule that reaches across — .ntc.acute .safety-text { margin:0 } —
 * leads with .ntc and stays in noticebox.css per the 2026-08-25 host-context rule.
 *
 * 🔴 SaMD rule 4 (D-386/D-394): rendering only. Detection lives in the worker's D-349
 * gate; nothing here reads the baby's data or judges a message. Calm register — no
 * flashing, no all-caps; the number is the only thing raised.
 *
 * HOSTS (both live in the app today):
 *   · the acute noticebox — chat's hard D-349 gate. The box's own .ntc.acute p sets
 *     body-sm size and zero margin; it outranks .safety-text on specificity, so the line
 *     keeps the box's type there.
 *   · the chat bubble — the soft type-4 path, inside .msg-content. The .safety-text
 *     declarations below are the values the line COMPUTED there before this file existed
 *     (14px / 1.6 inherited from .msg, the app-wide p bottom margin, text-primary from
 *     the root), now declared under the card's own root class per D-470/475
 *     self-containment. Same pixels, stated once — and portable to the next host. */

.safety-text { margin: 0 0 var(--space-12); font-family: var(--font-body); font-size: var(--size-14); font-weight: var(--weight-400); line-height: var(--leading-160); color: var(--text-primary); }

/* The emergency number — the one thing on this card that must be tappable one-handed. */
.safety-tel { position: relative; color: var(--teal-700); font-weight: var(--weight-600); text-decoration: underline; text-underline-offset: 2px; white-space: nowrap; } /* token-exception */
/* The 44px touch floor. The ink stays exactly as loud as it was — an invisible, centred
 * ::after grows the HIT AREA to --tap-target (D-511) without growing the digits or moving the
 * line. This number is tapped by a parent who has decided she needs help now, usually one-handed
 * and not looking at the screen; a text-sized target in running prose is a miss she pays for.
 * Two links on adjacent wrapped lines can overlap slop; where they do, the later one wins the
 * tap, and every one of these links is an emergency number, so either answer is the right one. */
.safety-tel::after {
  content: '';
  position: absolute;
  left: 50%;
  top: 50%;
  width: var(--tap-target);
  height: var(--tap-target);
  transform: translate(-50%, -50%);
}
/* Micro-states (D-422 / G6): the link is a real control; press dims, focus rings. */
.safety-tel:active { opacity: 0.8; }
.safety-tel:focus-visible { outline: var(--focus-ring); outline-offset: var(--focus-offset); }

/* Quiet HCP chip under a type-4 soft redirect bubble */
/* 🔴 IT IS A SENTENCE, NOT A CONTROL, AND IT MUST NOT WEAR THE BUTTON'S CLOTHES.
 * Re-applied 2026-09-08 when the cohort landed. This card was extracted from app.css on
 * 2026-09-05 carrying the pill shape — `background: var(--paper-card); border: 1px solid
 * var(--rule); border-radius: var(--radius-pill)` — which is, to the declaration, the app's own
 * tappable `.chip` (and `.depth-pill`) minus their `cursor: pointer`. So the one thing on a
 * safety bubble that most invites a tap was the one thing with nowhere to go, and there is
 * nowhere for it to go BY DESIGN: it is a static signpost to a human, never a computed action,
 * and wiring it would be the overstep the whole type-4 script exists to avoid.
 * The de-afforded form landed on the fixes branch the same morning (59d0b5b4); the extraction
 * predates it, so a plain merge would have put the pill back. It is a quiet meta line in the
 * label face, like every other note in this view. */
.safety-chip {
  align-self: flex-start;
  font-family: var(--font-label);
  /* --text-meta IS var(--size-12) — the same 12px app.css carried; check 25 wants the ROLE in a
   * card file, and "a quiet meta line" is exactly the role this is. Value unchanged. */
  font-size: var(--text-meta);
  line-height: var(--leading-140);
  color: var(--text-secondary);
  margin-top: var(--space-8);
}
