@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; } }