File size: 1,625 Bytes
e1b3e71 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | /* shell/errorBoundary.css — WAVE 30 item 2 (R5): the contained-failure card.
New classes only, co-located with the component that imports them, following
`shell/navExtras.css`'s precedent — the shell's own rail and placeholder classes
stay in index.css untouched (that file is another session's fence this wave).
⚠ Font sizes are tokens, never literals: `verify_ui.py`'s R5 sweep reads EVERY
stylesheet under `src/`, not just index.css. */
/* The tone strip is the whole point of this rule. `.shell-placeholder` already
centres a heading, a sentence and a retry button — that is what the nav-failed
and data-error cards look like, and both of those mean "it did not load". This
one means "it broke", and a reader who cannot tell those apart reports the wrong
thing. The strip takes the `-deep` weight because it reads as a stroke
(DESIGN.md: strokes and text take `-deep`, flat surfaces take the pastel base). */
.shell-crash {
border-left: 3px solid var(--lp-red-deep);
background: var(--lp-red-tint);
border-radius: var(--lp-r-lg);
/* Contained, so a long message cannot push the sidebar off-screen — the failure
panel must never be the second way this surface breaks the app. */
max-width: 640px;
margin: 24px;
}
/* The thrown message, verbatim. Monospace because it is a machine's words, not
ours, and a reader pasting it back to us should be able to see where it ends. */
.shell-crash-detail {
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
font-size: var(--lp-fs-2xs);
color: var(--lp-red-deep);
overflow-wrap: anywhere;
}
|