Tier 2Tier 2 · Native apps: tokens only. This is a SwiftUI Form with .insetGrouped style: stock Toggle, Picker, Stepper, Slider, NavigationLink and a system sheet. put.io supplies the tint, the surfaces and the type, no switch, no field and no sheet is drawn by us.--yellow-solid · --bg-secondary · --text-secondary · --red-text-secondary
Settings is a Form. There is no put.io switch.
The tell for a tier violation is a hand-painted control. A 51×31pt Toggle turning brand yellow is correct: SwiftUI drew it, .tint() coloured it.

A knob built in a ZStack is not.
A menu-style Picker renders label, value and chevron at the system's spacing. put.io sets none of those.
Footers carry the explanation so rows stay one line. A HIG convention, and it keeps the put.io voice out of the row.
9:41
Settings
Account
Apple Account
kadir@put.io
Subscription
1 TB · 12 Mar
Playback
Autoplay Next File
Stream Quality
Auto
Skip Intro
Auto matches the stream to your connection. Fixed qualities use more of your monthly bandwidth allowance.
Subtitles
Preferred Language
English
Text Size
+
Always Show
Downloads
Wi-Fi Only
Storage Limit
20 GB
Clear Downloads
6.4 GB
 
Sign Out
put.io 8.4.1 (2260)
Form · .insetGrouped20pt margin, 10pt group corner, 44pt rows, system headers and footers.
9:41
Settings
Playback
Autoplay Next File
Stream Quality
Auto
Stream Quality
Auto
Match my connection
Original
Up to 18.6 GB per file
1080p
≈ 2.4 GB per hour
720p
≈ 1.1 GB per hour
480p
≈ 0.5 GB per hour
Applies to streaming only. Downloads always fetch the original file.
System sheet · medium detentThe 38pt corner, the grabber, the scale-back of the parent and the dimming are all presentation, not design.
Group
10pt · 20pt inset
--bg-secondary on --bg
Row
44pt min
label 17pt, value 17pt secondary
Toggle on
--yellow-solid
from .tint(), not restyled
Header
13pt
--text-secondary, 26pt lead-in
Footer
13 / 18pt
carries the explanation, not the row
Destructive
--red-text-secondary
system role, centred row
Sheet
38pt · medium
detent and grabber owned by iOS
Numerics
Berkeley Mono
quotas, sizes, build number
Per-control detail, the token map and the full don't list live in platforms/apple/DESIGN.md.
Do not port .switch, .field, .form-row or .panel from components.css. Those recipes exist because the web has no stock controls. iOS does, they are better than ours on iOS, and they get Dynamic Type, VoiceOver, Reduce Motion and every future OS revision for free.