-
Mahmoud Aglan authored
portal.css is built with `source(none)`, so a template not named in an @source line contributes nothing. layouts/portal.blade.php was not named. Every utility the shell alone used — h-8 w-8 on the logo, max-w-2xl on the column, pb-28 above the tab bar — was absent from the bundle, so a tenant logo rendered at its natural size, the page went wider than the phone, and the first tab sat off-screen. The layouts are scanned now, and a test asserts they stay scanned. The rail made it worse: .rail padded itself 1rem and pulled back -1rem, the bleed trick for a rail inside a padded column. Its one caller sits in an unpadded header and supplies its own padding, so the negative margins had nothing to cancel and made the element 2rem wider than the viewport. Colour. OC Sport themed their website navy and gold and never opened the branding screen, so the portal, the PWA theme colour and the admin were all still on our shipped blue. Branding colours still sitting on the default are now inherited from the academy's own website palette; picking any colour settles it. Editing the site bumps the brand cache, or the rest of the product keeps yesterday's palette indefinitely. That exposed what shade 600 was doing as a link colour: anchored on the tenant's own colour, it lands within 0.02 of a dark navy, so links rendered as body text. ColorRamp now derives an interactive colour placed at a lightness that reads as a colour and clears 4.5:1 on the surface it is drawn on — one for light, one for dark — and an ink() for the semantic palette, which is chosen to be seen as a fill: amber is about 2:1 as 10px text on white, and that is what every error message and status chip was using. Filled buttons get a computed foreground instead of a hardcoded #fff. Screens: the outstanding balance was a third of a three-across statistics row, wrapping onto two lines, and repeated verbatim in the action list above it. It is one fact and it is the fact members open the app for, so it is the headline, figure large and currency small, and the row is two tiles. Icon path data was retyped in three places and the home screen's copies were truncated mid-curve — a member saw a tick where a wallet should be — so there is one icon component. The status chip five screens built by hand is one component too. Co-Authored-By:Claude Opus 5 (1M context) <noreply@anthropic.com>
fdeedfd2