.container { max-width: 800px; margin: 0 auto; padding: 2rem 1rem; } /* Main Header - Copied from dashboard styles */ .header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 2rem; flex-wrap: wrap; gap: 1rem; } .headerContent { flex: 1 1 300px; min-width: 0; } .title { font-size: 2.5rem; margin-bottom: 0.25rem; color: var(--primary-color); word-wrap: break-word; hyphens: auto; line-height: 1.2; } .subtitle { font-size: 1rem; color: var(--timestamp-color); margin: 0 0 0.5rem 0; font-weight: normal; word-wrap: break-word; } .description { font-size: 1.1rem; color: var(--text-color); margin: 0; line-height: 1.5; word-wrap: break-word; } .creditLine { display: block; font-size: 0.85rem; margin-top: 0.5rem; color: var(--timestamp-color); } .kofiLink { color: var(--primary-color); text-decoration: none; transition: color 0.2s; } .kofiLink:hover { text-decoration: underline; } .headerActions { display: flex; gap: 1rem; align-items: center; } .userInfo { color: var(--text-color); font-weight: 500; text-decoration: none; transition: color 0.2s; } .userInfo:hover { color: var(--primary-color); text-decoration: underline; } .logoutButton { background-color: transparent; color: var(--primary-color); border: 1px solid var(--primary-color); padding: 0.3rem 0.8rem; font-size: 0.9rem; border-radius: 4px; cursor: pointer; transition: all 0.2s; } .logoutButton:hover { background-color: rgba(91, 173, 240, 0.1); } .loginButton { display: inline-block; background-color: var(--primary-color); color: white; padding: 0.6rem 1.2rem; border-radius: 4px; font-size: 1rem; font-weight: 500; transition: all 0.2s ease; text-decoration: none; } .loginButton:hover { background-color: var(--secondary-color); /* Removed transform and box-shadow to prevent movement */ } /* Stats Page Specific Styles */ .statsHeader { text-align: left; margin-bottom: 0.5rem; } .statsHeader h2 { font-size: 2rem; margin-bottom: 0.5rem; color: var(--primary-color); } .statsSubtitle { color: var(--text-color); font-size: 1.2rem; margin: 0; } .controls { display: flex; justify-content: flex-start; gap: 1rem; margin-bottom: 2rem; } .refreshButton { background-color: var(--primary-color); color: white; border: none; border-radius: 4px; padding: 0.5rem 1rem; font-size: 1rem; cursor: pointer; transition: background-color 0.2s; padding-top: 10px; } .refreshButton:hover:not(:disabled) { background-color: var(--secondary-color); } .refreshButton:disabled { background-color: #ccc; cursor: not-allowed; } .homeLink { display: inline-block; color: var(--primary-color); text-decoration: none; border: 1px solid var(--primary-color); border-radius: 4px; padding: 0.5rem 1rem; font-size: 1rem; transition: all 0.2s; padding-top: 10px; line-height: 1.3rem; } .homeLink:hover { background-color: rgba(91, 173, 240, 0.1); } .loadingContainer { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 3rem; text-align: center; } .loader { border: 4px solid var(--input-background); border-top: 4px solid var(--primary-color); border-radius: 50%; width: 40px; height: 40px; animation: spin 1s linear infinite; margin-bottom: 1rem; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .error { background-color: var(--error-background); color: var(--error-color); padding: 1rem; border-radius: 4px; margin-bottom: 1rem; } .emptyState { text-align: center; padding: 3rem; color: var(--text-color); } /* Stats Content Sections */ .statsContent { display: flex; flex-direction: column; gap: 2rem; } .overallStats, .chartSection, .leaderboardSection, .emojiSection { background: var(--card-background); border-radius: 8px; padding: 1.5rem; border: 1px solid var(--tile-border); } .overallStats h2, .chartSection h2, .leaderboardSection h2, .emojiSection h2 { margin-bottom: 1.5rem; font-size: 1.5rem; text-align: left; } .leaderboardNote { color: var(--timestamp-color); font-size: 0.9rem; margin-top: -1rem; margin-bottom: 1.5rem; text-align: center; font-style: italic; } .plumberProfileLink { display: inline-block; color: var(--primary-color); font-size: 0.95rem; text-decoration: none; margin-bottom: 1.5rem; } .plumberProfileLink:hover { text-decoration: underline; } /* Stats Grid */ .statsGrid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; } .statCard { background: var(--input-background); padding: 1.5rem; border-radius: 8px; text-align: center; transition: transform 0.2s; border: 1px solid var(--tile-border); } .statCard:hover { /* Removed transform and box-shadow to prevent movement */ border-color: var(--primary-color); } .statValue { font-size: 2.5rem; font-weight: bold; color: var(--primary-color); margin-bottom: 0.5rem; margin-top: -10px; } .statLabel { color: var(--text-color); font-size: 1.1rem; line-height: 1.1em; } /* Plumber link styles */ .plumberLink { color: inherit; text-decoration: none; display: inline-block; transition: transform 0.2s, color 0.2s; position: relative; } .plumberLink:hover { color: #e84142; /* A reddish color for plumber branding */ /* Removed transform to prevent movement */ } .plumberLink:after { content: ''; position: absolute; width: 0; height: 2px; bottom: -2px; left: 0; background-color: #e84142; transition: width 0.3s; } .plumberLink:hover:after { width: 100%; } /* Chart Styles */ .chartContainer { height: 200px; display: flex; align-items: flex-end; gap: 2px; margin-bottom: 1rem; border-bottom: 1px solid var(--tile-border); overflow-x: auto; } .chartBar { flex: 1; min-width: 10px; border-radius: 2px 2px 0 0; background-color: var(--primary-color); transition: height 0.5s ease; } .chartLegend { display: flex; justify-content: space-between; color: var(--timestamp-color); font-size: 0.9rem; } .noDataMessage { text-align: center; color: var(--timestamp-color); font-style: italic; padding: 2rem 0; } /* Leaderboard Styles */ .leaderboard { border: 1px solid var(--tile-border); border-radius: 8px; overflow: hidden; } .leaderboardHeader { display: grid; grid-template-columns: 80px 1fr 100px; padding: 1rem; background: var(--input-background); font-weight: bold; color: var(--title-color); } .leaderboardItem { display: grid; grid-template-columns: 80px 1fr 100px; padding: 1rem; border-top: 1px solid var(--tile-border); transition: background-color 0.2s; } .leaderboardItem:hover { background-color: var(--button-hover); } .topRank { background-color: rgba(255, 193, 7, 0.1); /* Gold - 1st place */ } .secondRank { background-color: rgba(192, 192, 192, 0.1); /* Silver - 2nd place */ } .thirdRank { background-color: rgba(205, 127, 50, 0.1); /* Bronze - 3rd place */ } .rank { font-weight: bold; color: var(--text-color); } .user a { color: var(--primary-color); text-decoration: none; font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: block; max-width: 100%; } .user a:hover { text-decoration: underline; } .unknownUser { color: var(--timestamp-color); font-style: italic; } .count { font-weight: 500; text-align: right; } /* Emoji Grid */ .emojiGrid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 1rem; margin-top: 1.5rem; } .emojiCard { display: flex; flex-direction: column; align-items: center; justify-content: center; background-color: var(--input-background); border-radius: 8px; padding: 1rem 0.5rem; border: 1px solid var(--tile-border); text-align: center; } .emojiCard .emoji { font-size: 1.5rem; margin-bottom: 0.5rem; } .emojiCard .emojiCount { font-weight: bold; color: var(--primary-color); font-size: 1rem; } /* Share Button */ .shareSection { display: flex; justify-content: center; margin-top: 1rem; } .shareButton { background-color: var(--primary-color); color: white; border: none; border-radius: 4px; padding: 0.75rem 1.5rem; font-size: 1.1rem; cursor: pointer; transition: all 0.2s; } .shareButton:hover { background-color: var(--secondary-color); /* Removed transform and box-shadow to prevent movement */ } /* Responsive Adjustments */ @media (max-width: 600px) { .container { padding: 1rem; } /* Header responsive styles - from main page */ .header { flex-direction: column; align-items: flex-start; } .headerContent { flex: 1 1 100%; text-align: left; } .headerActions { width: 100%; justify-content: flex-start; } .title { font-size: 2rem; } .subtitle { font-size: 1rem; } /* Stats page specific responsive */ .statsHeader h2 { font-size: 1.7rem; } .statsSubtitle { font-size: 1rem; } .statsGrid { grid-template-columns: 1fr; gap: 1rem; } .statCard { padding: 1rem; } .statValue { font-size: 2rem; } .chartContainer { height: 150px; } .leaderboardHeader, .leaderboardItem { grid-template-columns: 50px 1fr 70px; padding: 0.75rem; font-size: 0.9rem; } .user { max-width: 100%; overflow: hidden; } .user a, .unknownUser { font-size: 0.85rem; max-width: 100%; } /* Emoji grid responsive */ .emojiGrid { grid-template-columns: repeat(3, 1fr); gap: 0.75rem; } .emojiCard { padding: 0.75rem 0.25rem; } .emojiCard .emoji { font-size: 1.75rem; } .emojiCard .emojiCount { font-size: 1rem; } } @media (max-width: 400px) { .emojiGrid { grid-template-columns: repeat(2, 1fr); } }