Files
carmanagement/admin/src/app/globals.css
T
root d7fb7b7a7b
Build & Deploy / Build & Push Docker Image (push) Failing after 47s
Build & Deploy / Deploy to VPS (push) Has been skipped
Test / API Unit Tests (push) Failing after 5m4s
Test / Marketplace Unit Tests (push) Failing after 4m55s
Test / Admin Unit Tests (push) Successful in 9m37s
Test / Dashboard Unit Tests (push) Successful in 9m37s
Test / API Integration Tests (push) Successful in 9m54s
redesign the homepage
2026-06-26 16:27:21 -04:00

1103 lines
29 KiB
CSS

@import "../styles/phase16-tokens.css";
@tailwind base;
@tailwind components;
@tailwind utilities;
html.light {
color-scheme: light;
}
html.dark {
color-scheme: dark;
}
body {
@apply text-blue-950 antialiased transition-colors dark:text-slate-100;
background-image:
linear-gradient(180deg, #ffffff 0%, #f5f8ff 28%, #eef4ff 58%, #ffffff 100%);
}
.shell {
@apply mx-auto max-w-7xl px-4 sm:px-6 lg:px-8;
}
.panel {
@apply rounded-[1.75rem] border shadow-[0_30px_80px_rgba(28,25,23,0.08)] backdrop-blur transition-colors dark:shadow-[0_30px_80px_rgba(0,0,0,0.36)];
border-color: rgb(231 229 228 / 0.8);
background-color: rgb(255 255 255 / 0.82);
}
html.dark body {
background-image:
linear-gradient(180deg, #0a1128 0%, #0d1b38 35%, #07101e 100%);
}
html.dark .panel {
border-color: rgb(30 60 140 / 0.40);
background-color: rgb(11 25 55 / 0.72);
}
@layer utilities {
.light body {
color: rgb(28 25 23);
}
/* ── Dark mode: zinc classes → deep navy blue ─────────────── */
.bg-zinc-950 {
background-color: rgb(6 13 30);
}
.bg-zinc-950\/90 {
background-color: rgb(6 13 30 / 0.9);
}
.bg-zinc-900 {
background-color: rgb(11 25 55);
}
.bg-zinc-800,
.bg-zinc-800\/50 {
background-color: rgb(20 42 90);
}
.border-zinc-800,
.border-zinc-700 {
border-color: rgb(30 60 130);
}
.text-zinc-100,
.text-zinc-200 {
color: rgb(241 245 249);
}
.text-zinc-500 {
color: rgb(148 163 184);
}
.text-zinc-400,
.text-zinc-300 {
color: rgb(100 116 139);
}
.hover\:bg-zinc-800:hover,
.hover\:bg-zinc-800\/50:hover {
background-color: rgb(30 55 115);
}
.hover\:text-zinc-200:hover {
color: rgb(241 245 249);
}
/* ── Primary action (emerald class → orange) ──────────────── */
.text-emerald-400 {
color: rgb(251 146 60);
}
.bg-emerald-600 {
background-color: rgb(234 88 12);
}
.hover\:bg-emerald-500:hover {
background-color: rgb(194 65 12);
}
.dark .bg-emerald-600 {
background-color: rgb(249 115 22);
}
.dark .hover\:bg-emerald-500:hover {
background-color: rgb(251 146 60);
}
.bg-emerald-900\/30,
.bg-emerald-950\/40,
.bg-emerald-950\/50 {
background-color: rgb(154 52 18 / 0.22);
}
.border-emerald-500 {
border-color: rgb(249 115 22);
}
.focus\:ring-emerald-500:focus {
--tw-ring-color: rgb(234 88 12 / 0.45);
}
.hover\:bg-emerald-900\/50:hover {
background-color: rgb(154 52 18 / 0.35);
}
/* ── Light mode: zinc classes → white / stone-light ──────── */
.light .bg-zinc-950 {
background-color: rgb(255 253 248);
}
.light .bg-zinc-950\/90 {
background-color: rgb(255 255 255 / 0.9);
}
.light .bg-zinc-900 {
background-color: rgb(255 255 255 / 0.82);
}
.light .bg-zinc-800,
.light .bg-zinc-800\/50 {
background-color: rgb(245 245 244);
}
.light .border-zinc-800,
.light .border-zinc-700 {
border-color: rgb(231 229 228);
}
.light .text-zinc-100,
.light .text-zinc-200 {
color: rgb(28 25 23);
}
.light .text-zinc-500 {
color: rgb(120 113 108);
}
.light .text-zinc-400,
.light .text-zinc-300 {
color: rgb(87 83 78);
}
.light .hover\:bg-zinc-800:hover,
.light .hover\:bg-zinc-800\/50:hover {
background-color: rgb(245 245 244);
}
.light .hover\:text-zinc-200:hover {
color: rgb(28 25 23);
}
}
/* Phase 16 operational application layer */
@layer base {
html {
min-width: 320px;
background: var(--rdg-surface-page);
color: var(--rdg-text-primary);
scroll-behavior: smooth;
text-rendering: optimizeLegibility;
}
body {
min-height: 100dvh;
background: var(--rdg-surface-page);
color: var(--rdg-text-primary);
font-family: var(--rdg-font-latin);
line-height: 1.6;
}
h1,
h2,
h3,
h4,
h5,
h6 {
color: var(--rdg-text-primary);
line-height: 1.18;
text-wrap: balance;
}
p {
text-wrap: pretty;
}
button,
input,
select,
textarea {
font: inherit;
}
a,
button,
input,
select,
textarea {
-webkit-tap-highlight-color: transparent;
}
}
@layer components {
.shell {
width: min(100%, var(--rdg-container-max));
}
.panel,
.card,
.glass-card,
.site-panel {
border-color: var(--rdg-border);
border-radius: var(--rdg-radius-lg);
background: color-mix(in srgb, var(--rdg-surface-elevated) 92%, transparent);
box-shadow: var(--rdg-shadow-card);
backdrop-filter: blur(18px);
-webkit-backdrop-filter: blur(18px);
}
.site-panel-muted {
border-color: var(--rdg-border);
border-radius: var(--rdg-radius-lg);
background: var(--rdg-surface-muted);
}
.site-panel-contrast {
border-color: color-mix(in srgb, var(--rdg-blue-700) 68%, var(--rdg-border));
border-radius: var(--rdg-radius-lg);
background:
radial-gradient(circle at 90% 10%, color-mix(in srgb, var(--rdg-blue-500) 30%, transparent), transparent 40%),
linear-gradient(135deg, var(--rdg-navy-900), var(--rdg-blue-800));
}
.btn-primary,
.site-link-primary {
min-height: var(--rdg-touch-min);
border-radius: var(--rdg-radius-sm);
background: var(--rdg-action-conversion);
color: #ffffff;
box-shadow: var(--rdg-shadow-subtle);
}
.btn-primary:hover,
.site-link-primary:hover {
background: var(--rdg-action-conversion-hover);
}
.btn-secondary,
.site-link-secondary {
min-height: var(--rdg-touch-min);
border-color: var(--rdg-border-strong);
border-radius: var(--rdg-radius-sm);
background: var(--rdg-surface-primary);
color: var(--rdg-action-primary);
}
.btn-secondary:hover,
.site-link-secondary:hover {
border-color: var(--rdg-action-primary);
background: var(--rdg-soft-blue);
color: var(--rdg-action-primary-hover);
}
.input-field,
input:not([type='checkbox']):not([type='radio']):not([type='range']),
select,
textarea {
min-height: var(--rdg-touch-min);
border-color: var(--rdg-border);
border-radius: var(--rdg-radius-sm);
background: var(--rdg-surface-primary);
color: var(--rdg-text-primary);
}
.input-field::placeholder,
input::placeholder,
textarea::placeholder {
color: var(--rdg-text-subdued);
}
table {
border-color: var(--rdg-border);
}
thead {
background: var(--rdg-surface-muted);
color: var(--rdg-text-secondary);
}
tbody tr {
border-color: var(--rdg-border);
}
}
@media (forced-colors: active) {
.panel,
.card,
.glass-card,
.site-panel,
.site-panel-muted,
.site-panel-contrast {
border: 1px solid CanvasText;
box-shadow: none;
}
}
/* Phase 16 admin semantic corrections: blue actions, green status, orange focus. */
@layer utilities {
.text-emerald-400 { color: rgb(52 211 153); }
.text-emerald-300 { color: rgb(110 231 183); }
.text-emerald-500 { color: rgb(16 185 129); }
.text-emerald-600 { color: rgb(5 150 105); }
.bg-emerald-400 { background-color: rgb(52 211 153); }
.bg-emerald-500 { background-color: rgb(16 185 129); }
.bg-emerald-500\/10 { background-color: rgb(16 185 129 / 0.10); }
.bg-emerald-500\/15 { background-color: rgb(16 185 129 / 0.15); }
.bg-emerald-900\/20 { background-color: rgb(6 78 59 / 0.20); }
.bg-emerald-900\/30 { background-color: rgb(6 78 59 / 0.30); }
.bg-emerald-900\/40 { background-color: rgb(6 78 59 / 0.40); }
.bg-emerald-950\/40 { background-color: rgb(2 44 34 / 0.40); }
.bg-emerald-950\/50 { background-color: rgb(2 44 34 / 0.50); }
.border-emerald-500 { border-color: rgb(16 185 129); }
.border-emerald-500\/30 { border-color: rgb(16 185 129 / 0.30); }
.hover\:bg-emerald-900\/50:hover { background-color: rgb(6 78 59 / 0.50); }
.focus\:ring-orange-500:focus { --tw-ring-color: rgb(249 115 22 / 0.50); }
}
html.dark body,
html[data-theme='dark'] body {
background: var(--rdg-surface-page);
}
html.dark .panel,
html.dark .card,
html.dark .glass-card,
html[data-theme='dark'] .panel,
html[data-theme='dark'] .card,
html[data-theme='dark'] .glass-card {
border-color: var(--rdg-border);
background: color-mix(in srgb, var(--rdg-surface-elevated) 92%, transparent);
box-shadow: var(--rdg-shadow-card);
}
/* ==============================================================
Phase 16 operational shell
Mirrors the approved homepage system: precise blue hierarchy,
orange conversion accents, calm surfaces, 44px controls, true RTL,
and restrained depth instead of dashboard-template theatrics.
============================================================== */
.rdg-app-shell {
min-height: 100dvh;
color: var(--rdg-text-primary);
background:
radial-gradient(circle at 8% 0%, color-mix(in srgb, var(--rdg-blue-100) 72%, transparent), transparent 30rem),
radial-gradient(circle at 100% 18%, color-mix(in srgb, var(--rdg-orange-100) 48%, transparent), transparent 25rem),
linear-gradient(180deg, var(--rdg-surface-page), color-mix(in srgb, var(--rdg-soft-blue) 52%, var(--rdg-surface-page)) 52%, var(--rdg-surface-page));
}
html.dark .rdg-app-shell,
html[data-theme='dark'] .rdg-app-shell {
background:
radial-gradient(circle at 10% 0%, color-mix(in srgb, var(--rdg-blue-800) 22%, transparent), transparent 32rem),
radial-gradient(circle at 100% 20%, color-mix(in srgb, var(--rdg-orange-700) 10%, transparent), transparent 28rem),
linear-gradient(180deg, var(--rdg-navy-950), #09172a 54%, var(--rdg-navy-950));
}
.rdg-workspace {
min-width: 0;
flex: 1 1 auto;
}
.rdg-sidebar {
border-color: var(--rdg-border) !important;
background: color-mix(in srgb, var(--rdg-surface-primary) 94%, transparent) !important;
color: var(--rdg-text-primary) !important;
box-shadow: 10px 0 36px color-mix(in srgb, var(--rdg-shadow-color) 62%, transparent) !important;
backdrop-filter: blur(18px);
-webkit-backdrop-filter: blur(18px);
}
html[dir='rtl'] .rdg-sidebar {
box-shadow: -10px 0 36px color-mix(in srgb, var(--rdg-shadow-color) 62%, transparent) !important;
}
.rdg-sidebar-brand {
min-height: var(--rdg-header-size);
border-color: var(--rdg-border) !important;
}
.rdg-brand-mark {
display: inline-grid;
width: 40px;
height: 40px;
flex: 0 0 auto;
place-items: center;
border-radius: var(--rdg-radius-sm);
background: var(--rdg-action-primary) !important;
color: #fff;
box-shadow: var(--rdg-shadow-subtle);
}
.rdg-sidebar-nav {
scrollbar-width: thin;
scrollbar-color: color-mix(in srgb, var(--rdg-action-primary) 25%, transparent) transparent;
}
.rdg-nav-item {
position: relative;
min-height: var(--rdg-touch-min);
border: 1px solid transparent;
border-radius: var(--rdg-radius-sm) !important;
color: var(--rdg-text-secondary) !important;
transition:
color var(--rdg-duration-standard) var(--rdg-easing),
background var(--rdg-duration-standard) var(--rdg-easing),
border-color var(--rdg-duration-standard) var(--rdg-easing),
transform var(--rdg-duration-standard) var(--rdg-easing);
}
.rdg-nav-item:hover {
border-color: color-mix(in srgb, var(--rdg-action-primary) 18%, var(--rdg-border));
background: var(--rdg-soft-blue) !important;
color: var(--rdg-action-primary-hover) !important;
}
.rdg-nav-item[aria-current='page'],
.rdg-nav-item[data-active='true'] {
border-color: color-mix(in srgb, var(--rdg-action-primary) 35%, var(--rdg-border));
background: var(--rdg-action-primary) !important;
color: #fff !important;
box-shadow: 0 10px 24px color-mix(in srgb, var(--rdg-action-primary) 22%, transparent) !important;
}
html.dark .rdg-nav-item[aria-current='page'],
html.dark .rdg-nav-item[data-active='true'] {
color: var(--rdg-navy-950) !important;
}
.rdg-nav-item[aria-current='page'] svg,
.rdg-nav-item[data-active='true'] svg {
color: inherit !important;
}
.rdg-sidebar-footer {
border-color: var(--rdg-border) !important;
}
.rdg-user-card {
border: 1px solid var(--rdg-border) !important;
border-radius: var(--rdg-radius-md) !important;
background: var(--rdg-surface-muted) !important;
}
.rdg-avatar {
display: inline-grid;
min-width: 38px;
height: 38px;
place-items: center;
border-radius: var(--rdg-radius-sm) !important;
background: var(--rdg-action-primary) !important;
color: #fff !important;
font-weight: 800;
}
.rdg-topbar {
position: sticky;
z-index: 30;
top: 0;
display: flex;
min-height: var(--rdg-header-size);
align-items: center;
justify-content: space-between;
gap: var(--rdg-space-4);
border-bottom: 1px solid var(--rdg-border) !important;
background: color-mix(in srgb, var(--rdg-surface-primary) 94%, transparent) !important;
color: var(--rdg-text-primary) !important;
box-shadow: var(--rdg-shadow-subtle);
backdrop-filter: blur(14px);
-webkit-backdrop-filter: blur(14px);
}
.rdg-topbar-title {
margin: 0;
color: var(--rdg-text-primary) !important;
font-size: clamp(1rem, 1.5vw, 1.2rem);
font-weight: 800;
letter-spacing: -0.015em;
}
.rdg-topbar-kicker,
.rdg-page-kicker {
margin: 0;
color: var(--rdg-action-conversion) !important;
font-size: 0.72rem;
font-weight: 800;
letter-spacing: 0.16em;
text-transform: uppercase;
}
html[dir='rtl'] .rdg-topbar-kicker,
html[dir='rtl'] .rdg-page-kicker {
letter-spacing: normal;
text-transform: none;
}
.rdg-system-status {
display: inline-flex;
min-height: 34px;
align-items: center;
gap: var(--rdg-space-2);
border: 1px solid color-mix(in srgb, var(--rdg-green-700) 22%, var(--rdg-border));
border-radius: var(--rdg-radius-pill);
padding: 0 var(--rdg-space-3);
background: color-mix(in srgb, var(--rdg-green-100) 64%, var(--rdg-surface-primary));
color: var(--rdg-green-700);
font-size: 0.75rem;
font-weight: 750;
white-space: nowrap;
}
html.dark .rdg-system-status {
background: color-mix(in srgb, var(--rdg-green-700) 16%, var(--rdg-surface-primary));
color: #86efac;
}
.rdg-system-status::before {
width: 7px;
height: 7px;
border-radius: 50%;
background: currentColor;
box-shadow: 0 0 0 4px color-mix(in srgb, currentColor 12%, transparent);
content: '';
}
.rdg-search-field {
min-height: 42px !important;
border-color: var(--rdg-border) !important;
border-radius: var(--rdg-radius-sm) !important;
background: var(--rdg-surface-muted) !important;
color: var(--rdg-text-primary) !important;
box-shadow: none !important;
}
.rdg-search-field:focus {
border-color: var(--rdg-action-primary) !important;
background: var(--rdg-surface-primary) !important;
box-shadow: 0 0 0 4px color-mix(in srgb, var(--rdg-action-primary) 12%, transparent) !important;
}
.rdg-app-main {
min-width: 0;
flex: 1 1 auto;
padding: clamp(20px, 3vw, 40px);
}
.rdg-app-content {
width: min(100%, var(--rdg-container-max));
margin-inline: auto;
}
.rdg-app-content > * {
width: 100%;
margin-inline: auto;
}
.rdg-app-content h1 {
color: var(--rdg-text-primary) !important;
font-size: clamp(1.75rem, 3vw, 2.5rem);
font-weight: 850 !important;
letter-spacing: -0.035em;
}
.rdg-app-content h2 {
color: var(--rdg-text-primary) !important;
font-weight: 800 !important;
letter-spacing: -0.02em;
}
.rdg-app-content h3,
.rdg-app-content h4 {
color: var(--rdg-text-primary) !important;
font-weight: 750 !important;
}
.rdg-app-content p {
color: inherit;
}
.rdg-page-hero {
position: relative;
overflow: hidden;
border: 1px solid var(--rdg-border);
border-radius: var(--rdg-radius-xl);
padding: clamp(24px, 4vw, 40px);
background:
radial-gradient(circle at 92% 8%, color-mix(in srgb, var(--rdg-blue-500) 18%, transparent), transparent 38%),
var(--rdg-surface-elevated);
box-shadow: var(--rdg-shadow-card);
}
.rdg-page-hero::before {
position: absolute;
inset: 0 0 auto;
height: 4px;
background: linear-gradient(90deg, var(--rdg-action-primary), var(--rdg-action-conversion));
content: '';
}
.rdg-page-description {
max-width: 68ch;
color: var(--rdg-text-secondary) !important;
font-size: 0.98rem;
line-height: 1.7;
}
/* Core surfaces. These intentionally match homepage Card/StateShell geometry. */
.rdg-app-shell .card,
.rdg-app-shell .panel,
.rdg-app-shell .glass-card {
border: 1px solid var(--rdg-border) !important;
border-radius: var(--rdg-radius-lg) !important;
background: color-mix(in srgb, var(--rdg-surface-elevated) 96%, transparent) !important;
box-shadow: var(--rdg-shadow-card) !important;
color: var(--rdg-text-primary);
backdrop-filter: blur(16px);
-webkit-backdrop-filter: blur(16px);
}
.rdg-app-shell a.card,
.rdg-app-shell a.panel,
.rdg-app-shell button.card,
.rdg-app-shell button.panel {
transition:
transform var(--rdg-duration-standard) var(--rdg-easing),
border-color var(--rdg-duration-standard) var(--rdg-easing),
box-shadow var(--rdg-duration-standard) var(--rdg-easing);
}
.rdg-app-shell a.card:hover,
.rdg-app-shell a.panel:hover,
.rdg-app-shell button.card:hover,
.rdg-app-shell button.panel:hover {
border-color: color-mix(in srgb, var(--rdg-action-primary) 34%, var(--rdg-border)) !important;
box-shadow: 0 24px 64px color-mix(in srgb, var(--rdg-shadow-color) 90%, transparent) !important;
transform: translateY(-2px);
}
.rdg-app-shell .card > header,
.rdg-app-shell .panel > header {
border-color: var(--rdg-border) !important;
}
/* Operational actions are blue. Orange remains the conversion/focus accent. */
.rdg-app-shell .btn-primary {
display: inline-flex;
min-height: var(--rdg-touch-min);
align-items: center;
justify-content: center;
gap: var(--rdg-space-2);
border: 1px solid var(--rdg-action-primary) !important;
border-radius: var(--rdg-radius-sm) !important;
padding: 0.65rem 1rem;
background: var(--rdg-action-primary) !important;
color: #fff !important;
font-weight: 750;
box-shadow: var(--rdg-shadow-subtle) !important;
transition:
background var(--rdg-duration-standard) var(--rdg-easing),
border-color var(--rdg-duration-standard) var(--rdg-easing),
transform var(--rdg-duration-standard) var(--rdg-easing);
}
html.dark .rdg-app-shell .btn-primary {
color: var(--rdg-navy-950) !important;
}
.rdg-app-shell .btn-primary:hover {
border-color: var(--rdg-action-primary-hover) !important;
background: var(--rdg-action-primary-hover) !important;
transform: translateY(-1px);
}
.rdg-app-shell .btn-secondary {
display: inline-flex;
min-height: var(--rdg-touch-min);
align-items: center;
justify-content: center;
gap: var(--rdg-space-2);
border: 1px solid var(--rdg-border-strong) !important;
border-radius: var(--rdg-radius-sm) !important;
padding: 0.65rem 1rem;
background: var(--rdg-surface-primary) !important;
color: var(--rdg-action-primary) !important;
font-weight: 750;
}
.rdg-app-shell .btn-secondary:hover {
border-color: var(--rdg-action-primary) !important;
background: var(--rdg-soft-blue) !important;
color: var(--rdg-action-primary-hover) !important;
}
.rdg-app-shell .btn-conversion {
display: inline-flex;
min-height: var(--rdg-touch-min);
align-items: center;
justify-content: center;
gap: var(--rdg-space-2);
border: 1px solid var(--rdg-action-conversion);
border-radius: var(--rdg-radius-sm);
padding: 0.65rem 1rem;
background: var(--rdg-action-conversion);
color: #fff;
font-weight: 750;
}
.rdg-app-shell .btn-conversion:hover {
border-color: var(--rdg-action-conversion-hover);
background: var(--rdg-action-conversion-hover);
}
.rdg-app-shell .btn-danger {
min-height: var(--rdg-touch-min);
border-radius: var(--rdg-radius-sm) !important;
}
.rdg-app-shell input:not([type='checkbox']):not([type='radio']):not([type='range']),
.rdg-app-shell select,
.rdg-app-shell textarea,
.rdg-app-shell .input-field {
min-height: var(--rdg-touch-min);
border: 1px solid var(--rdg-border) !important;
border-radius: var(--rdg-radius-sm) !important;
background: var(--rdg-surface-primary) !important;
color: var(--rdg-text-primary) !important;
box-shadow: none;
transition:
border-color var(--rdg-duration-standard) var(--rdg-easing),
box-shadow var(--rdg-duration-standard) var(--rdg-easing),
background var(--rdg-duration-standard) var(--rdg-easing);
}
.rdg-app-shell input:not([type='checkbox']):not([type='radio']):not([type='range']):hover,
.rdg-app-shell select:hover,
.rdg-app-shell textarea:hover,
.rdg-app-shell .input-field:hover {
border-color: var(--rdg-border-strong) !important;
}
.rdg-app-shell input:not([type='checkbox']):not([type='radio']):not([type='range']):focus,
.rdg-app-shell select:focus,
.rdg-app-shell textarea:focus,
.rdg-app-shell .input-field:focus {
border-color: var(--rdg-action-primary) !important;
outline: none;
box-shadow: 0 0 0 4px color-mix(in srgb, var(--rdg-action-primary) 13%, transparent) !important;
}
.rdg-app-shell input::placeholder,
.rdg-app-shell textarea::placeholder {
color: var(--rdg-text-subdued) !important;
}
.rdg-app-shell table {
width: 100%;
border-collapse: separate;
border-spacing: 0;
color: var(--rdg-text-primary);
}
.rdg-app-shell thead {
background: var(--rdg-surface-muted) !important;
color: var(--rdg-text-secondary) !important;
}
.rdg-app-shell th {
padding: 0.85rem 1.1rem;
font-size: 0.72rem;
font-weight: 800 !important;
letter-spacing: 0.08em;
text-transform: uppercase;
white-space: nowrap;
}
html[dir='rtl'] .rdg-app-shell th {
letter-spacing: normal;
text-transform: none;
}
.rdg-app-shell td {
padding: 0.95rem 1.1rem;
color: var(--rdg-text-secondary);
vertical-align: middle;
}
.rdg-app-shell tbody tr {
border-color: var(--rdg-border) !important;
transition: background var(--rdg-duration-fast) ease;
}
.rdg-app-shell tbody tr:hover {
background: color-mix(in srgb, var(--rdg-soft-blue) 62%, transparent) !important;
}
.rdg-app-shell .progress-bar {
overflow: hidden;
border-radius: var(--rdg-radius-pill);
background: var(--rdg-surface-strong) !important;
}
.rdg-app-shell .progress-fill.blue {
background: var(--rdg-action-primary) !important;
}
.rdg-app-shell .progress-fill.orange {
background: var(--rdg-action-conversion) !important;
}
.rdg-app-shell .badge-blue,
.rdg-app-shell .badge-green,
.rdg-app-shell .badge-amber,
.rdg-app-shell .badge-red,
.rdg-app-shell .badge-gray,
.rdg-app-shell .badge-purple,
.rdg-app-shell .badge-indigo {
min-height: 24px;
align-items: center;
border-radius: var(--rdg-radius-pill) !important;
border: 1px solid transparent;
padding-inline: 0.65rem;
font-weight: 750;
}
.rdg-app-shell .badge-blue {
border-color: color-mix(in srgb, var(--rdg-blue-700) 22%, transparent);
background: color-mix(in srgb, var(--rdg-blue-100) 72%, var(--rdg-surface-primary)) !important;
color: var(--rdg-blue-700) !important;
}
.rdg-app-shell .badge-green {
border-color: color-mix(in srgb, var(--rdg-green-700) 22%, transparent);
background: color-mix(in srgb, var(--rdg-green-100) 72%, var(--rdg-surface-primary)) !important;
color: var(--rdg-green-700) !important;
}
.rdg-app-shell .badge-amber {
border-color: color-mix(in srgb, var(--rdg-amber-800) 20%, transparent);
background: color-mix(in srgb, var(--rdg-amber-100) 72%, var(--rdg-surface-primary)) !important;
color: var(--rdg-amber-800) !important;
}
.rdg-app-shell .badge-red {
border-color: color-mix(in srgb, var(--rdg-red-700) 20%, transparent);
background: color-mix(in srgb, var(--rdg-red-100) 72%, var(--rdg-surface-primary)) !important;
color: var(--rdg-red-700) !important;
}
.rdg-app-shell .badge-gray {
border-color: var(--rdg-border);
background: var(--rdg-surface-muted) !important;
color: var(--rdg-text-secondary) !important;
}
html.dark .rdg-app-shell .badge-blue { color: var(--rdg-blue-100) !important; }
html.dark .rdg-app-shell .badge-green { color: #bbf7d0 !important; }
html.dark .rdg-app-shell .badge-amber { color: #fde68a !important; }
html.dark .rdg-app-shell .badge-red { color: #fecaca !important; }
/* Semantic bridge for legacy utility classes still present in large pages. */
html.light .rdg-app-shell .bg-white,
html.light .rdg-app-shell .bg-zinc-900,
html.light .rdg-app-shell .bg-zinc-950 {
background-color: var(--rdg-surface-elevated) !important;
}
html.light .rdg-app-shell .bg-slate-50,
html.light .rdg-app-shell .bg-zinc-800 {
background-color: var(--rdg-surface-muted) !important;
}
html.light .rdg-app-shell .text-zinc-100,
html.light .rdg-app-shell .text-zinc-200,
html.light .rdg-app-shell .text-slate-900 {
color: var(--rdg-text-primary) !important;
}
html.light .rdg-app-shell .text-zinc-300,
html.light .rdg-app-shell .text-zinc-400,
html.light .rdg-app-shell .text-zinc-500,
html.light .rdg-app-shell .text-slate-700,
html.light .rdg-app-shell .text-slate-600,
html.light .rdg-app-shell .text-slate-500,
html.light .rdg-app-shell .text-stone-500 {
color: var(--rdg-text-secondary) !important;
}
.rdg-app-shell .border-zinc-800,
.rdg-app-shell .border-zinc-700,
.rdg-app-shell .border-slate-200,
.rdg-app-shell .border-stone-200 {
border-color: var(--rdg-border) !important;
}
html.dark .rdg-app-shell .bg-white,
html.dark .rdg-app-shell .bg-zinc-900,
html.dark .rdg-app-shell .bg-zinc-950 {
background-color: var(--rdg-surface-elevated) !important;
}
html.dark .rdg-app-shell .bg-slate-50,
html.dark .rdg-app-shell .bg-zinc-800 {
background-color: var(--rdg-surface-muted) !important;
}
html.dark .rdg-app-shell .text-zinc-100,
html.dark .rdg-app-shell .text-zinc-200,
html.dark .rdg-app-shell .text-slate-900 {
color: var(--rdg-text-primary) !important;
}
html.dark .rdg-app-shell .text-zinc-300,
html.dark .rdg-app-shell .text-zinc-400,
html.dark .rdg-app-shell .text-zinc-500,
html.dark .rdg-app-shell .text-slate-700,
html.dark .rdg-app-shell .text-slate-600,
html.dark .rdg-app-shell .text-slate-500,
html.dark .rdg-app-shell .text-stone-500 {
color: var(--rdg-text-secondary) !important;
}
/* Dialogs and overlays inherit the same surface system. */
.rdg-app-shell [role='dialog'],
.rdg-app-shell dialog {
border-color: var(--rdg-border) !important;
border-radius: var(--rdg-radius-lg) !important;
background: var(--rdg-surface-elevated) !important;
color: var(--rdg-text-primary) !important;
box-shadow: var(--rdg-shadow-overlay) !important;
}
@media (max-width: 1023px) {
.rdg-app-main {
padding: 20px 16px 32px;
}
.rdg-topbar {
padding-inline: 16px !important;
}
}
@media (max-width: 639px) {
.rdg-app-main {
padding: 16px 12px 28px;
}
.rdg-app-content h1 {
font-size: 1.65rem;
}
.rdg-page-hero {
border-radius: var(--rdg-radius-lg);
padding: 24px 20px;
}
.rdg-system-status,
.rdg-topbar-search {
display: none !important;
}
}
@media (forced-colors: active) {
.rdg-sidebar,
.rdg-topbar,
.rdg-app-shell .card,
.rdg-app-shell .panel,
.rdg-app-shell .glass-card,
.rdg-page-hero {
border: 1px solid CanvasText !important;
box-shadow: none !important;
backdrop-filter: none;
}
}
@media print {
.rdg-app-shell {
display: block !important;
background: #fff !important;
color: #000 !important;
}
.rdg-app-main {
padding: 0 !important;
}
.rdg-app-shell .card,
.rdg-app-shell .panel,
.rdg-app-shell .glass-card {
box-shadow: none !important;
}
}
/* Legacy primary-action utilities are normalized to the homepage blue action. */
.rdg-app-shell button.bg-blue-700,
.rdg-app-shell a.bg-blue-700,
.rdg-app-shell button.bg-blue-600,
.rdg-app-shell a.bg-blue-600,
.rdg-app-shell button.bg-emerald-700,
.rdg-app-shell a.bg-emerald-700,
.rdg-app-shell button.bg-emerald-600,
.rdg-app-shell a.bg-emerald-600,
.rdg-app-shell button.bg-emerald-500,
.rdg-app-shell a.bg-emerald-500 {
border-color: var(--rdg-action-primary) !important;
background: var(--rdg-action-primary) !important;
color: #fff !important;
}
.rdg-app-shell button.bg-blue-700:hover,
.rdg-app-shell a.bg-blue-700:hover,
.rdg-app-shell button.bg-blue-600:hover,
.rdg-app-shell a.bg-blue-600:hover,
.rdg-app-shell button.bg-emerald-700:hover,
.rdg-app-shell a.bg-emerald-700:hover,
.rdg-app-shell button.bg-emerald-600:hover,
.rdg-app-shell a.bg-emerald-600:hover,
.rdg-app-shell button.bg-emerald-500:hover,
.rdg-app-shell a.bg-emerald-500:hover {
background: var(--rdg-action-primary-hover) !important;
}
.rdg-page-heading {
position: relative;
display: flex;
align-items: flex-end;
justify-content: space-between;
gap: var(--rdg-space-5);
min-height: 64px;
padding: 2px 0 var(--rdg-space-5);
border-bottom: 1px solid var(--rdg-border);
}
.rdg-page-heading::after {
position: absolute;
inset-inline-start: 0;
inset-block-end: -1px;
width: 72px;
height: 3px;
border-radius: var(--rdg-radius-pill);
background: linear-gradient(90deg, var(--rdg-action-primary), var(--rdg-action-conversion));
content: '';
}
.rdg-page-heading h1,
.rdg-page-heading h2 { margin: 0; }
.rdg-page-heading p { color: var(--rdg-text-secondary) !important; }
@media (max-width: 639px) {
.rdg-page-heading { align-items: flex-start; flex-direction: column; }
}
/* Explicit field utility for pages that compose controls dynamically. */
.rdg-app-shell .field {
width: 100%;
min-height: var(--rdg-touch-min);
border: 1px solid var(--rdg-border);
border-radius: var(--rdg-radius-sm);
background: var(--rdg-surface-primary);
color: var(--rdg-text-primary);
padding: 0.7rem 0.85rem;
transition: border-color var(--rdg-duration-fast) var(--rdg-easing), box-shadow var(--rdg-duration-fast) var(--rdg-easing), background-color var(--rdg-duration-fast) var(--rdg-easing);
}
.rdg-app-shell .field:hover { border-color: var(--rdg-border-strong); }
.rdg-app-shell .field:focus {
border-color: var(--rdg-focus);
box-shadow: 0 0 0 3px color-mix(in srgb, var(--rdg-focus) 18%, transparent);
outline: none;
}