| 415 |
${what} takes a bare number of degrees |
| 500 |
mesh needs a base colour and at least one blob |
| 504 |
mesh item "${it}" needs a position |
| 509 |
mesh needs a base colour first (an item without "at") |
| 521 |
gradient needs a kind: "linear", "radial", "conic" or "mesh" (any of them can be "repeating") |
| 558 |
gradient needs at least two stops |
| 576 |
"${head}" is not a linear gradient direction |
| 587 |
"${a}" is not part of a radial gradient shape |
| 602 |
"${head}" is not a conic gradient prefix |
| 617 |
"${s}" is a midpoint, so it has to sit between two colours |
| 626 |
a gradient stop is missing its color (got "${s}") |
| 633 |
gradient stop "${s}" is not a color |
| 666 |
gap needs a value |
| 680 |
"${a}" is written twice in ${dir} - the second copy wins |
| 681 |
two words in ${dir} write ${prop}: "${a}" overrides "${prev}" |
| 706 |
unknown word "${a}" in ${dir} |
| 728 |
${a} needs a number |
| 745 |
unknown animate part "${a}" |
| 773 |
grid needs columns |
| 791 |
unknown place "${word}" in stack |
| 799 |
unknown place "${v}" |
| 819 |
unknown center axis "${v}" |
| 840 |
font: "${v.trim()}" looks like the CSS font shorthand, but DSSL's font: means size, line height and colour |
| 870 |
radius "${a}" is not defined, so it will not apply |
| 891 |
unknown align "${v}" |
| 947 |
transition: the CSS form (property first) is not DSSL |
| 952 |
transition duration "${dur}" is not a time |
| 968 |
unknown transition property "${raw}" |
| 997 |
stagger needs a duration like "60" or "120ms", or "none" |
| 1016 |
unknown overlap policy "${(v || '').trim()}" |
| 1040 |
bend-around caps at ±170° - past that the arc folds back on itself |
| 1053 |
stretch needs a positive factor, like "stretch: 1.2" or "stretch: 1.4 vertical" |
| 1062 |
stretch: ${m[1]} would flatten the element to nothing |
| 1095 |
text-stroke needs a width first |
| 1112 |
yield needs the properties to hand back |
| 1115 |
yield: "${n}" is not a CSS property |
| 1128 |
outline-shape needs a width first |
| 1166 |
gradient-flow takes a duration like "6s" or "6000ms", or "none" |
| 1179 |
unknown gradient-flow part "${a}" |
| 1202 |
fluid: "${s}" ${why} |
| 1216 |
${parts[0]} ${parts[1]} |
| 1217 |
${parts[2]} ${parts[3]} |
| 1306 |
!important does not exist in DSSL - "${prop}: ${String(value).replace(/\s*!\s*important\s*/i, '')}" was NOT applied |
| 1346 |
unknown property "${prop}" |
| 1374 |
@media needs a condition |
| 1402 |
@signal ${list[1]} ${list[2]} ( ) has no values |
| 1412 |
bad @signal expression "${expr}" |
| 1451 |
unexpected "${child.kind}" inside tokens |
| 1460 |
behavior "${node.name}" is defined twice |
| 1503 |
"${child.prop}" is not allowed inside motion |
| 1509 |
bad keyframe selector "${child.sel}" |
| 1601 |
unknown behavior "${name}" |
| 1604 |
behavior cycle involving "${name}" |
| 1623 |
"${node.sel}" compiled as a descendant selector ("${combine(ctx.sel, node.sel)}") |
| 1635 |
"${node.name}" needs a selector around it |
| 1647 |
"${d.prop}: ${d.value}" - the -> arrow is motion syntax and does nothing inside seen { } |
| 1688 |
unknown layer "${node.name}", treated as "components" |
| 1710 |
"seen" is engine-native and has no meaning on a pseudo-element |
| 1716 |
only declarations and states (hover { }) may appear inside a pseudo-element block |
| 1725 |
"${d.prop}" is engine-native and has no meaning on ::${node.name} - a pseudo-element has no DOM handle |
| 1750 |
tokens must be top-level or inside @media / @signal |
| 1789 |
raw { } is verbatim CSS, so this line needs a ";" at the end ("${t.slice(0, 40)}") |
| 1797 |
${node.kind} "${node.name}" must be top-level |
| 1808 |
declarations must live inside a selector |
| 1824 |
"${d.prop}" is engine-native and has no meaning on ::${ps.parts[0].pseudo.split(/[\s:(]/)[0]} - a pseudo-element has no DOM handle |
| 1834 |
unknown pseudo-element "::${pseudo}" |
| 1842 |
::slotted() only exists inside a shadow tree, and DSSL styles the light DOM |
| 1850 |
the engine-native "seen" state can't combine with "::${name}" in shadow CSS |
| 1868 |
selector list mixes pseudo-element and plain selectors: "${ctx.sel}" |
| 1913 |
"${d.via}:" expands to display: ${d.value}, which overrides the earlier "display: ${explicit.value}" (line ${explicit.line}) in the same rule - later wins, so the earlier one is dead |
| 1937 |
"${r.sel}" sets the background image twice (gradient: and ${other.prop}): the later one replaces the earlier, so one of them never shows |
| 1953 |
${x.prop} does nothing here: this rule has no CSS animation to tune${usesAnimate ? ', it runs its motion through animate:' : ''} |
| 1965 |
unknown motion "${d.value.motion}" |
| 1984 |
animation "${d.value}" references no motion defined in this sheet - it will not run |