/* EuchreCamp Theme - Green and Gold */ :root { /* Primary Colors */ --color-primary: #2d5a27; --color-primary-dark: #1e3d1a; --color-primary-light: #4a7c42; /* Secondary Colors (Gold) */ --color-secondary: #c9a227; --color-secondary-dark: #a68a1f; --color-secondary-light: #e6b832; /* Neutral Colors */ --color-white: #ffffff; --color-gray-50: #f9f9f9; --color-gray-100: #f5f5f5; --color-gray-200: #e0e0e0; --color-gray-300: #d0d0d0; --color-gray-500: #666666; --color-gray-700: #333333; --color-black: #000000; /* Status Colors */ --color-success: #2d5a27; --color-error: #c62828; --color-warning: #c9a227; --color-info: #1565c0; /* Background Colors */ --bg-body: var(--color-white); --bg-card: var(--color-white); --bg-card-alt: var(--color-gray-50); --bg-nav: var(--color-primary); --bg-nav-mobile: var(--color-primary); --bg-bottom-nav: var(--color-primary); /* Text Colors */ --text-primary: var(--color-black); --text-secondary: var(--color-gray-500); --text-on-primary: var(--color-white); --text-on-secondary: var(--color-black); /* Spacing */ --spacing-xs: 0.25rem; --spacing-sm: 0.5rem; --spacing-md: 1rem; --spacing-lg: 1.5rem; --spacing-xl: 2rem; --spacing-2xl: 3rem; /* Border Radius */ --radius-sm: 4px; --radius-md: 8px; --radius-lg: 12px; --radius-full: 9999px; /* Shadows */ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05); --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1); --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1); /* Transitions */ --transition-fast: 150ms ease; --transition-normal: 200ms ease; /* Z-index layers */ --z-bottom-nav: 1000; --z-overlay: 1100; --z-modal: 1200; /* Bottom Nav Height */ --bottom-nav-height: 60px; } /* Reset and Base Styles */ *, *::before, *::after { box-sizing: border-box; } html { font-size: 16px; -webkit-text-size-adjust: 100%; } body { background-color: var(--bg-body); color: var(--text-primary); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; margin: 0; padding: 0; line-height: 1.5; /* Add bottom padding for mobile navigation */ padding-bottom: var(--bottom-nav-height); } /* Desktop Navigation (hidden on mobile) */ .main-nav { background-color: var(--bg-nav); color: var(--text-on-primary); padding: var(--spacing-md) var(--spacing-xl); display: flex; justify-content: space-between; align-items: center; box-shadow: var(--shadow-md); position: sticky; top: 0; z-index: var(--z-bottom-nav); } @media (max-width: 768px) { .main-nav { display: none; } } .nav-brand a { color: var(--text-on-primary); text-decoration: none; font-size: 1.5rem; font-weight: bold; } .nav-links { display: flex; gap: var(--spacing-lg); } .nav-links a { color: var(--text-on-primary); text-decoration: none; opacity: 0.9; transition: opacity var(--transition-fast); padding: var(--spacing-sm) 0; } .nav-links a:hover { opacity: 1; } .nav-user { display: flex; gap: var(--spacing-md); align-items: center; } .nav-user span { opacity: 0.8; } .nav-user a { color: var(--text-on-primary); text-decoration: none; opacity: 0.9; transition: opacity var(--transition-fast); } .nav-user a:hover { opacity: 1; } /* Bottom Navigation (Mobile) */ .bottom-nav { display: none; position: fixed; bottom: 0; left: 0; right: 0; height: var(--bottom-nav-height); background-color: var(--bg-bottom-nav); box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1); z-index: var(--z-bottom-nav); } @media (max-width: 768px) { .bottom-nav { display: flex; justify-content: space-around; align-items: center; } } .bottom-nav-item { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: var(--spacing-sm); color: var(--text-on-primary); text-decoration: none; opacity: 0.7; transition: opacity var(--transition-fast); flex: 1; } .bottom-nav-item:hover, .bottom-nav-item.active { opacity: 1; } .bottom-nav-item svg { width: 24px; height: 24px; margin-bottom: 2px; } .bottom-nav-item span { font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.5px; } /* Offline Notification */ .offline-notification { position: fixed; top: var(--spacing-md); left: 50%; transform: translateX(-50%); background-color: var(--color-secondary); color: var(--text-on-secondary); padding: var(--spacing-sm) var(--spacing-md); border-radius: var(--radius-full); display: flex; align-items: center; gap: var(--spacing-sm); box-shadow: var(--shadow-md); z-index: var(--z-overlay); animation: slideDown 0.3s ease; } @keyframes slideDown { from { transform: translateX(-50%) translateY(-100%); opacity: 0; } to { transform: translateX(-50%) translateY(0); opacity: 1; } } /* Bottom Nav Active State */ .bottom-nav-item.active { opacity: 1; color: var(--color-secondary); } .bottom-nav-item.active svg { stroke: var(--color-secondary); } /* Main Content */ .main-content { max-width: 1200px; margin: 0 auto; padding: var(--spacing-xl); } /* Responsive Main Content */ @media (max-width: 768px) { .main-content { padding: var(--spacing-md); padding-bottom: calc(var(--spacing-xl) + var(--bottom-nav-height)); } } @media (max-width: 480px) { .main-content { padding: var(--spacing-sm); padding-bottom: calc(var(--spacing-lg) + var(--bottom-nav-height)); } } /* Tables */ table { width: 100%; border-collapse: collapse; margin: 1rem 0; background: var(--bg-card); border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-sm); } th, td { padding: var(--spacing-md); text-align: left; border-bottom: 1px solid var(--color-gray-200); } th { background-color: var(--color-gray-100); font-weight: 600; color: var(--text-primary); } tr:hover { background-color: var(--color-gray-50); } /* Responsive Table - Convert to Cards on Mobile */ @media (max-width: 768px) { /* Hide table headers but keep content accessible */ table thead { display: none; } table, tbody, tr, td { display: block; width: 100%; } tr { margin-bottom: var(--spacing-md); border: 1px solid var(--color-gray-200); border-radius: var(--radius-md); background: var(--bg-card); box-shadow: var(--shadow-sm); } td { text-align: right; padding-left: 50%; position: relative; border-bottom: none; } td::before { content: attr(data-label); position: absolute; left: var(--spacing-md); width: 45%; font-weight: 600; text-align: left; color: var(--text-secondary); } td:last-child { border-bottom: none; } } /* Links */ a { color: #2d5a27; text-decoration: none; } a:hover { text-decoration: underline; } /* Headings */ h1, h2, h3 { color: #2d5a27; } /* Buttons */ button, .btn { background-color: #2d5a27; color: white; border: none; padding: 0.5rem 1rem; border-radius: 4px; cursor: pointer; text-decoration: none; display: inline-block; } button:hover, .btn:hover { background-color: #1e3d1a; } /* Forms */ input, select, textarea { padding: 0.5rem; border: 1px solid #ddd; border-radius: 4px; font-size: 1rem; } input:focus, select:focus, textarea:focus { outline: none; border-color: #2d5a27; } /* Profile Stats Grid */ .profile-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1rem; margin: 1rem 0; } .stat { background: #f9f9f9; padding: 1rem; border-radius: 8px; text-align: center; } .stat .label { display: block; font-size: 0.875rem; color: #666; margin-bottom: 0.5rem; } .stat .value { font-size: 1.5rem; font-weight: bold; color: #2d5a27; } /* Partnership Table */ .partnerships-table { margin: 1rem 0; } .confidence-high { color: #2d5a27; } .confidence-medium { color: #c9a227; } .confidence-low { color: #999; } /* Game Cards */ .recent-games { display: flex; flex-direction: column; gap: 0.5rem; } .game { padding: 1rem; border-radius: 8px; border-left: 4px solid #999; } .game.won { background-color: #e8f5e9; border-left-color: #2d5a27; } .game.lost { background-color: #ffebee; border-left-color: #c62828; } .game-date { font-size: 0.875rem; color: #666; margin-bottom: 0.5rem; } .game-teams { display: flex; align-items: center; gap: 1rem; font-weight: 500; } .game-score { font-weight: bold; color: #333; } .game-partner { font-size: 0.875rem; color: #666; margin-top: 0.5rem; } /* Schedule Styles */ .schedule-container { display: flex; flex-direction: column; gap: 2rem; } section { margin-bottom: 2rem; } section h2 { border-bottom: 2px solid #2d5a27; padding-bottom: 0.5rem; margin-bottom: 1rem; } /* Match Cards */ .matches-list { display: flex; flex-direction: column; gap: 1rem; } .match-card { display: flex; align-items: center; padding: 1rem; background: #f9f9f9; border-radius: 8px; gap: 1rem; } .match-date { min-width: 120px; font-size: 0.875rem; color: #666; } .match-details { flex: 1; } .teams { display: flex; align-items: center; gap: 1rem; } .team { padding: 0.5rem 1rem; border-radius: 4px; } .your-team { background-color: #e8f5e9; color: #2d5a27; font-weight: 500; } .opponent-team { background-color: #f5f5f5; } .vs { color: #999; font-size: 0.875rem; } .match-actions { min-width: 120px; text-align: right; } .btn-small { padding: 0.25rem 0.75rem; font-size: 0.875rem; } /* Tournament Cards */ .tournaments-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 1rem; } @media (max-width: 768px) { .tournaments-list { grid-template-columns: 1fr; } } .tournament-card { display: flex; align-items: center; padding: 1rem; background: var(--bg-card-alt); border-radius: var(--radius-md); gap: 1rem; border: 1px solid var(--color-gray-200); } @media (max-width: 480px) { .tournament-card { flex-direction: column; align-items: flex-start; gap: var(--spacing-sm); } .tournament-status { align-self: flex-end; } } .tournament-info { flex: 1; } .tournament-info h3 { margin: 0 0 0.25rem 0; font-size: 1rem; } .tournament-format { margin: 0; color: #666; font-size: 0.875rem; } .tournament-status { min-width: 80px; } .status-badge { padding: 0.25rem 0.5rem; border-radius: 12px; font-size: 0.75rem; font-weight: 500; text-transform: uppercase; } .status-badge.active { background-color: #e8f5e9; color: #2d5a27; } .status-badge.pending { background-color: #fff3e0; color: #e65100; } /* Schedule by Tournament */ .schedule-by-tournament { display: flex; flex-direction: column; gap: 1.5rem; } .tournament-schedule-item { background: #f9f9f9; padding: 1rem; border-radius: 8px; } .tournament-schedule-item h3 { margin: 0 0 1rem 0; font-size: 1.1rem; } .rounds { display: flex; flex-wrap: wrap; gap: 0.5rem; } .round { display: flex; flex-direction: column; padding: 0.5rem 1rem; background: white; border-radius: 4px; border: 1px solid #ddd; } .round-number { font-weight: 500; } .round-status { font-size: 0.75rem; color: #666; text-transform: capitalize; } /* No matches/tournaments message */ .no-matches, .no-tournaments, .no-schedule { color: var(--text-secondary); font-style: italic; padding: var(--spacing-xl); text-align: center; background: var(--bg-card-alt); border-radius: var(--radius-lg); } /* Card Container */ .card-container { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: var(--spacing-lg); margin: var(--spacing-lg) 0; } @media (max-width: 768px) { .card-container { grid-template-columns: 1fr; } } /* Card Base Styles */ .card { background: var(--bg-card); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); padding: var(--spacing-lg); transition: box-shadow var(--transition-normal); } .card:hover { box-shadow: var(--shadow-md); } /* Responsive visibility utilities */ .hide-mobile { display: block; } .show-mobile { display: none; } @media (max-width: 768px) { .hide-mobile { display: none !important; } .show-mobile { display: block !important; } } /* Form responsive styles */ .form-group input, .form-group select, .form-group textarea { width: 100%; padding: var(--spacing-sm) var(--spacing-md); border: 1px solid var(--color-gray-300); border-radius: var(--radius-sm); font-size: 1rem; transition: border-color var(--transition-fast); } @media (max-width: 480px) { .form-group input, .form-group select, .form-group textarea { padding: var(--spacing-sm); font-size: 16px; /* Prevents zoom on iOS */ } } /* Dashboard Stats */ .dashboard-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1rem; margin: 2rem 0; } @media (max-width: 480px) { .dashboard-stats { grid-template-columns: repeat(2, 1fr); gap: var(--spacing-sm); } } .stat-card { background: white; border: 1px solid #e0e0e0; border-radius: 12px; padding: 1.5rem; text-align: center; transition: box-shadow 0.2s; } .stat-card:hover { box-shadow: 0 4px 12px rgba(0,0,0,0.1); } .stat-value { font-size: 2.5rem; font-weight: bold; color: #2d5a27; margin-bottom: 0.5rem; } .stat-label { color: #666; margin-bottom: 1rem; } .stat-link { display: inline-block; font-size: 0.9rem; color: #2d5a27; text-decoration: none; } .stat-link:hover { text-decoration: underline; } /* Quick Actions */ .quick-actions { margin: 2rem 0; } .action-buttons { display: flex; gap: 1rem; flex-wrap: wrap; margin-top: 1rem; } .action-buttons .btn { padding: 0.75rem 1.5rem; } /* Recent Activity */ .recent-activity { margin: 2rem 0; } /* Admin Links */ .admin-links ul { list-style: none; padding: 0; } .admin-links li { padding: 0.75rem 0; border-bottom: 1px solid #eee; } .admin-links a { font-weight: 500; color: #2d5a27; } /* Forms */ .player-form { max-width: 500px; margin: 2rem 0; } .form-group { margin-bottom: 1.5rem; } .form-group label { display: block; margin-bottom: 0.5rem; font-weight: 500; } .form-group input { width: 100%; padding: 0.75rem; border: 1px solid #ddd; border-radius: 6px; font-size: 1rem; } .form-group input:focus { outline: none; border-color: #2d5a27; box-shadow: 0 0 0 2px rgba(45, 90, 39, 0.2); } .form-group small { color: #666; font-size: 0.875rem; } .form-actions { display: flex; gap: 1rem; margin-top: 2rem; } /* Auth Pages */ .auth-container { display: flex; justify-content: center; align-items: center; min-height: calc(100vh - 200px); padding: 2rem; } .auth-card { background: white; padding: 2rem; border-radius: 12px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); width: 100%; max-width: 400px; } .auth-card h1 { text-align: center; margin-bottom: 1.5rem; color: #2d5a27; } .form-group { margin-bottom: 1.25rem; } .form-group label { display: block; margin-bottom: 0.5rem; font-weight: 500; color: #333; } .form-group input[type="email"], .form-group input[type="password"], .form-group input[type="text"] { width: 100%; padding: 0.75rem; border: 1px solid #ddd; border-radius: 6px; font-size: 1rem; box-sizing: border-box; } .form-group input:focus { outline: none; border-color: #2d5a27; box-shadow: 0 0 0 2px rgba(45, 90, 39, 0.2); } .remember-me label { display: flex; align-items: center; gap: 0.5rem; font-weight: normal; cursor: pointer; } .btn-block { width: 100%; padding: 0.75rem; font-size: 1rem; margin-top: 0.5rem; } .btn-primary { background-color: #2d5a27; color: white; border: none; border-radius: 6px; cursor: pointer; transition: background-color 0.2s; } .btn-primary:hover { background-color: #1e3d1a; } .auth-links { margin-top: 1.5rem; text-align: center; font-size: 0.9rem; } .auth-links p { margin: 0.5rem 0; } /* Alerts */ .alert { padding: 1rem; border-radius: 6px; margin-bottom: 1rem; } .alert-error { background-color: #ffebee; color: #c62828; border: 1px solid #ef9a9a; } .alert-success { background-color: #e8f5e9; color: #2d5a27; border: 1px solid #a5d6a7; }