Aarya2004
Deploy: sync hosted Space to local app (chat, document capture, Modal backends, pages, mobile/QR)
47b2a99 | /* Secondary pages (Dashboard / Active Jobs / Inventory) — shares tokens with | |
| theme.css and the .btn/table/sidebar idioms from workspace.css. */ | |
| /* App shell: same sidebar as the workspace, scrollable content column. */ | |
| .app { | |
| display: flex; | |
| min-height: 100vh; | |
| } | |
| .content { | |
| flex: 1 1 auto; | |
| min-width: 0; | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| /* Page header. */ | |
| .page-head { | |
| padding: 32px; | |
| border-bottom: 1px solid var(--outline-variant); | |
| background: var(--surface); | |
| } | |
| .page-head h1 { | |
| font-family: var(--font-head); | |
| font-weight: 800; | |
| font-size: 32px; | |
| letter-spacing: -0.02em; | |
| margin: 0; | |
| color: var(--on-surface); | |
| } | |
| .page-head p { | |
| margin: 6px 0 0; | |
| color: var(--secondary); | |
| } | |
| .page-body { | |
| padding: 32px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 24px; | |
| } | |
| /* KPI cards. */ | |
| .kpis { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); | |
| gap: 16px; | |
| } | |
| .kpi { | |
| background: var(--surface-container-lowest); | |
| border: 1px solid var(--outline-variant); | |
| border-radius: 12px; | |
| padding: 24px; | |
| } | |
| .kpi .label { | |
| font-family: var(--font-head); | |
| font-size: 12px; | |
| letter-spacing: 0.05em; | |
| text-transform: uppercase; | |
| color: var(--secondary); | |
| font-weight: 700; | |
| margin: 0; | |
| } | |
| .kpi .value { | |
| font-family: var(--font-head); | |
| font-size: 40px; | |
| font-weight: 800; | |
| letter-spacing: -0.02em; | |
| margin: 8px 0 0; | |
| color: var(--on-surface); | |
| } | |
| .kpi .sub { | |
| margin: 6px 0 0; | |
| font-size: 14px; | |
| color: var(--secondary); | |
| } | |
| .kpi--dark { | |
| background: #2d3133; | |
| border-color: #2d3133; | |
| } | |
| .kpi--dark .label { | |
| color: #bbc8d0; | |
| } | |
| .kpi--dark .value, | |
| .kpi--dark .sub { | |
| color: #fff; | |
| } | |
| .kpi--alert { | |
| border-left: 4px solid var(--error); | |
| } | |
| .kpi--alert .label, | |
| .kpi--alert .value { | |
| color: var(--error); | |
| } | |
| /* Card wrapper for tables / lists. */ | |
| .card { | |
| background: var(--surface-container-lowest); | |
| border: 1px solid var(--outline-variant); | |
| border-radius: 12px; | |
| overflow: hidden; | |
| } | |
| .card-head { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding: 18px 24px; | |
| border-bottom: 1px solid var(--outline-variant); | |
| background: var(--surface-container-low); | |
| } | |
| .card-head h2 { | |
| font-family: var(--font-head); | |
| font-size: 18px; | |
| margin: 0; | |
| color: var(--on-surface); | |
| } | |
| /* Tables on pages have no rounded inner border (the card supplies it). */ | |
| .card table { | |
| border: 0; | |
| border-radius: 0; | |
| } | |
| /* Chips / badges. */ | |
| .chip { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 6px; | |
| padding: 3px 10px; | |
| border-radius: 999px; | |
| font-size: 11px; | |
| font-weight: 700; | |
| text-transform: uppercase; | |
| letter-spacing: 0.03em; | |
| } | |
| .chip--cat { | |
| background: var(--tertiary-fixed); | |
| color: var(--on-tertiary-container); | |
| } | |
| .chip--ok { | |
| background: rgba(34, 197, 94, 0.12); | |
| color: #15803d; | |
| } | |
| .chip--low { | |
| background: #ffdad6; | |
| color: #93000a; | |
| } | |
| .mono { | |
| font-family: var(--font-mono); | |
| font-size: 13px; | |
| } | |
| /* Stock bar. */ | |
| .stock { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 4px; | |
| width: 140px; | |
| } | |
| .stock .meter { | |
| height: 6px; | |
| background: var(--surface-container-high); | |
| border-radius: 999px; | |
| overflow: hidden; | |
| } | |
| .stock .meter span { | |
| display: block; | |
| height: 100%; | |
| background: var(--primary-container); | |
| } | |
| .stock.is-low .meter span { | |
| background: var(--error); | |
| } | |
| .stock .nums { | |
| display: flex; | |
| justify-content: space-between; | |
| font-size: 11px; | |
| font-weight: 700; | |
| } | |
| /* Empty state. */ | |
| .empty { | |
| padding: 48px 24px; | |
| text-align: center; | |
| color: var(--secondary); | |
| } | |
| .empty .material-symbols-outlined { | |
| font-size: 40px; | |
| color: var(--outline); | |
| display: block; | |
| margin: 0 0 8px; | |
| } | |
| .empty a { | |
| color: var(--primary); | |
| font-weight: 700; | |
| } | |
| /* Filter row for the catalog. */ | |
| .filters { | |
| display: flex; | |
| gap: 8px; | |
| flex-wrap: wrap; | |
| } | |
| .filter { | |
| padding: 4px 12px; | |
| border-radius: 999px; | |
| border: 1px solid var(--outline-variant); | |
| background: transparent; | |
| color: var(--secondary); | |
| font-size: 12px; | |
| font-weight: 700; | |
| cursor: pointer; | |
| font-family: var(--font-body); | |
| } | |
| .filter.active { | |
| border-color: var(--primary); | |
| color: var(--on-primary); | |
| background: var(--primary); | |
| } | |