150 lines
3.2 KiB
CSS
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;
|
|
}
|
|
}
|