All pages under (main) must share the same look and feel. Use this as the single source of truth for new and existing pages.
src/app/(main)/layout.tsx) already provides:
bg-slate-50 (light), dark:bg-slate-900 (dark)p-4 sm:p-4 md:p-6 lg:p-8sm, md, lg (e.g. flex-col sm:flex-row, p-4 md:p-6 lg:p-8).p-4, m-8, gap-2, gap-4, mb-4, etc.dark class on html; use dark: Tailwind variants where needed.#3b82f6 (blue) — main actions, links, focus rings. In MUI this is palette.primary.main.#10b981 (emerald) — success, export, confirm actions.src/app/global.css (:root / .dark): --primary, --accent, --background, --foreground, --card, --border, --muted. Use these in custom CSS or Tailwind when you need to stay in sync.Page title bar (consistent across all pages):
@/components/PageTitleBar so every menu destination has the same title style.text-xl / sm:text-2xl, bold, slate-900 / dark slate-100).<PageTitleBar title={t("Page Title")} className="mb-4" /> or with actions: <PageTitleBar title={t("Page Title")} actions={<Button>...</Button>} className="mb-4" />.<h1> or <Typography variant="h4"> as the main page heading; use PageTitleBar for consistency.Content: Fragments or divs with space-y-4 (or Stack spacing={2} in MUI) between sections. No extra full-width background wrapper.
className="app-search-criteria ..." (plus layout classes like flex flex-wrap items-center gap-2 p-4).className="app-search-criteria-label" if you need a small uppercase label.variant="contained" color="primary", or Tailwind bg-blue-500 text-white). Reset = outline with neutral border (e.g. MUI variant="outlined" with slate border, or Tailwind border border-slate-300).#e2e8f0 (neutral 200), focus ring primary blue. Use MUI TextField / FormControl / date pickers as-is; the theme in src/theme/devias-material-kit already matches this.border border-slate-300, bg-white, focus:border-blue-500 focus:ring-2 focus:ring-blue-500/20, text-slate-900, placeholder-slate-400.variant="contained" color="primary" or Tailwind bg-blue-500 text-white hover:bg-blue-600.variant="outlined" with border #e2e8f0 / #334155 text, or Tailwind border border-slate-300 text-slate-700 hover:bg-slate-100.color="success" or Tailwind bg-emerald-500 / text-emerald-600 for outline.gap-2 or gap-4 between buttons; keep padding multiples of 4 (e.g. px-4 py-2).<Paper variant="outlined" sx={{ overflow: "hidden" }}> (theme already uses 8px radius, neutral border).rounded-lg border border-slate-200 bg-white shadow-sm.StyledDataGrid from @/components/StyledDataGrid. It applies header bg neutral[50], header text neutral[700], cell padding and borders to match the standard.SearchResults when you have a paginated list; it uses Paper variant="outlined" and theme table styles (header bg, borders).bg-slate-50 / neutral[50], text text-slate-700 / neutral[700], font-weight 600, padding px-4 py-3 or theme default.border-slate-200 / theme divider, hover hover:bg-slate-50 / action.hover.var(--border) or neutral[200]), white background (var(--card)), light shadow (0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)). MUI Card and Paper are themed to match.app-search-criteria (left 4px primary border, same radius and shadow as above).palette.divider), no heavy shadow (elevation={0}). Toolbar with consistent min-height and horizontal padding. Profile and title use text.secondary and font-weight 600.ListItemButton with mx: 1, minWidth: 40 on icons. Child items slightly smaller font (0.875rem).MenuItem.pathname === item.path or pathname.startsWith(item.path + "/"). Parent with children expands on click; leaf items navigate via Link.app-search-criteria), buttons, table container, modals. Good reference for Tailwind patterns.When adding a new page, reuse the same structure: rely on the main layout for background/padding, use one optional standard <h1>, then SearchBox (or app-search-criteria for custom bars), then Paper-wrapped grid/table or other content, with buttons and forms following the rules above.