// +spec:box-model:83b3b8 - Box dimensions: content area with optional padding, border, margin areas
// +spec:box-model:3b155c - "4 values assigned to sides" pattern (top, right, bottom, left) matching margin/inset shorthands
// +spec:width-calculation:37f9e7 - CSS 2.2 §8.1 box dimensions: content, padding, border, margin areas with top/right/bottom/left segments
// +spec:block-formatting-context:440282 - vertical writing modes use analogous layout via main/cross axis abstraction
// +spec:block-formatting-context:387117 - writing-mode property maps block flow to vertical/horizontal axes
// +spec:box-model:4c01a3 - dimensional mapping: main=block axis, cross=inline axis per writing mode
// +spec:box-model:4c1a9f - physical-to-logical mapping of margin/padding/border for vertical writing modes
// +spec:box-model:9414ab - flow-relative mapping of box edges (margin/padding/border) per writing mode
// +spec:inline-formatting-context:c6b91e - line-relative "over"/"under" mapped to physical top/bottom via writing mode
// +spec:writing-modes:00a918 - Abstract-to-physical mappings for block/inline to top/right/bottom/left
// +spec:writing-modes:14e6f0 - block-start/end depend only on writing-mode; inline-start/end also depend on direction (handled in positioning.rs)
// +spec:writing-modes:1c2101 - Abstract directional terms (top/right/bottom/left) to logical axes (main/cross) based on writing-mode
// +spec:writing-modes:1c5155 - line-relative mappings: over/under/line-left/line-right → top/bottom/left/right in horizontal-tb
// +spec:writing-modes:f9af71 - flow-relative directions: block-start/end and inline-start/end mapped to physical edges
// +spec:writing-modes:60b023 - abstract-to-physical mapping: block axis = main, inline axis = cross
// +spec:writing-modes:829cd7 - flow-relative directions: block-start/end from writing-mode, inline-start/end from writing-mode+direction
// +spec:writing-modes:a2113d - block/inline axis mapping for writing modes (block-axis, inline-axis, block-start/end, inline-start/end)
// +spec:writing-modes:c91130 - Abstract box terminology: block/inline axis mapping per writing-mode
// +spec:writing-modes:0e549a - writing-mode computed value influences physical/logical axis mapping
// +spec:block-formatting-context:6225cb - line-relative directions: vertical modes map line-over/under to top/bottom
// +spec:box-model:c921aa - auto margin-top/bottom used value is 0 for block-level non-replaced elements in normal flow
// +spec:inline-formatting-context:26c933 - LogicalSize maps inline/block dimensions to physical width/height per writing mode
// +spec:box-model:a227ff - content/padding/border/margin edges defining box extents for overflow
// +spec:containing-block:bca691 - box model edges: padding/border/margin boxes with content-box, padding-box, margin-box methods
// +spec:box-model:be08c6 - inner size (content-box) from outer size minus border+padding, floored at zero
// +spec:writing-modes:a58616 - abstract dimensions: inline size maps to physical width/height per writing-mode
pub fn inner_size(&self, outer_size: LogicalSize, wm: LayoutWritingMode) -> LogicalSize {
let w = (border_box.size.width - self.border.horizontal_sum() - self.padding.horizontal_sum()).max(0.0);
let h = (border_box.size.height - self.border.vertical_sum() - self.padding.vertical_sum()).max(0.0);
// +spec:box-model:0e75c1 - margin, padding, border contribute to layout bounds (default line-fit-edge: leading uses line-height model)
// +spec:height-calculation:e9ec84 - replaced elements have natural dimensions (width, height, ratio)
// +spec:intrinsic-sizing:127a10 - min-content, max-content, fit-content size definitions (css-sizing-3 §2.1)
// +spec:intrinsic-sizing:21f2cb - defines min-content, max-content, and stretch-fit size terminology
// +spec:width-calculation:1583c4 - min-content, max-content, fit-content intrinsic size definitions (§2.1)
// +spec:width-calculation:b83d0a - min-content width ("preferred minimum width" in CSS2.1§10.3.5)
// +spec:writing-modes:1583c4 - min-content size in inline axis = size fitting contents with all soft wraps taken
// +spec:writing-modes:6e85d3 - max-content inline size is the "ideal" size in the inline axis (writing-mode-dependent)
// +spec:block-formatting-context:6225cb - vertical writing modes: line-over is right, line-under is left
// +spec:block-formatting-context:66eb6d - text-orientation property (mixed|upright|sideways) integrated into WritingModeContext
// +spec:block-formatting-context:8be1b0 - writing modes and vertical text orientation context (UTN#22)
// +spec:display-property:0a39dc - text-orientation affects inline-level alignment via WritingModeContext
// +spec:display-property:591355 - bidirectionality support via direction property in WritingModeContext
// +spec:block-formatting-context:925cfe - text-orientation mixed/upright for horizontal scripts in vertical mode
// +spec:containing-block:c205e5 - orthogonal flow: child writing mode perpendicular to containing block's
// +spec:writing-modes:32541a - direction property controls inline text direction via stylesheet