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.
Form · .insetGrouped20pt margin, 10pt group corner, 44pt rows, system headers and footers.
9:41
Stream Quality
Original
Up to 18.6 GB per 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
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.