zurich_kotak/src/index.css
Yashas 9210681488 Wire the console to the platform and make it deployable
The scaffold had the brand right and nothing behind it: the login was a
600ms setTimeout with a TODO, and three pieces of the frontgen deploy
contract were missing.

- Sign in against POST /usr/login (org_id as a STRING — a number is
  rejected by the gateway) with the session in a provider; surface the
  gateway's own message rather than a generic "invalid credentials",
  because a wrong password and a user without access to this app look
  identical from here and are not.
- Runtime config: the API URL is read from the config.js the server
  writes at placement, never compiled in, and requireConfigValue throws
  so a build with no config.js fails loudly instead of calling whichever
  backend built it.
- base: './' plus a router basename taken from <base href>, so one build
  serves any mount path.
- Move the fonts and logo from public/ into src/assets/ — Vite rewrites
  bundled asset URLs to be relative, while a public/ file referenced as
  "/fonts/..." stays absolute and 404s under the /zurich-kotak/ mount.
- API client for recordview / detailview / form-screens / start /
  activity, and the pipeline shell whose sidebar is the state machine in
  the order a lead moves.

Queue and lead-file data wait on the record and detail views.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-24 15:20:13 +05:30

75 lines
1.5 KiB
CSS

/* ── Zurich Kotak brand typeface ───────────────────────────── */
@font-face {
font-family: 'Zurich Sans';
src: url('./assets/fonts/ZurichSans-Light.otf') format('opentype');
font-weight: 300;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Zurich Sans';
src: url('./assets/fonts/ZurichSans-Regular.otf') format('opentype');
font-weight: 400;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Zurich Sans';
src: url('./assets/fonts/ZurichSans-Medium.otf') format('opentype');
font-weight: 500;
font-style: normal;
font-display: swap;
}
:root {
/* Brand palette lifted from zurichkotak.com */
--zk-blue: #2167ae;
--zk-blue-dark: #1a5490;
--zk-blue-deep: #1a528b;
--zk-navy: #23366f;
--zk-blue-mid: #5495cf;
--zk-blue-light: #91bfe3;
--zk-cyan: #c7ebf9;
--zk-ink: #2b2e31;
--zk-muted: #5d6162;
--zk-grey: #a6adaf;
--zk-line: #dde4e3;
--zk-line-soft: #eceeef;
--zk-tint: #f4f9fc;
--zk-tint-blue: #ebf3fb;
--zk-white: #fff;
--zk-danger: #d32f2f;
--font-zurich: 'Zurich Sans', Arial, Helvetica, sans-serif;
font-family: var(--font-zurich);
font-size: 16px;
line-height: 1.5;
color: var(--zk-ink);
background: var(--zk-white);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-rendering: optimizeLegibility;
}
* {
box-sizing: border-box;
}
html,
body,
#root {
height: 100%;
}
body {
margin: 0;
}
button,
input {
font: inherit;
color: inherit;
}