freshyo/apps/admin-web/src/styles.css
2026-09-06 23:05:20 +05:30

150 lines
3.2 KiB
CSS

@import "tailwindcss";
@theme {
--color-brand-25: #EFF8FF;
--color-brand-50: #F5FAFF;
--color-brand-100: #D1E9FF;
--color-brand-200: #B2DDFF;
--color-brand-300: #84CAFF;
--color-brand-400: #53B1FD;
--color-brand-500: #2E90FA;
--color-brand-600: #1570EF;
--color-brand-700: #175CD3;
--color-brand-800: #1849A9;
--color-brand-900: #194185;
/* Flash delivery accent — consistent with user-ui */
--color-flash-25: #FFF5F6;
--color-flash-50: #FFE8EA;
--color-flash-100: #FFD1D6;
--color-flash-200: #FFA3AE;
--color-flash-300: #FF7585;
--color-flash-400: #F81260;
--color-flash-500: #E11D48;
--color-flash-600: #C40E50;
--color-flash-700: #9E0A3F;
--font-sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
--font-display: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}
* {
box-sizing: border-box;
}
html,
body,
#app {
min-height: 100%;
}
body {
margin: 0;
background-color: #f9fafb;
color: #111827;
font-family: var(--font-sans);
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
}
/* Safe area padding for mobile devices */
.pb-safe {
padding-bottom: env(safe-area-inset-bottom, 0px);
}
/* Hide scrollbar but allow scrolling */
.scrollbar-hide {
-ms-overflow-style: none;
scrollbar-width: none;
}
.scrollbar-hide::-webkit-scrollbar {
display: none;
}
/* Line clamp utilities */
.line-clamp-2 {
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
}
/* Focus rings — architecture, not decoration */
:focus-visible {
outline: 2px solid var(--color-brand-600);
outline-offset: 2px;
border-radius: 4px;
}
/* App shell — full-height flex column for content; sidebar rail at md+.
Sticky topbar/search live inside .shell-main so they can stick against
the viewport while scrolling. */
.shell-grid {
min-height: 100vh;
display: grid;
grid-template-areas: "main";
grid-template-columns: minmax(0, 1fr);
grid-template-rows: minmax(0, 1fr);
}
@media (min-width: 768px) {
.shell-grid {
grid-template-areas: "sidebar main";
grid-template-columns: 20vw minmax(0, 1fr);
grid-template-rows: minmax(0, 1fr);
}
}
.shell-sidebar {
grid-area: sidebar;
}
/* Flex column so sticky header elements are bounded by the full column,
not a fixed grid row. */
.shell-main {
grid-area: main;
display: flex;
flex-direction: column;
min-width: 0;
}
.shell-topbar {
flex-shrink: 0;
}
.shell-content {
flex: 1;
min-width: 0;
}
/* Typography scale — display */
.display-1 {
font-size: clamp(2rem, 4vw, 3rem);
line-height: 1.1;
letter-spacing: -0.02em;
font-weight: 800;
}
.display-2 {
font-size: clamp(1.5rem, 2.5vw, 2rem);
line-height: 1.2;
letter-spacing: -0.015em;
font-weight: 800;
}
/* Rule under section titles — flat, editorial */
.section-rule {
border-bottom: 1px solid #e5e7eb;
padding-bottom: 1rem;
}
/* Respect reduced motion */
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
}