From 2482cf544f5062d325be639cc5412dcb2e397465 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 8 Jun 2026 03:17:02 +0000 Subject: [PATCH] Restyle app to kBenestad design language MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaces the ad-hoc CSS and DOM structure with the full kBenestad forms design language from dev/mockups/kbenestad-forms.css and the dev/mockups/reimburse.html reference mockup. Surface-only change — all PDF engine, state, validation, and persistence logic is intact. Key changes: - Schibsted Grotesk + JetBrains Mono (bunny.net, system fallback) - Semantic CSS tokens with light/dark auto + manual override - Toolbar: font-size A−/A/A+, theme Auto/Light/Dark, about button - Document header: logo tile + org name left, title + date right - kb-card sections for claimant and expenses - kb-block item containers; kb-line line rows with kb-field/kb-label - kb-btn variants (primary, ghost, soft, dashed, danger) - kb-note for validation errors and modal feedback - kb-totals grand total panel (mono tabular figures) - kb-footer with kBenestad attribution - Favicons from dev/design_assets/favicons/ https://claude.ai/code/session_01JyuActqTJG5tuRQNLmT7fZ --- app/assets/apple-touch-icon.png | Bin 0 -> 4221 bytes app/assets/favicon-32.png | Bin 0 -> 893 bytes app/assets/favicon.svg | 6 + app/index.html | 1053 +++++++++++++++++++------------ 4 files changed, 661 insertions(+), 398 deletions(-) create mode 100644 app/assets/apple-touch-icon.png create mode 100644 app/assets/favicon-32.png create mode 100644 app/assets/favicon.svg diff --git a/app/assets/apple-touch-icon.png b/app/assets/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b85a5fbdfeb3d164626f8c260aef4aa1d0161c9a GIT binary patch literal 4221 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 literal 0 HcmV?d00001 diff --git a/app/assets/favicon-32.png b/app/assets/favicon-32.png new file mode 100644 index 0000000000000000000000000000000000000000..3a90aebb948714fc5096cf28fce6a35d017b2235 GIT binary patch literal 893 zcmV-@1A_dCP)9n(F4`nyWKf$Hu`k+w>MBB&PCgg@x0^VfIoygSa!n;8h7PrmcM@1A?_Ip2HlK5$Ir{MC1b z8|u!5gLPfuami6Za+!!)T0v^(*deO{F$yM<7?wo=BvC85RIuDAwX_1%rbnh=x&fIO zkcog`r6XW@DIe8<5J4HW2;7Pm%M)h3ymN7N>IW zj(}R!q;{5>3~UYT*;+0%aQkHhfm<_v5dZADDwC(g@mDkWz-dwbSW;qYtt$s9YE=z9?wD_>D(!{j~b2xH!N`W;w z&gq4G+}+3hXs%10Db45Rq79Umq?YT<5u5q;D~|p*^BgL$CdWBN$fYFDUZHJKv;o`d z6(EW>5Kp8Wb>?VfJc>>0OVHlrebOMC!MXQ(9#{Hj9Randsr55*%!Gk28HBr~c=KPfA$MIf+>#hF zO#^o`C|65*n;&jekBDnX;C6)QZPIn@W_5?;L4jK_Xn8LEI2Gc6xV!NrLY9} + + + + + \ No newline at end of file diff --git a/app/index.html b/app/index.html index 5aa67ae..f76d163 100644 --- a/app/index.html +++ b/app/index.html @@ -3,122 +3,356 @@ -Reimbursement Form + +Reimbursement + + + + -

Loading configuration…

-