import 'package:flutter/material.dart'; class AppTheme { // ── Colores principales ────────────────────────────────────────────────── static const Color primary = Color(0xFF1D9E75); static const Color primaryDark = Color(0xFF0F6E56); static const Color primaryLight = Color(0xFFE1F5EE); static const Color primaryMid = Color(0xFF9FE1CB); static const Color blue = Color(0xFF185FA5); static const Color blueLight = Color(0xFFE6F1FB); static const Color amber = Color(0xFF854F0B); static const Color amberLight = Color(0xFFFAEEDA); static const Color danger = Color(0xFFE24B4A); static const Color dangerLight = Color(0xFFFCEBEB); static const Color textPrimary = Color(0xFF1A1A1A); static const Color textSecondary = Color(0xFF6B7280); static const Color textHint = Color(0xFFAAAAAA); static const Color surface = Color(0xFFFFFFFF); static const Color background = Color(0xFFF5F7F5); static const Color border = Color(0xFFE5E7EB); static const Color borderLight = Color(0xFFF0F2F0); // ── Radios ─────────────────────────────────────────────────────────────── static const double radiusSm = 8.0; static const double radiusMd = 12.0; static const double radiusLg = 16.0; static const double radiusXl = 24.0; static const double radiusFull = 100.0; // ── Sombras ────────────────────────────────────────────────────────────── static List get cardShadow => [ BoxShadow( color: Colors.black.withOpacity(0.06), blurRadius: 12, offset: const Offset(0, 4), ), ]; static List get softShadow => [ BoxShadow( color: Colors.black.withOpacity(0.04), blurRadius: 8, offset: const Offset(0, 2), ), ]; // ── ThemeData ──────────────────────────────────────────────────────────── static ThemeData get lightTheme => ThemeData( useMaterial3: true, fontFamily: 'SF Pro Display', colorScheme: ColorScheme.fromSeed( seedColor: primary, primary: primary, secondary: primaryDark, surface: surface, background: background, ), scaffoldBackgroundColor: background, appBarTheme: const AppBarTheme( backgroundColor: primary, foregroundColor: Colors.white, elevation: 0, centerTitle: false, titleTextStyle: TextStyle( fontSize: 18, fontWeight: FontWeight.w600, color: Colors.white, ), ), elevatedButtonTheme: ElevatedButtonThemeData( style: ElevatedButton.styleFrom( backgroundColor: primary, foregroundColor: Colors.white, elevation: 0, minimumSize: const Size(double.infinity, 52), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(radiusMd), ), textStyle: const TextStyle( fontSize: 15, fontWeight: FontWeight.w600, ), ), ), outlinedButtonTheme: OutlinedButtonThemeData( style: OutlinedButton.styleFrom( foregroundColor: Colors.white, side: const BorderSide(color: Colors.white54, width: 1.5), minimumSize: const Size(double.infinity, 52), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(radiusMd), ), textStyle: const TextStyle( fontSize: 15, fontWeight: FontWeight.w600, ), ), ), inputDecorationTheme: InputDecorationTheme( filled: true, fillColor: surface, contentPadding: const EdgeInsets.symmetric(horizontal: 14, vertical: 12), border: OutlineInputBorder( borderRadius: BorderRadius.circular(radiusSm), borderSide: const BorderSide(color: border), ), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(radiusSm), borderSide: const BorderSide(color: border), ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(radiusSm), borderSide: const BorderSide(color: primary, width: 1.5), ), labelStyle: const TextStyle(color: textSecondary, fontSize: 13), hintStyle: const TextStyle(color: textHint, fontSize: 13), ), ); }