- Add mobile hamburger menu with slide-out nav drawer (AppLayout) - Make modals responsive: full-width on mobile, slide-up animation - Scratchpad becomes full-screen overlay on mobile with backdrop - Folder sidebar hidden on mobile, opens as slide-over drawer - Tree editor shows "Desktop Required" gate on mobile - Stack action buttons vertically on mobile (sessions, detail pages) - Increase touch targets throughout (buttons, close icons) - Add CSS animations: fade-in, slide-in-left, scale-in, btn-press - Add card hover lift effect and consistent border highlights - Standardize page padding (px-4 py-6 sm:px-6 sm:py-8) - Responsive headings (text-2xl sm:text-3xl) - CustomStepModal goes full-screen on mobile - Tighten auth page spacing on mobile Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
143 lines
3.3 KiB
CSS
143 lines
3.3 KiB
CSS
@tailwind base;
|
|
@tailwind components;
|
|
@tailwind utilities;
|
|
|
|
@layer base {
|
|
:root {
|
|
/* Light mode (fallback) */
|
|
--background: 0 0% 100%;
|
|
--foreground: 222.2 84% 4.9%;
|
|
--card: 0 0% 100%;
|
|
--card-foreground: 222.2 84% 4.9%;
|
|
--popover: 0 0% 100%;
|
|
--popover-foreground: 222.2 84% 4.9%;
|
|
--primary: 243 75% 59%;
|
|
--primary-foreground: 210 40% 98%;
|
|
--secondary: 210 40% 96.1%;
|
|
--secondary-foreground: 222.2 47.4% 11.2%;
|
|
--muted: 210 40% 96.1%;
|
|
--muted-foreground: 215.4 16.3% 46.9%;
|
|
--accent: 210 40% 96.1%;
|
|
--accent-foreground: 222.2 47.4% 11.2%;
|
|
--destructive: 0 84.2% 60.2%;
|
|
--destructive-foreground: 210 40% 98%;
|
|
--border: 214.3 31.8% 91.4%;
|
|
--input: 214.3 31.8% 91.4%;
|
|
--ring: 243 75% 59%;
|
|
--radius: 0.75rem;
|
|
}
|
|
|
|
.dark {
|
|
/* ResolutionFlow Dark Theme */
|
|
--background: 240 10% 3.9%;
|
|
--foreground: 0 0% 100%;
|
|
--card: 240 10% 9.4%;
|
|
--card-foreground: 0 0% 100%;
|
|
--popover: 240 10% 9.4%;
|
|
--popover-foreground: 0 0% 100%;
|
|
--primary: 243 75% 59%;
|
|
--primary-foreground: 0 0% 100%;
|
|
--secondary: 240 5.9% 15%;
|
|
--secondary-foreground: 0 0% 100%;
|
|
--muted: 240 5.9% 15%;
|
|
--muted-foreground: 240 5% 64.9%;
|
|
--accent: 240 5.9% 15%;
|
|
--accent-foreground: 0 0% 100%;
|
|
--destructive: 0 62.8% 30.6%;
|
|
--destructive-foreground: 0 0% 100%;
|
|
--border: 240 5.9% 15%;
|
|
--input: 240 5.9% 15%;
|
|
--ring: 243 75% 59%;
|
|
}
|
|
}
|
|
|
|
@layer base {
|
|
* {
|
|
@apply border-border;
|
|
scrollbar-width: thin;
|
|
scrollbar-color: hsl(var(--border)) transparent;
|
|
}
|
|
*::-webkit-scrollbar {
|
|
width: 6px;
|
|
height: 6px;
|
|
}
|
|
*::-webkit-scrollbar-track {
|
|
background: transparent;
|
|
}
|
|
*::-webkit-scrollbar-thumb {
|
|
background-color: hsl(var(--border));
|
|
border-radius: 9999px;
|
|
}
|
|
*::-webkit-scrollbar-thumb:hover {
|
|
background-color: hsl(var(--muted-foreground));
|
|
}
|
|
|
|
body {
|
|
@apply bg-background text-foreground;
|
|
font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
}
|
|
|
|
h1, h2, h3, h4, h5, h6 {
|
|
font-family: 'Plus Jakarta Sans', system-ui, sans-serif;
|
|
font-weight: 700;
|
|
letter-spacing: -0.02em;
|
|
}
|
|
}
|
|
|
|
/* Animations */
|
|
@keyframes fade-in {
|
|
from { opacity: 0; }
|
|
to { opacity: 1; }
|
|
}
|
|
|
|
@keyframes fade-in-up {
|
|
from { opacity: 0; transform: translateY(4px); }
|
|
to { opacity: 1; transform: translateY(0); }
|
|
}
|
|
|
|
@keyframes slide-in-from-left {
|
|
from { transform: translateX(-100%); }
|
|
to { transform: translateX(0); }
|
|
}
|
|
|
|
@keyframes slide-in-from-bottom {
|
|
from { opacity: 0; transform: translateY(16px); }
|
|
to { opacity: 1; transform: translateY(0); }
|
|
}
|
|
|
|
@keyframes scale-in {
|
|
from { opacity: 0; transform: scale(0.95); }
|
|
to { opacity: 1; transform: scale(1); }
|
|
}
|
|
|
|
@layer utilities {
|
|
.text-gradient-brand {
|
|
@apply bg-gradient-brand bg-clip-text text-transparent;
|
|
}
|
|
|
|
.animate-fade-in {
|
|
animation: fade-in 200ms ease-out;
|
|
}
|
|
|
|
.animate-fade-in-up {
|
|
animation: fade-in-up 200ms ease-out;
|
|
}
|
|
|
|
.animate-slide-in-left {
|
|
animation: slide-in-from-left 200ms ease-out;
|
|
}
|
|
|
|
.animate-slide-in-bottom {
|
|
animation: slide-in-from-bottom 200ms ease-out;
|
|
}
|
|
|
|
.animate-scale-in {
|
|
animation: scale-in 150ms ease-out;
|
|
}
|
|
|
|
/* Button press feedback for primary action buttons */
|
|
.btn-press {
|
|
@apply active:scale-[0.98] transition-transform;
|
|
}
|
|
}
|