Apple Mail iOS email CSS: what breaks, and what to write instead
275 of 300 features work in Apple Mail iOS · 12 partial · 11 not supported · 2 untested. Of the 275 that work here, 84 work in 6 or fewer of the other 20 clients, so a check that passes here says little about the rest.
Works 275 · Partial 12 · Not supported 11 · Untested 2 · of 300
WebKit · mobile · prefers-color-scheme: works
No signup · Five clients free, Outlook Classic included · All 21 with an account
The checker needs a computer screen.
Apple Mail iOS is one of the five clients the checker runs with no account.
A free account opens all 21 clients and keeps your checks for 7 days. Create a free account →
@emailens/engine 0.18.22 · data last changed 10 Nov 2026
What works in Apple Mail iOS and breaks elsewhere
84 features work in Apple Mail iOS and in 6 or fewer of the other 20 clients, so they need a fallback.
- animation
Works in 5 of 21 · partial in 1 · not supported in 15
· works here - <object>
Works in 1 of 21 · partial in 3 · not supported in 16 · 1 untested
· works here - nesting
Works in 2 of 21 · partial in 3 · not supported in 13 · 3 untested
· works here - [command]
Works in 3 of 21 · partial in 1 · not supported in 13 · 4 untested
· works here - [popover]
Works in 3 of 21 · partial in 2 · not supported in 15 · 1 untested
· works here - border-inline
Works in 3 of 21 · not supported in 14 · 4 untested
· works here - border-inline-individual
Works in 3 of 21 · partial in 1 · not supported in 13 · 4 untested
· works here - border-radius-logical
Works in 3 of 21 · not supported in 14 · 4 untested
· works here
All 80
- inert
Works in 3 of 21 · not supported in 14 · 4 untested
· works here - inset
Works in 3 of 21 · not supported in 15 · 3 untested
· works here - light-dark
Works in 3 of 21 · partial in 3 · not supported in 11 · 4 untested
· works here - padding-inline-block
Works in 3 of 21 · not supported in 14 · 4 untested
· works here - [loading]
Works in 4 of 21 · partial in 1 · not supported in 15 · 1 untested
· works hereThe
loadingattribute is supported, but not confirmed whether it works according to spec. - [srcset]
Works in 4 of 21 · not supported in 16 · 1 untested
· works here - <audio>
Works in 4 of 21 · not supported in 17
· works here - <picture>
Works in 4 of 21 · partial in 1 · not supported in 16
· works here - border-inline-longhand
Works in 4 of 21 · not supported in 13 · 4 untested
· works here - color-scheme
Works in 4 of 21 · not supported in 16 · 1 untested
· works hereWorks only the html/root element
- hyphenate-character
Works in 4 of 21 · not supported in 13 · 4 untested
· works here - hyphens
Works in 4 of 21 · not supported in 13 · 4 untested
· works here - margin-block-start-end
Works in 4 of 21 · not supported in 13 · 4 untested
· works here - margin-inline-start-end
Works in 4 of 21 · not supported in 13 · 4 untested
· works here - mask-image
Works in 4 of 21 · partial in 1 · not supported in 12 · 4 untested
· works here - max-inline-size
Works in 4 of 21 · not supported in 13 · 4 untested
· works here - min-block-size
Works in 4 of 21 · not supported in 13 · 4 untested
· works here - modern-color
Works in 4 of 21 · not supported in 16 · 1 untested
· works here - padding-block-start-end
Works in 4 of 21 · not supported in 13 · 4 untested
· works here - padding-inline-start-end
Works in 4 of 21 · not supported in 13 · 4 untested
· works here - text-emphasis-position
Works in 4 of 21 · not supported in 13 · 4 untested
· works here - text-wrap
Works in 4 of 21 · not supported in 13 · 4 untested
· works here - transition
Works in 4 of 21 · partial in 7 · not supported in 10
· works here - white-space-collapse
Works in 4 of 21 · not supported in 13 · 4 untested
· works herePartial.
- :has
Works in 5 of 21 · not supported in 15 · 1 untested
· works here - [hidden]
Works in 5 of 21 · not supported in 13 · 3 untested
· works here - @media
Works in 5 of 21 · partial in 14 · not supported in 2
· works here - <dialog>
Works in 5 of 21 · not supported in 15 · 1 untested
· works here - <svg>
Works in 5 of 21 · partial in 1 · not supported in 15
· works here - accent-color
Works in 5 of 21 · not supported in 15 · 1 untested
· works hereSupports
accent-colorbut rendering depends on browser support. - aspect-ratio
Works in 5 of 21 · not supported in 16
· works here - max-block-size
Works in 5 of 21 · not supported in 12 · 4 untested
· works here - min-inline-size
Works in 5 of 21 · not supported in 12 · 4 untested
· works here - ::after
Works in 6 of 21 · partial in 4 · not supported in 10 · 1 untested
· works here - ::before
Works in 6 of 21 · partial in 4 · not supported in 10 · 1 untested
· works here - :attribute-selector
Works in 6 of 21 · partial in 12 · not supported in 2 · 1 untested
· works here - :lang
Works in 6 of 21 · not supported in 11 · 4 untested
· works here - :not
Works in 6 of 21 · not supported in 14 · 1 untested
· works here - :nth-child
Works in 6 of 21 · not supported in 14 · 1 untested
· works here - :nth-last-child
Works in 6 of 21 · not supported in 14 · 1 untested
· works here - :nth-of-type
Works in 6 of 21 · not supported in 14 · 1 untested
· works here - @font-face
Works in 6 of 21 · not supported in 15
· works here - <bdi>
Works in 6 of 21 · not supported in 14 · 1 untested
· works here - <progress>
Works in 6 of 21 · partial in 1 · not supported in 13 · 1 untested
· works here - backdrop-filter
Works in 6 of 21 · not supported in 12 · 3 untested
· works hereWorks with prefix
-webkit - clamp
Works in 6 of 21 · partial in 3 · not supported in 11 · 1 untested
· works here - conic-gradient
Works in 6 of 21 · partial in 1 · not supported in 13 · 1 untested
· works here - custom-properties
Works in 6 of 21 · not supported in 14 · 1 untested
· works here - html5-semantics
Works in 6 of 21 · partial in 9 · not supported in 5 · 1 untested
· works here - list-style-image
Works in 6 of 21 · not supported in 14 · 1 untested
· works here - margin-inline-block
Works in 6 of 21 · not supported in 14 · 1 untested
· works here - max
Works in 6 of 21 · partial in 3 · not supported in 11 · 1 untested
· works here - min
Works in 6 of 21 · partial in 3 · not supported in 11 · 1 untested
· works here - pseudo-class-nth-last-of-type
Works in 6 of 21 · not supported in 14 · 1 untested
· works here - scroll-snap
Works in 6 of 21 · not supported in 14 · 1 untested
· works here - shape-margin
Works in 6 of 21 · not supported in 12 · 3 untested
· works here - shape-outside
Works in 6 of 21 · not supported in 12 · 3 untested
· works here - [aria-labelledby]
Works in 7 of 21 · not supported in 13 · 1 untested
· works here - [required]
Works in 7 of 21 · partial in 1 · not supported in 12 · 1 untested
· works here - @keyframes
Works in 7 of 21 · partial in 1 · not supported in 13
· works here - <ul>
Works in 7 of 21 · partial in 13 · 1 untested
· works here - block-size
Works in 7 of 21 · not supported in 13 · 1 untested
· works here - border-image
Works in 7 of 21 · not supported in 13 · 1 untested
· works here - filter
Works in 7 of 21 · not supported in 14
· works here - gap
Works in 7 of 21 · partial in 9 · not supported in 5
· works here - grid-template-columns
Works in 7 of 21 · partial in 1 · not supported in 13
· works here - outline-offset
Works in 7 of 21 · not supported in 13 · 1 untested
· works here - text-align-last
Works in 7 of 21 · not supported in 10 · 4 untested
· works here - text-decoration-skip-ink
Works in 7 of 21 · not supported in 13 · 1 untested
· works here - text-decoration-thickness
Works in 7 of 21 · not supported in 13 · 1 untested
· works here - text-underline-offset
Works in 7 of 21 · not supported in 13 · 1 untested
· works here - transform
Works in 7 of 21 · partial in 1 · not supported in 13
· works here
Not listed: <link>, <base>, @import, <body>, structural tags; the table below has them.
Apple Mail iOS on real installs
The Emailens probe for each feature, captured on Apple Mail iOS's own installs, next to the Emailens live preview of Apple Mail iOS.
animation in a real Apple Mail (iPhone 13)
caniemail: animation works in Apple Mail iOS.
overflow in a real Apple Mail (iPhone 13)
caniemail: overflow is partly supported in Apple Mail iOS.
Partial. overflow-block & overflow-inline not supported.
word-break in a real Apple Mail (iPhone 13)
caniemail: word-break is partly supported in Apple Mail iOS.
Buggy. Supported but a word-wrap:break-word is applied, making it look like break-all.
Paste your email and see what Apple Mail iOS does to it.
No signup · Five clients free, Outlook Classic included · All 21 with an account
The checker needs a computer screen.
Dark mode in Apple Mail iOS
-
Works @media prefers-color-scheme works in Apple Mail iOS.
Works in 9 of 21.
-
Works color-scheme works in Apple Mail iOS.
Works in 4 of 21.
-
Not supported meta-color-scheme is not supported in Apple Mail iOS.
Works in 2 of 21.
Live preview: Apple Mail supports @media (prefers-color-scheme: dark). Without it, email content renders unchanged in dark mode.
How to target Apple Mail iOS
Selectors that single out Apple Mail iOS, from the community list the engine ships (howtotarget.email). Copy one and replace .your-class-name.
@supports (-webkit-overflow-scrolling:touch) and (color:#ffff) {
.your-class-name {
/* Replace this comment with your styles */
}
} [class^="apple-mail"] .your-class-name {
/* Replace this comment with your styles */
} Targets both iOS and MacOS Applemail.
.Singleton .your-class-name {
/* Replace this comment with your styles */
} Before you send to Apple Mail iOS
- Test with the device set to maximum Dynamic Type to surface auto-scaled typography that breaks layout.
- Check tap-target sizes, Apple's HIG recommends 44pt minimum, which translates to roughly 44px buttons in email.
Every account includes one free real-device check in classic Outlook, Outlook for Mac and Apple Mail, after you verify your email and run one preview, while this month's free capacity lasts. How real-device checks work →
Your next question
Every feature in Apple Mail iOS
HTML Elements · 2 of 48 not supported or partial here
- <abbr> Works Works in 14 of 21
- <acronym> Works Works in 13 of 21
- <address> Works Works in 20 of 21
- <audio> Works Works in 4 of 21
- <base> Works Works in 4 of 21
- <bdi> Works Works in 6 of 21
- <blockquote> Works Works in 19 of 21
- <body> Works Works in 5 of 21
- <button type="reset"> Works Works in 10 of 21
- <button type="submit"> Works Works in 11 of 21
- <code> Works Works in 20 of 21
- <del> Works Works in 20 of 21
- <dfn> Works Works in 17 of 21
- <dialog> Works Works in 5 of 21
- <div> Works Works in 20 of 21
- <form> Works Works in 10 of 21
- <h1> Works Works in 20 of 21
- <hr> Works Works in 18 of 21
- <img> Works Works in 19 of 21
- <input type="checkbox"> Works Works in 16 of 21
- <input type="hidden"> Works Works in 16 of 21
- <input type="radio"> Works Works in 16 of 21
- <input type="reset"> Works Works in 15 of 21
- <input type="submit"> Works Works in 12 of 21
- <input type="text"> Works Works in 13 of 21
- <link> Works Works in 3 of 21
- <marquee> Works Works in 8 of 21
- <meter> Works Works in 11 of 21
- <object> Works Works in 1 of 21
- <p> Works Works in 20 of 21
- <picture> Works Works in 4 of 21
- <pre> Works Works in 20 of 21
- <progress> Works Works in 6 of 21
- <rp> Works Works in 15 of 21
- <rt> Works Works in 15 of 21
- <ruby> Works Works in 15 of 21
- <select> Buggy. Partial Works in 14 of 21
- <small> Works Works in 20 of 21
- <span> Works Works in 20 of 21
- <strike> Works Works in 17 of 21
- <strong> Works Works in 20 of 21
- <style> Works Works in 16 of 21
- <svg> Works Works in 5 of 21
- <table> Works Works in 20 of 21
- <textarea> Works Works in 13 of 21
- <ul> Works Works in 7 of 21
- <video> Partial support. Partial Works in 3 of 21
- <wbr> Works Works in 16 of 21
HTML Attributes · 1 of 22 not supported or partial here
- [align] Works Works in 17 of 21
- [aria-describedby] Works Works in 9 of 21
- [aria-hidden] Works Works in 13 of 21
- [aria-label] Works Works in 13 of 21
- [aria-labelledby] Works Works in 7 of 21
- [aria-live] Works Works in 8 of 21
- [background] Works Works in 16 of 21
- [cellpadding] Works Works in 18 of 21
- [cellspacing] Works Works in 18 of 21
- [command] Works Works in 3 of 21
- [dir] Works Works in 19 of 21
- [height] Works Works in 18 of 21
- [hidden] Works Works in 5 of 21
- [lang] Works Works in 15 of 21
- [loading] Works Works in 4 of 21
- [popover] Works Works in 3 of 21
- [required] Works Works in 7 of 21
- [role] Works Works in 14 of 21
- [srcset] Works Works in 4 of 21
- [target] The attribute is supported but links always open in a new window anyway. Partial Works in 0 of 21
- [valign] Works Works in 20 of 21
- [width] Works Works in 18 of 21
HTML & Email Structure · 2 of 8 not supported or partial here
- amp4email Not supported Works in 6 of 21
- anchor-links Works Works in 12 of 21
- doctype Works Works in 13 of 21
- html-comments Works Works in 18 of 21
- html5-semantics Works Works in 6 of 21
- image-maps Works Works in 15 of 21
- mailto-links Works Works in 17 of 21
- meta-color-scheme Not supported Works in 2 of 21
CSS At-Rules · 1 of 10 not supported or partial here
- @font-face Works Works in 6 of 21
- @import Works Works in 4 of 21
- @keyframes Works Works in 7 of 21
- @media Works Works in 5 of 21
- @media device-pixel-ratio Works Works in 10 of 21
- @media hover Works Works in 9 of 21
- @media orientation Partial. Partial Works in 11 of 21
- @media prefers-color-scheme Works Works in 9 of 21
- @media prefers-reduced-motion Works Works in 9 of 21
- @supports Works Works in 9 of 21
Pseudo-Elements · 0 of 6 not supported or partial here
- ::after Works Works in 6 of 21
- ::before Works Works in 6 of 21
- ::first-letter Works Works in 10 of 21
- ::first-line Works Works in 10 of 21
- ::marker Works Works in 10 of 21
- ::placeholder Works Works in 9 of 21
Pseudo-Classes & Selectors · 4 of 34 not supported or partial here
- :adjacent-sibling Works Works in 16 of 21
- :attribute-selector Works Works in 6 of 21
- :chaining Works Works in 14 of 21
- :checked Works Works in 9 of 21
- :child-combinator Works Works in 16 of 21
- :class-selector Works Works in 17 of 21
- :descendant-combinator Works Works in 17 of 21
- :first-child Works Works in 12 of 21
- :first-of-type Works Works in 12 of 21
- :focus Not supported Works in 10 of 21
- :focus-visible Untested Works in 6 of 21
- :focus-within Untested Works in 6 of 21
- :general-sibling Works Works in 16 of 21
- :grouping Works Works in 17 of 21
- :has Works Works in 5 of 21
- :hover Works Works in 12 of 21
- :id-selector Works Works in 17 of 21
- :lang Works Works in 6 of 21
- :last-child Works Works in 12 of 21
- :last-of-type Works Works in 12 of 21
- :link Works Works in 13 of 21
- :not Works Works in 6 of 21
- :nth-child Works Works in 6 of 21
- :nth-last-child Works Works in 6 of 21
- :nth-of-type Works Works in 6 of 21
- :only-child Works Works in 12 of 21
- :only-of-type Works Works in 12 of 21
- :target Not supported Works in 7 of 21
- :type-selector Works Works in 17 of 21
- :universal-selector Works Works in 16 of 21
- :visited Not supported Works in 8 of 21
- pseudo-class-active Not supported Works in 8 of 21
- pseudo-class-default Works Works in 10 of 21
- pseudo-class-nth-last-of-type Works Works in 6 of 21
CSS Functions · 0 of 8 not supported or partial here
- calc Works Works in 8 of 21
- clamp Works Works in 6 of 21
- conic-gradient Works Works in 6 of 21
- fit-content Works Works in 11 of 21
- linear-gradient Works Works in 9 of 21
- max Works Works in 6 of 21
- min Works Works in 6 of 21
- radial-gradient Works Works in 10 of 21
CSS Properties · 13 of 164 not supported or partial here
- !important Works Works in 11 of 21
- accent-color Works Works in 5 of 21
- align-items Works Works in 13 of 21
- animation Works Works in 5 of 21
- aspect-ratio Works Works in 5 of 21
- backdrop-filter Works Works in 6 of 21
- background Works Works in 16 of 21
- background-blend-mode Works Works in 13 of 21
- background-clip Works Works in 14 of 21
- background-color Works Works in 21 of 21
- background-image Works Works in 16 of 21
- background-origin Works Works in 14 of 21
- background-position Works Works in 20 of 21
- background-repeat Works Works in 20 of 21
- background-size Works Works in 17 of 21
- bimi Works Works in 9 of 21
- block-size Works Works in 7 of 21
- border Works Works in 20 of 21
- border-collapse Works Works in 19 of 21
- border-image Works Works in 7 of 21
- border-inline Works Works in 3 of 21
- border-inline-individual Works Works in 3 of 21
- border-inline-longhand Works Works in 4 of 21
- border-radius Works Works in 16 of 21
- border-radius-logical Works Works in 3 of 21
- border-spacing Works Works in 17 of 21
- bottom Works Works in 11 of 21
- box-shadow Works Works in 14 of 21
- box-sizing Works Works in 16 of 21
- caption-side Works Works in 20 of 21
- clear Works Works in 9 of 21
- clip-path Works Works in 8 of 21
- color Works Works in 21 of 21
- color-scheme Works Works in 4 of 21
- column-count Works Works in 16 of 21
- columns Works Works in 16 of 21
- css-comments Works Works in 14 of 21
- cursor iOS assistive touch does not respond to cursor. Not supported Works in 2 of 21
- custom-properties Works Works in 6 of 21
- direction Works Works in 21 of 21
- display Works Works in 13 of 21
- display:flex Works Works in 18 of 21
- display:grid Works Works in 18 of 21
- display:none Works Works in 20 of 21
- empty-cells Works Works in 14 of 21
- filter Works Works in 7 of 21
- flex Works Works in 13 of 21
- flex-basis Works Works in 13 of 21
- flex-direction Works Works in 12 of 21
- flex-wrap Works Works in 13 of 21
- float Works Works in 14 of 21
- font Works Works in 20 of 21
- font-family Works Works in 21 of 21
- font-kerning Works Works in 13 of 21
- font-size Works Works in 13 of 21
- font-size-adjust Works Works in 10 of 21
- font-stretch Works Works in 10 of 21
- font-weight Works Works in 16 of 21
- gap Works Works in 7 of 21
- grid-template-columns Works Works in 7 of 21
- height Works Works in 16 of 21
- hyphenate-character Works Works in 4 of 21
- hyphenate-limit-chars Not supported Works in 1 of 21
- hyphens Works Works in 4 of 21
- inert Works Works in 3 of 21
- inline-size Not supported Works in 4 of 21
- inset Works Works in 3 of 21
- justify-content Works Works in 13 of 21
- left Works Works in 11 of 21
- letter-spacing Works Works in 20 of 21
- light-dark Works Works in 3 of 21
- line-height Works Works in 20 of 21
- list-style Works Works in 11 of 21
- list-style-image Works Works in 6 of 21
- list-style-position Works Works in 19 of 21
- list-style-type Works Works in 21 of 21
- margin Works Works in 8 of 21
- margin-block-start-end Works Works in 4 of 21
- margin-inline-block Works Works in 6 of 21
- margin-inline-start-end Works Works in 4 of 21
- mask-image Works Works in 4 of 21
- max-block-size Works Works in 5 of 21
- max-height Works Works in 20 of 21
- max-inline-size Works Works in 4 of 21
- max-width Works Works in 20 of 21
- min-block-size Works Works in 4 of 21
- min-height Works Works in 19 of 21
- min-inline-size Works Works in 5 of 21
- min-width Works Works in 20 of 21
- mix-blend-mode Works Works in 13 of 21
- modern-color Works Works in 4 of 21
- nesting Works Works in 2 of 21
- object-fit Works Works in 14 of 21
- object-position Works Works in 14 of 21
- opacity Works Works in 19 of 21
- orphans Works Works in 10 of 21
- outline Works Works in 20 of 21
- outline-offset Works Works in 7 of 21
- overflow Partial. Partial Works in 4 of 21
- overflow-wrap Buggy. Partial Works in 2 of 21
- padding Works Works in 20 of 21
- padding-block-start-end Works Works in 4 of 21
- padding-inline-block Works Works in 3 of 21
- padding-inline-start-end Works Works in 4 of 21
- position Partial. Partial Works in 2 of 21
- resize Not supported Works in 1 of 21
- rgb Works Works in 12 of 21
- rgba Works Works in 12 of 21
- right Works Works in 11 of 21
- scroll-snap Works Works in 6 of 21
- shape-margin Works Works in 6 of 21
- shape-outside Works Works in 6 of 21
- system-ui Works Works in 12 of 21
- tab-size Works Works in 8 of 21
- table-layout Works Works in 16 of 21
- text-align Works Works in 13 of 21
- text-align-last Works Works in 7 of 21
- text-decoration Observed 2026-10-14 (Emailens real-device probe, Apple Mail (iPhone 13)): The multi-value shorthand
text-decoration: underline wavy #d33was dropped whole: no line at all. Partial Works in 14 of 21 - text-decoration-color Works Works in 17 of 21
- text-decoration-line Works Works in 16 of 21
- text-decoration-skip-ink Works Works in 7 of 21
- text-decoration-style Works Works in 16 of 21
- text-decoration-thickness Works Works in 7 of 21
- text-emphasis Works Works in 9 of 21
- text-emphasis-position Works Works in 4 of 21
- text-indent Works Works in 13 of 21
- text-justify Buggy. Not supported Works in 0 of 21
- text-orientation Works Works in 13 of 21
- text-overflow Works Works in 13 of 21
- text-shadow Works Works in 12 of 21
- text-transform Works Works in 20 of 21
- text-underline-offset Works Works in 7 of 21
- text-underline-position Partial. Partial Works in 8 of 21
- text-wrap Works Works in 4 of 21
- top Works Works in 11 of 21
- transform Works Works in 7 of 21
- transition Works Works in 4 of 21
- unit-ch Works Works in 15 of 21
- unit-cm Works Works in 20 of 21
- unit-em Works Works in 20 of 21
- unit-ex Works Works in 20 of 21
- unit-in Works Works in 20 of 21
- unit-initial Works Works in 12 of 21
- unit-mm Works Works in 20 of 21
- unit-pc Works Works in 20 of 21
- unit-percent Works Works in 20 of 21
- unit-pt Works Works in 20 of 21
- unit-px Works Works in 20 of 21
- unit-rem Works Works in 15 of 21
- unit-vh Buggy. Partial Works in 17 of 21
- unit-vmax Works Works in 15 of 21
- unit-vmin Works Works in 15 of 21
- unit-vw Works Works in 18 of 21
- user-select Works with
-webkitprefix Partial Works in 3 of 21 - vertical-align Works Works in 21 of 21
- visibility Works Works in 13 of 21
- white-space Works Works in 15 of 21
- white-space-collapse Works Works in 4 of 21
- widows Works Works in 10 of 21
- width Works Works in 20 of 21
- word-break Buggy. Partial Works in 4 of 21
- word-spacing Works Works in 14 of 21
- writing-mode Works Works in 13 of 21
- z-index Works Works in 17 of 21
How Apple Mail iOS renders email
Apple Mail on iOS uses the same WebKit engine as the macOS version, providing excellent CSS support. It handles responsive design well, supports media queries, and renders most modern CSS without issues. However, the mobile viewport introduces its own considerations for touch targets and readability.
- Auto-linking phone numbers and dates
- iOS automatically converts phone numbers, dates, and addresses into tappable links, adding its own blue styling. Use meta tag <meta name="format-detection" content="telephone=no"> to prevent this, or style the auto-generated links explicitly.
- Minimum font size
- iOS may scale up fonts smaller than 13px to improve readability. Use -webkit-text-size-adjust: 100% to prevent automatic scaling.
- Apple Mail iOS shares the macOS rendering pipeline, so feature support is nearly identical. The differences are mostly viewport-related, narrower screens, no hover surface, and touch-target sizing requirements.
- Dynamic Type and Apple's accessibility text-size settings can override declared font-size on body copy. Use -webkit-text-size-adjust: 100% on critical typography to opt out.
- Auto-linking is aggressive, phone numbers, dates, addresses, and tracking numbers are all converted to tappable spans with blue underline. Wrap any non-link text that resembles these patterns in explicit anchor tags with overrides.
- Safe areas and the notch on iPhone X+ devices can clip full-bleed designs. Reserve at least 16px horizontal padding on the outer container.