/* ========== MATERIAL DESIGN VARIABLES ========== */ :root { /* Color Palette - Google Material */ --md-primary: #1A73E8; --md-primary-dark: #1557B0; --md-primary-light: #4285F4; --md-surface: #FFFFFF; --md-background: #F8F9FA; --md-on-surface: #202124; --md-on-surface-variant: #5F6368; --md-outline: #DADCE0; --md-success: #1E8E3E; --md-warning: #F9AB00; --md-error: #D93025; /* Elevation Shadows - Material Design */ --md-elevation-0: none; --md-elevation-1: 0 1px 2px 0 rgba(60,64,67,.3), 0 1px 3px 1px rgba(60,64,67,.15); --md-elevation-2: 0 1px 2px 0 rgba(60,64,67,.3), 0 2px 6px 2px rgba(60,64,67,.15); --md-elevation-3: 0 4px 8px 3px rgba(60,64,67,.15), 0 1px 3px rgba(60,64,67,.3); --md-elevation-4: 0 6px 10px 4px rgba(60,64,67,.15), 0 2px 3px rgba(60,64,67,.3); /* Spacing System */ --spacing-xs: 4px; --spacing-sm: 8px; --spacing-md: 16px; --spacing-lg: 24px; --spacing-xl: 32px; --spacing-2xl: 48px; /* Border Radius */ --radius-sm: 4px; --radius-md: 8px; --radius-lg: 12px; --radius-xl: 16px; --radius-full: 9999px; /* Transitions - Material Motion */ --transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1); --transition-normal: 250ms cubic-bezier(0.4, 0, 0.2, 1); --transition-slow: 350ms cubic-bezier(0.4, 0, 0.2, 1); /* Typography */ --font-sans: 'Inter', 'Google Sans', -apple-system, BlinkMacSystemFont, sans-serif; } /* ========== GLOBAL RESET & FOUNDATION ========== */ * { box-sizing: border-box; } html { scroll-behavior: smooth; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } body, html, [class*="css"] { font-family: var(--font-sans); color: var(--md-on-surface); background-color: var(--md-background); } /* ========== BUTTONS - MATERIAL DESIGN ========== */ .stButton > button { background: var(--md-primary) !important; color: white !important; border: none !important; border-radius: var(--radius-md) !important; padding: 10px 24px !important; font-weight: 500 !important; font-size: 14px !important; letter-spacing: 0.25px !important; box-shadow: var(--md-elevation-2) !important; transition: all var(--transition-fast) !important; min-height: 44px !important; } .stButton > button:hover { background: var(--md-primary-dark) !important; box-shadow: var(--md-elevation-3) !important; transform: translateY(-1px); } .stButton > button:active { transform: translateY(0); box-shadow: var(--md-elevation-1) !important; } /* Touch-friendly on mobile */ @media (max-width: 768px) { .stButton > button { min-height: 48px !important; padding: 12px 24px !important; font-size: 16px !important; } body { font-size: 16px; /* Prevents iOS zoom */ } } /* ========== SMOOTH ANIMATIONS ========== */ @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes fadeInUp { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } @keyframes slideInRight { from { transform: translateX(20px); opacity: 0; } to { transform: translateX(0); opacity: 1; } } /* ========== SCROLLBAR STYLING ========== */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: var(--md-background); } ::-webkit-scrollbar-thumb { background: var(--md-outline); border-radius: var(--radius-full); } ::-webkit-scrollbar-thumb:hover { background: var(--md-on-surface-variant); } /* ========== RESPONSIVE TYPOGRAPHY ========== */ h1, h2, h3, h4, h5, h6 { font-weight: 500; color: var(--md-on-surface); } h1 { font-size: 32px; line-height: 40px; } h2 { font-size: 24px; line-height: 32px; } h3 { font-size: 20px; line-height: 28px; } @media (max-width: 768px) { h1 { font-size: 24px; line-height: 32px; } h2 { font-size: 20px; line-height: 28px; } h3 { font-size: 18px; line-height: 24px; } } /* ========== TRANSITIONS FOR INTERACTIVE ELEMENTS ========== */ button, a, input, textarea, select, [role="button"] { transition: all var(--transition-fast); } /* ========== MOBILE TAP TARGETS ========== */ @media (max-width: 768px) { button, a, [role="button"] { min-height: 44px; min-width: 44px; } } /* ========== ACCESSIBILITY ========== */ *:focus-visible { outline: 2px solid var(--md-primary); outline-offset: 2px; }