Title: CSS Logical Properties and Values Module Level 1
Shortname: css-logical
Level: 1
Status: ED
Prepare for TR: no
Work Status: Refining
Group: csswg
ED: https://drafts.csswg.org/css-logical-1/
TR: https://www.w3.org/TR/css-logical-1/
Previous version: https://www.w3.org/TR/2018/WD-css-logical-1-20180827/
Editor: Rossen Atanassov, Microsoft, ratan@microsoft.com, w3cid 49885
Editor: Elika J. Etemad / fantasai, Apple, http://fantasai.inkedblade.net/contact, w3cid 35400
Abstract: This module introduces logical properties and values that provide the author with the ability to control layout through logical, rather than physical, direction and dimension mappings. The module defines logical properties and values for the features defined in [[CSS2]]. These properties are writing-mode relative equivalents of their corresponding physical properties.
Ignored Terms: div, dl, dfn
Ignored Vars: block, inline
Link Defaults: css2 (property) width/height/min-width/min-height/max-width/max-height
WPT Path Prefix: css/css-logical/
WPT Display: closed
Note: See [[!css-writing-modes-4]] for a proper introduction to writing modes;
this module assumes familiarity with its terminology.
Because different writing systems are written in different directions,
a variety of writing modes exist:
left to right, top to bottom;
right to left, top to bottom;
bottom to top, right to left;
etc.
logical concepts like the “start” of a page or line
map differently to physical concepts like the “top” of a line or “left edge” of a paragraph.
Some aspects of a layout are actually relative to the writing directions,
and thus will vary when the page is translated to a different system;
others are inherently relative to the page's physical orientation.
For example,
lists, headings, and paragraphs are typically left-aligned in English;
but actually they are start-aligned, because in Arabic the same constructs are right-aligned,
and a multilingual document will need to accommodate both writing systems accordingly.
The following code exemplifies how using logical syntax can help you write code
that works across different writing systems:
Rendering of the below code in a compatible browser
Quotation in English
اقتباس في العربية
blockquote {
text-align: start; /* left in latin, right in arabic */
margin-inline-start: 0px; /* margin-left in latin, margin-right in arabic */
border-inline-start: 5px solid gray; /* border-left in latin, border-right in arabic */
padding-inline-start: 5px; /* padding-left in latin, padding-right in arabic */
}
Documents might need both logical and physical properties. For instance
the drop shadows on buttons on a page must remain consistent throughout,
so their offset will be chosen based on visual considerations and physical directions,
and not vary by writing system.
Since CSS was originally designed with only physical coordinates in its controls,
this module introduces text-flow–relative equivalents
so that declarations in a CSS style sheet can be expressed
in flow-relative terms.
It defines the mapping and cascading of equivalent properties,
some new properties and values equivalent to those in CSS2.1,
and the principles used to derive their syntaxes.
Future CSS specifications are expected to incorporate both sets of coordinates
in their property and value definitions,
so this module will not track the introduction of flow-relative variants
of newer CSS features.
CSS Writing Modes’ Abstract Box Terminology section
defines how to map between flow-relative and physical terms.
This mapping,
which depends on the used values of
'writing-mode', 'direction', and 'text-orientation',
controls the interpretation of [=flow-relative=] keywords and properties.
Correspondence of physical and flow-relative terms in typical English text layout
Correspondence of physical and flow-relative terms in vertical Chinese text layout
Note: Due to its interaction with ''text-orientation: upright'',
the used 'direction'
depends on the computed values of 'writing-mode' and 'text-orientation'.
getComputedStyle-listing.html
inheritance.html
logicalprops-quirklength.html
Things That Are Unstable
Since implementation of parts of this module is effectively required
for shipping an implementation of CSS Writing Modes on the Web
(in order to correctly implement the default HTML styles),
the CSSWG resolved that
the requisite features in
and
are approved for shipping.
(See FPWD announcement for additional background.)
However, there are a few significant open issues:
The ''border/logical'' keyword on shorthands,
because the name of the keyword may change or it may be replaced by some other syntactic marker.
(This feature will be deferred from this level for further development
if there is no clearly satisfactory mechanism proposed,
see Issue 1282.)
Whether flow-relative longhands inherit from their namesake on the parent,
or are mapped to a physical property and inherit from that property.
(See Issue 3029.)
Whether shorthands like 'margin' expand to both sets of longhands,
or only the ones that were set.
(See Issue 3030.)
Comments, suggestions, and use cases are welcome on these issues.
Please file them in GitHub, tweet them to @csswg, or send them to www-style@w3.org.
Value Definitions
This specification follows the CSS property definition conventions from [[!CSS2]]
using the value definition syntax from [[!CSS-VALUES-3]].
Value types not defined in this specification are defined in CSS Values & Units [[!CSS-VALUES-3]].
Combination with other CSS modules may expand the definitions of these value types.
In addition to the property-specific values listed in their definitions,
all properties defined in this specification
also accept the CSS-wide keywords as their property value.
For readability they have not been repeated explicitly.
Many CSS properties have historically accepted directional keyword values
that are [=physical=]
(top, bottom, left, right).
This specification introduces [=directional keyword=] values that are [=flow-relative=]:
block-start, block-end, inline-start, inline-end.
A property's effect can be either 1-dimensional or 2-dimensional.
When contextually constrained to one dimension,
the flow-relative keywords are abbreviated
(to start and end).
CSS Level 2 properties are here redefined to also accept
flow-relative directional keywords.
Such values can be used in place of the corresponding physical values.
For properties that take multiple keywords,
combinations of flow-relative and physical values are not allowed
(unless otherwise specified in a future specification).
Note: Newer CSS specifications are expected in most cases to define
[=flow-relative=] or [=line-relative=] values
instead of or in addition to any [=physical=] ones.
In general, the mapping of such relative values are expected to use
the [=writing mode=] of the [=containing block=] when affecting the box itself,
and that of the box itself when affecting its contents.
Regardless, which [=writing modes=] is used for the mapping
needs to be explicitly defined.
animations/caption-side-no-interpolation.html
These two values are added only for implementations that support
''caption-side/left'' and ''caption-side/right'' values for 'caption-side'.
The ''caption-side/left'' and ''caption-side/right'' values themselves
are defined to be line-relative.
The existing ''caption/top'' and ''caption/bottom'' values are idiosyncratically redefined
as assigning to the block-start and block-end sides of the table, respectively.
The mapping on this property uses the writing mode of the caption’s containing block
(that is, the table wrapper box).
Flow-Relative Values for the 'float' and 'clear' Properties
animations/float-interpolation.html
logical-values-float-clear-1.html
logical-values-float-clear-2.html
logical-values-float-clear-3.html
logical-values-float-clear-4.html
logical-values-float-clear-reftest.html
logical-values-float-clear.html
The mapping on these properties uses the writing mode of the element’s containing block.
Note: These properties are 1-dimensional in CSS2,
but are planned to be expanded to two dimensions,
and therefore are given unabbreviated flow-relative keywords.
Flow-Relative Values for the 'text-align' Property
Name: text-align
New values: start | end
Computed value: specified keyword
These values are normatively defined in [[!css-text-3]].
Flow-Relative Page Classifications
In CSS, all pages are classified by user agents as either left pages or right pages. [[!CSS2]]
Which page is first in a spread, however,
depends on whether the page progression is left-to-right or right-to-left.
To allow control of page breaking to the page
that is on the earlier or later side of a spread,
rather than to the left or right side of a spread,
this module introduces the following additional keywords
for the 'page-break-after' and 'page-break-before' properties [[!CSS2]]:
recto
Equivalent to 'right' in left-to-right page progressions
and 'left' in right-to-left page progressions.
verso
Equivalent to 'left' in left-to-right page progressions
and 'right' in right-to-left page progressions.
These values are computed as specified
and are further defined in [[!css-break-3]].
Although authors typically place page numbers using physical placements,
the contents of headers often follows conventions depending
on which page in the spread is earlier.
Therefore the following flow-relative page selectors
are also added to support flow-relative page selection:
:recto
Equivalent to ':right' in left-to-right page progressions
and ':left' in right-to-left page progressions.
:verso
Equivalent to ':left' in left-to-right page progressions
and ':right' in right-to-left page progressions.
The flow-relative page selectors have specificity equal to
the ':left' and ':right' page selectors.
Flow-Relative Box Model Properties
For many formatting effects,
the axis or direction affected is encoded in the property name
rather than in its value.
The type of directional or axis mapping
(flow-relative or physical)
of each such property
is called its mapping logic.
Historically, all properties have been encoded in [=physical=] terms;
this specification introduces new CSS properties
that are flow-relative equivalents
of CSS2’s physical box model properties.
Note: Newer CSS specifications are expected in most cases to define
[=flow-relative=] or [=line-relative=] properties
instead of or in addition to any [=physical=] ones.
Each set of parallel
[=flow-relative=] properties and [=physical=] properties
(ignoring [=shorthand=] properties)
related by setting equivalent styles on the various sides or dimensions of a box,
forms a logical property group.
For example, the 'padding-*' properties
form a single logical property group,
the 'margin-*' properties
form a separate logical property group,
the 'border-*-style' properties
form another logical property group,
etc.
(Each [=longhand property=] can belong to at most one logical property group.)
Within each [=logical property group=],
corresponding [=flow-relative=] and [=physical=] properties
are paired using the element’s own
[=computed value|computed=] [=writing mode=].
Although the [=specified value=] of each property remains distinct,
paired properties share a [=computed value=].
This shared value is determined by [=cascading=]
the declarations of both properties together as one;
in other words, the [=computed value=] of both properties in the pair
is derived from the [=specified value=] of the property declared with
higher priority in the CSS [=cascade=]. [[!CSS-CASCADE-3]]
Note that this requires implementations to maintain
relative order of declarations within a CSS declaration block,
which was not previously required for CSS cascading.
It also requires that 'writing-mode', 'direction', and 'text-orientation'
be computed as a prerequisite for cascading together
the [=flow-relative=] and [=physical=] declarations
of a [=logical property group=]
to find their [=computed values=].
For example, given the following rule:
p {
margin-inline-start: 1px;
margin-left: 2px;
margin-inline-end: 3px;
}
In a paragraph with computed 'writing-mode' being ''horizontal-tb''
and computed 'direction' being ''ltr'',
the computed value of 'margin-left' is ''2px'',
since for that 'writing-mode' and 'direction',
'margin-inline-start' and 'margin-left' share a computed value,
and the declaration of 'margin-left'
is after the declaration of 'margin-inline-start'.
However, if the computed 'direction' were instead ''rtl'',
the computed value of 'margin-left' is ''3px'',
since 'margin-inline-end' and 'margin-left' share a computed value,
and the declaration of 'margin-inline-end'
is after the declaration of 'margin-left'.
[[!CSSOM]] APIs that return computed values
(such as getComputedStyle())
must return the same value for each individual property
in such a pair.
Note: Depending on the element’s own writing mode
for mapping every flow-relative property
to its physical equivalent
simplifies the cascading calculations
and gives a straightforward model for authors to reason about.
However, it is problematic in many cases,
see for example this discussion.
Authors may need to use nested elements
to get the correct mapping behavior
when changing an element’s writing mode from its parent.
Inheritance of each property is from its corresponding property on the parent.
For example, although the [=inline-start=] margin of an''direction/rtl'' box is its right margin,
'margin-inline-start' on this box will inherit
the 'margin-inline-start' of an ''direction/ltr'' parent
even though that happens to be the parent’s left margin.
Unless otherwise specified,
[=shorthand properties=] that encompass both logical and physical longhands
(such as the 'all' shorthand)
set their physical longhands last.
For example, ''all: inherit'' will set all of the 'margin' properties to ''inherit'',
but since the physical longhands are set last,
the child's margins will inherit from their physical counterparts in the parent.
animation-001.html
animation-002.html
animation-004.html
logicalprops-with-deferred-writing-mode.html
logicalprops-with-variables.html
Logical Height and Logical Width:
the 'block-size'/'inline-size',
'min-block-size'/'min-inline-size',
and 'max-block-size'/'max-inline-size' properties
Name: block-size, inline-size
Value: <<'width'>>
Initial: auto
Applies to: Same as 'height' and 'width'
Inherited: no
Logical property group: size
Percentages: As for the corresponding physical property
Computed value: Same as 'height', 'width'
Animation type: by computed value type
cascading-001.html
logical-box-size.html
logicalprops-block-size-vlr.html
logicalprops-block-size.html
logicalprops-inline-size-vlr.html
logicalprops-inline-size.html
parsing/block-size-computed.html
parsing/block-size-invalid.html
parsing/block-size-valid.html
parsing/inline-size-computed.html
parsing/inline-size-invalid.html
parsing/inline-size-valid.html
These properties correspond to the
'height' and 'width' properties.
The mapping depends on the element's 'writing-mode'.
Name: min-block-size, min-inline-size
Value: <<'min-width'>>
Initial: 0
Applies to: same as 'height' and 'width'
Inherited: no
Logical property group: min-size
Percentages: As for the corresponding physical property
Computed value: Same as 'min-height', 'min-width'
Animation type: by computed value type
parsing/min-block-size-computed.html
parsing/min-block-size-invalid.html
parsing/min-block-size-valid.html
parsing/min-inline-size-computed.html
parsing/min-inline-size-invalid.html
parsing/min-inline-size-valid.html
These properties correspond to the
'min-height' and 'min-width' properties.
The mapping depends on the element's 'writing-mode'.
Name: max-block-size, max-inline-size
Value: <<'max-width'>>
Initial: none
Applies to: same as 'height' and 'width'
Inherited: no
Logical property group: max-size
Percentages: As for the corresponding physical property
Computed value: Same as 'max-height', 'max-width'
Animation type: by computed value type
parsing/max-block-size-computed.html
parsing/max-block-size-invalid.html
parsing/max-block-size-valid.html
parsing/max-inline-size-computed.html
parsing/max-inline-size-invalid.html
parsing/max-inline-size-valid.html
These properties correspond to the
'max-height' and 'max-width' properties.
The mapping depends on the element's 'writing-mode'.
Flow-Relative Margins:
the 'margin-block-start', 'margin-block-end', 'margin-inline-start', 'margin-inline-end' properties and 'margin-block' and 'margin-inline' shorthands
Name: margin-block-start, margin-block-end, margin-inline-start, margin-inline-end
Value: <<'margin-top'>>
Initial: 0
Applies to: Same as 'margin-top'
Inherited: no
Logical property group: margin
Percentages: As for the corresponding physical property
Computed value: Same as corresponding 'margin-*' properties
Animation type: by computed value type
logical-box-margin.html
parsing/margin-block-inline-computed.html
parsing/margin-block-inline-invalid.html
parsing/margin-block-inline-shorthand.html
parsing/margin-block-inline-valid.html
These properties correspond to the 'margin-top', 'margin-bottom', 'margin-left', and 'margin-right' properties.
The mapping depends on the element's 'writing-mode', 'direction', and 'text-orientation'.
animations/margin-block-interpolation.html
animations/margin-inline-interpolation.html
These two shorthand properties set the
'margin-block-start' & 'margin-block-end'
and
'margin-inline-start' & 'margin-inline-end',
respectively.
The first value represents the start edge style,
and the second value represents the end edge style.
If only one value is given, it applies to both the start and end edges.
Flow-Relative Offsets:
the 'inset-block-start', 'inset-block-end', 'inset-inline-start', 'inset-inline-end' properties and 'inset-block', 'inset-inline', and 'inset' shorthands
The 'top', 'left', 'bottom', 'right' physical properties,
their 'inset-block-start', 'inset-block-end', 'inset-inline-start', 'inset-inline-end' flow-relative correspondents,
and the 'inset-block', 'inset-inline', and 'inset' shorthands,
are collectively known as the inset properties.
Name: inset-block-start, inset-block-end, inset-inline-start, inset-inline-end
Value: <<'top'>>
Initial: auto
Applies to: positioned elements
Inherited: no
Logical property group: inset
Percentages: As for the corresponding physical property
Computed value: Same as corresponding 'top'/'right'/'bottom'/'left' properties
Animation type: by computed value type
logical-box-inset.html
parsing/inset-block-inline-computed.html
parsing/inset-block-inline-invalid.html
parsing/inset-block-inline-shorthand.html
parsing/inset-block-inline-valid.html
These properties correspond to the
'top', 'bottom', 'left', and 'right' properties.
The mapping depends on the element's 'writing-mode', 'direction', and 'text-orientation'.
These two shorthand properties set the
'inset-block-start' & 'inset-block-end'
and
'inset-inline-start' & 'inset-inline-end',
respectively.
The first value represents the start edge style,
and the second value represents the end edge style.
If only one value is given, it applies to both the start and end edges.
Name: inset
Value: <<'top'>>{1,4}
parsing/inset-computed.html
parsing/inset-invalid.html
parsing/inset-shorthand.html
parsing/inset-valid.html
This shorthand property sets the
'top', 'right', 'bottom', and 'left' properties.
Values are assigned to its sub-properties as for 'margin'.
Flow-Relative Padding:
the 'padding-block-start', 'padding-block-end', 'padding-inline-start', 'padding-inline-end' properties and 'padding-block' and 'padding-inline' shorthands
Name: padding-block-start, padding-block-end, padding-inline-start, padding-inline-end
Value: <<'padding-top'>>
Initial: 0
Applies to: Same as 'padding-top'
Inherited: no
Logical property group: padding
Percentages: As for the corresponding physical property
Computed value: Same as corresponding 'padding-*' properties
Animation type: by computed value type
logical-box-padding.html
parsing/padding-block-inline-computed.html
parsing/padding-block-inline-invalid.html
parsing/padding-block-inline-shorthand.html
parsing/padding-block-inline-valid.html
These properties correspond to the
'padding-top', 'padding-bottom', 'padding-left', and 'padding-right' properties.
The mapping depends on the element's 'writing-mode', 'direction', and 'text-orientation'.
animations/padding-block-interpolation.html
animations/padding-inline-interpolation.html
These two shorthand properties set the
'padding-block-start' & 'padding-block-end'
and
'padding-inline-start' & 'padding-inline-end',
respectively.
The first value represents the start edge style,
and the second value represents the end edge style.
If only one value is given, it applies to both the start and end edges.
Flow-Relative Borders
Flow-Relative Border Widths:
the 'border-block-start-width', 'border-block-end-width', 'border-inline-start-width', 'border-inline-end-width' properties and 'border-block-width' and 'border-inline-width' shorthands
Name: border-block-start-width, border-block-end-width, border-inline-start-width, border-inline-end-width
Value: <<'border-top-width'>>
Initial: medium
Applies to: Same as 'border-top-width'
Inherited: no
Logical property group: border-width
Percentages: n/a
Computed value: Same as corresponding 'border-*-width' properties
Animation type: by computed value type
logical-box-border-width.html
These properties correspond to the
'border-top-width', 'border-bottom-width', 'border-left-width', and 'border-right-width' properties.
The mapping depends on the element's 'writing-mode', 'direction', and 'text-orientation'.
parsing/border-block-width-computed.html
parsing/border-block-width-invalid.html
parsing/border-block-width-valid.html
parsing/border-inline-width-computed.html
parsing/border-inline-width-invalid.html
parsing/border-inline-width-valid.html
These two shorthand properties set the
'border-block-start-width' & 'border-block-end-width'
and
'border-inline-start-width' & 'border-inline-end-width',
respectively.
The first value represents the start edge width,
and the second value represents the end edge width.
If only one value is given, it applies to both the start and end edges.
Flow-Relative Border Styles:
the 'border-block-start-style', 'border-block-end-style', 'border-inline-start-style', 'border-inline-end-style' properties and 'border-block-style' and 'border-inline-style' shorthands
Name: border-block-start-style, border-block-end-style, border-inline-start-style, border-inline-end-style
Value: <<'border-top-style'>>
Initial: none
Applies to: Same as 'border-top-style'
Inherited: no
Logical property group: border-style
Percentages: n/a
Computed value: Same as corresponding 'border-*-style' properties
Animation type: discrete
logical-box-border-style.html
parsing/border-block-style-computed.html
parsing/border-block-style-invalid.html
parsing/border-block-style-valid.html
parsing/border-inline-style-computed.html
parsing/border-inline-style-invalid.html
parsing/border-inline-style-valid.html
These properties correspond to the
'border-top-style', 'border-bottom-style', 'border-left-style', and 'border-right-style' properties.
The mapping depends on the element's 'writing-mode', 'direction', and 'text-orientation'.
These two shorthand properties set the
'border-block-start-style' & 'border-block-end-style'
and
'border-inline-start-style' & 'border-inline-end-style',
respectively.
The first value represents the start edge style,
and the second value represents the end edge style.
If only one value is given, it applies to both the start and end edges.
Flow-Relative Border Colors:
the 'border-block-start-color', 'border-block-end-color', 'border-inline-start-color', 'border-inline-end-color' properties and 'border-block-color' and 'border-inline-color' shorthands
Name: border-block-start-color, border-block-end-color, border-inline-start-color, border-inline-end-color
Value: <<'border-top-color'>>
Initial: currentcolor
Applies to: Same as 'border-top-color'
Inherited: no
Logical property group: border-color
Percentages: n/a
Computed value: Same as corresponding 'border-*-color' properties
Animation type: by computed value type
logical-box-border-color.html
parsing/border-block-color-computed.html
parsing/border-block-color-invalid.html
parsing/border-block-color-valid.html
parsing/border-inline-color-computed.html
parsing/border-inline-color-invalid.html
parsing/border-inline-color-valid.html
These properties correspond to the
'border-top-color', 'border-bottom-color', 'border-left-color', and 'border-right-color' properties.
The mapping depends on the element's 'writing-mode', 'direction', and 'text-orientation'.
These two shorthand properties set the
'border-block-start-color' & 'border-block-end-color'
and
'border-inline-start-color' & 'border-inline-end-color',
respectively.
The first value represents the start edge color,
and the second value represents the end edge color.
If only one value is given, it applies to both the start and end edges.
Flow-Relative Border Shorthands:
the 'border-block-start', 'border-block-end', 'border-inline-start', 'border-inline-end' properties and 'border-block' and 'border-inline' shorthands
logical-box-border-shorthands.html
parsing/border-block-valid.html
These properties correspond to the
'border-top', 'border-bottom', 'border-left', and 'border-right' properties.
The mapping depends on the element's 'writing-mode', 'direction', and 'text-orientation'.
parsing/border-inline-valid.html
These two shorthand properties set the
'border-block-start' & 'border-block-end'
or
'border-inline-start' & 'border-inline-end',
respectively,
both to the same style.
Flow-Relative Corner Rounding:
the 'border-start-start-radius', 'border-start-end-radius', 'border-end-start-radius', 'border-end-end-radius' properties
Name: border-start-start-radius, border-start-end-radius, border-end-start-radius, border-end-end-radius
Value: <<'border-top-left-radius'>>
Initial: Same as 'border-top-left-radius'
Applies to: Same as 'border-top-left-radius'
Inherited: no
Logical property group: border-radius
Percentages: Same as 'border-top-left-radius'
Computed value: Same as corresponding physical 'border-*-radius' properties
Animation type: by computed value type
logical-box-border-radius.html
These properties correspond to the
'border-top-left-radius', 'border-bottom-left-radius', 'border-top-right-radius', and 'border-bottom-right-radius' properties.
The mapping depends on the element's 'writing-mode', 'direction', and 'text-orientation',
with the first start/end giving the block axis side,
and the second the inline-axis side
(i.e. patterned as 'border-block-inline-radius').
Four-Directional Shorthand Properties: the 'margin', 'padding', 'border-width', 'border-style', and 'border-color' shorthands
The shorthand properties for margin, padding, and border
set values for physical properties by default.
But authors can specify
the logical keyword
at the beginning of the property value
to indicate that the values map to the flow-relative properties instead of the physical ones.
The proposed syntax for this feature is under discussion
and is almost guaranteed to change from what is described here.
This section remains in the draft to promote discussion of alternatives,
to document the affected properties,
and to specify the expected impact on the interpretation
of whatever syntactic switch is ultimately chosen.
The following [[!CSS2]] shorthand properties
accept the ''margin/logical'' keyword:
'inset'
'margin'
'padding'
'border-width'
'border-style'
'border-color'
'scroll-padding'
'scroll-margin'
The syntax for these properties is effectively changed by replacing
<value-type>{1,4}
with
logical? <value-type>{1,4}
When the ''margin/logical'' keyword is present in the value,
the values that follow are assigned to its flow-relative longhands
as follows:
If only one value is set, the value applies to all four flow-relative longhands.
If two values are set, the first is for block-start and block-end,
the second is for inline-start and inline-end.
If three values are set, the first is for block-start,
the second is for inline-start and inline-end,
and the third is for block-end.
If four values are set, they apply to
the block-start, inline-start, block-end, and inline-end sides
in that order.
In the following example, the two rules are equivalent:
Moved flow-relative values of 'resize' to [[CSS-UI-4]].
Editorially rewrote large parts of the specification for clarity.
Added 'text-orientation' to list of mapping dependencies.
Clarified that 'border-inline' and 'border-block' set both affected sides to the same value.
Clarified the mapping for border-radius.
Referred to physical margin, border, and padding properties in the elements they apply to, so ruby base containers and ruby annotation containers are excluded.
Made margin and padding properties refer to '*-top' properties for consistency.