The app frame is Apple's, the paint is put.io's
iOS 26 floats the tab bar: a glass capsule over content, Search as its own capsule beside it. Content stays opaque underneath.
On iPad the same app is a NavigationSplitView, not a scaled-up phone.
put.io supplies four things: the tint, the surfaces, GT America, and Berkeley Mono on numerics. Dark only.
Drawn 1:1 in points, 393×852 and 1024×768.
Every spec number is the HIG number.
Accent
--yellow-solid
set once as the SwiftUI .tint()
Content bg
--app-bg
opaque · replaces systemBackground
Control label
GT America Md
--fw-medium · tab, toolbar, button
Numerics
Berkeley Mono
tabular · sizes, counts, dates
Tab bar
56pt capsule
height, inset and glass owned by iOS
Row
60pt · 17/15pt
Dynamic Type drives it, never pinned
Corner radius
system
concentric to the container; --radius is web
Spacing
4 / 8 / 16 / 32
put.io ramp where the HIG leaves a choice
Do not rebuild this frame from
components.css. There is no put.io tab bar, no put.io nav bar and no put.io sidebar on this tier, porting the web recipes into SwiftUI is exactly what
putio-ios#171 had to undo.
If a token is missing for a native need, record it upstream in the graph rather than hand-rolling a value here.