diff --git a/src/components/Layout.tsx b/src/components/Layout.tsx index 0994722..65255c0 100644 --- a/src/components/Layout.tsx +++ b/src/components/Layout.tsx @@ -170,7 +170,10 @@ export default function Layout({ children }: LayoutProps) { -
{children}
+ {/* Use wider layout for stats page, normal layout for other pages */} +
+ {children} +
{/* Search modal */} diff --git a/src/styles/global.css b/src/styles/global.css index 5dee8fa..008b0ea 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -303,6 +303,15 @@ body { padding: 40px 24px; } +/* Wide content layout for pages that need more space (stats, etc.) */ +.main-content-wide { + flex: 1; + max-width: 100%; + width: 100%; + margin: 0 auto; + padding: 0; +} + /* Top navigation bar */ .top-nav { position: fixed; @@ -1263,7 +1272,7 @@ body { background: var(--text-muted); } -/* Stats page styles */ +/* Stats page styles (legacy - kept for backwards compatibility) */ .stats-page { padding-top: 20px; } @@ -1293,7 +1302,7 @@ body { line-height: 1.7; } -/* Stats cards grid */ +/* Stats cards grid (legacy) */ .stats-grid { display: grid; grid-template-columns: repeat(4, 1fr); @@ -1349,7 +1358,7 @@ body { margin-top: 4px; } -/* Stats sections */ +/* Stats sections (legacy) */ .stats-section { margin-bottom: 40px; } @@ -1362,7 +1371,7 @@ body { letter-spacing: -0.01em; } -/* Stats list */ +/* Stats list (legacy) */ .stats-list { background-color: var(--bg-secondary); border: 1px solid var(--border-color); @@ -1411,7 +1420,236 @@ body { color: var(--text-secondary); } -/* Stats responsive styles */ +/* ============================================ + MODERN STATS PAGE STYLES (WIDE LAYOUT) + Horizontal card design with numbered sections + ============================================ */ + +/* Wide stats page container - full width layout */ +.stats-page-wide { + max-width: 1200px; + width: 100%; + margin: 0 auto; + padding: 40px 32px; +} + +.stats-nav-wide { + display: flex; + justify-content: flex-start; + align-items: center; + margin-bottom: 32px; +} + +.stats-header-wide { + margin-bottom: 48px; +} + +.stats-title-wide { + font-size: var(--font-size-stats-title); + font-weight: 400; + margin-bottom: 12px; + letter-spacing: -0.02em; + color: var(--text-primary); +} + +.stats-subtitle-wide { + font-size: var(--font-size-stats-subtitle); + color: var(--text-secondary); + line-height: 1.7; + max-width: 600px; +} + +/* Modern horizontal cards container - 5 equal columns on large screens */ +.stats-cards-modern { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 0; + margin-bottom: 64px; + border: 1px solid var(--border-color); + border-radius: 12px; + overflow: hidden; + background: var(--bg-secondary); +} + +/* Ensure 5-column layout on large screens (explicit rule) */ +@media (min-width: 1101px) { + .stats-cards-modern { + grid-template-columns: repeat(5, 1fr); + } +} + +/* Individual modern stat card */ +.stat-card-modern { + padding: 24px 20px; + background: var(--bg-secondary); + border-right: 1px solid var(--border-color); + transition: background-color 0.2s ease; + display: flex; + flex-direction: column; + min-height: 180px; +} + +.stat-card-modern:last-child { + border-right: none; +} + +.stat-card-modern:hover { + background: var(--bg-hover); +} + +/* Highlighted card state (like the green one in screenshot) */ +.stat-card-modern.stat-card-highlighted { + background: var(--bg-primary); +} + +.stat-card-modern.stat-card-highlighted:hover { + background: var(--bg-hover); +} + +/* Card header with icon and number */ +.stat-card-modern-header { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 20px; +} + +.stat-card-modern-icon { + width: 32px; + height: 32px; + display: flex; + align-items: center; + justify-content: center; + border: 1px solid var(--border-color); + border-radius: 6px; + color: var(--text-muted); + background: var(--bg-primary); +} + +.stat-card-modern-icon.highlighted { + background: #10b981; + border-color: #10b981; + color: white; +} + +.stat-card-modern-number { + font-size: 13px; + font-weight: 500; + color: var(--text-muted); + font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace; +} + +/* Card content */ +.stat-card-modern-content { + flex: 1; + display: flex; + flex-direction: column; +} + +.stat-card-modern-title { + font-size: 15px; + font-weight: 600; + color: var(--text-primary); + margin: 0 0 8px 0; + letter-spacing: -0.01em; +} + +/* Highlighted title gets accent color */ +.stat-card-highlighted .stat-card-modern-title { + color: #10b981; +} + +.stat-card-modern-value { + font-size: 28px; + font-weight: 400; + color: var(--text-primary); + margin: 0 0 8px 0; + letter-spacing: -0.02em; + line-height: 1.1; +} + +.stat-card-modern-desc { + font-size: 13px; + color: var(--text-secondary); + margin: 0; + line-height: 1.5; +} + +.stat-card-modern-note { + font-size: 11px; + color: var(--text-muted); + margin: 6px 0 0 0; + line-height: 1.4; +} + +/* Wide stats sections */ +.stats-section-wide { + margin-bottom: 48px; +} + +.stats-section-title-wide { + font-size: var(--font-size-stats-section-title); + font-weight: 500; + color: var(--text-primary); + margin-bottom: 20px; + letter-spacing: -0.01em; +} + +/* Wide stats list */ +.stats-list-wide { + background-color: var(--bg-secondary); + border: 1px solid var(--border-color); + border-radius: 12px; + overflow: hidden; +} + +.stats-list-item-wide { + display: flex; + justify-content: space-between; + align-items: center; + padding: 16px 20px; + transition: background-color 0.15s ease; +} + +.stats-list-item-wide:hover { + background-color: var(--bg-hover); +} + +.stats-list-item-wide:not(:last-child) { + border-bottom: 1px solid var(--border-color); +} + +.stats-list-info-wide { + display: flex; + align-items: center; + gap: 14px; +} + +.stats-list-path-wide, +.stats-list-title-wide { + font-size: 15px; + color: var(--text-primary); + font-weight: 500; +} + +.stats-list-type-wide { + font-size: 11px; + color: var(--text-muted); + background-color: var(--bg-hover); + padding: 3px 10px; + border-radius: 12px; + text-transform: uppercase; + letter-spacing: 0.03em; + font-weight: 500; +} + +.stats-list-count-wide { + font-size: 14px; + color: var(--text-secondary); + font-weight: 500; +} + +/* Stats responsive styles (legacy) */ @media (max-width: 900px) { .stats-grid { grid-template-columns: repeat(2, 1fr); @@ -1455,6 +1693,109 @@ body { } } +/* Modern stats responsive styles */ +@media (max-width: 1100px) { + .stats-page-wide { + padding: 32px 24px; + } + + .stats-cards-modern { + grid-template-columns: repeat(3, 1fr); + } + + .stat-card-modern { + min-height: 160px; + } + + .stat-card-modern:nth-child(3) { + border-right: none; + } + + .stat-card-modern:nth-child(4), + .stat-card-modern:nth-child(5) { + border-top: 1px solid var(--border-color); + } + + .stat-card-modern:nth-child(4) { + border-right: 1px solid var(--border-color); + } +} + +@media (max-width: 768px) { + .stats-page-wide { + padding: 24px 16px; + } + + .stats-cards-modern { + grid-template-columns: repeat(2, 1fr); + } + + .stat-card-modern { + padding: 20px 16px; + min-height: 150px; + } + + .stat-card-modern:nth-child(2n) { + border-right: none; + } + + .stat-card-modern:nth-child(3), + .stat-card-modern:nth-child(4), + .stat-card-modern:nth-child(5) { + border-top: 1px solid var(--border-color); + border-right: 1px solid var(--border-color); + } + + .stat-card-modern:nth-child(4) { + border-right: none; + } + + .stat-card-modern-value { + font-size: 24px; + } + + .stats-title-wide { + font-size: var(--font-size-4xl); + } + + .stats-list-item-wide { + flex-direction: column; + align-items: flex-start; + gap: 10px; + padding: 14px 16px; + } + + .stats-list-info-wide { + flex-direction: column; + align-items: flex-start; + gap: 6px; + } +} + +@media (max-width: 480px) { + .stats-cards-modern { + grid-template-columns: 1fr; + } + + .stat-card-modern { + border-right: none !important; + min-height: auto; + padding: 18px 16px; + } + + .stat-card-modern:not(:first-child) { + border-top: 1px solid var(--border-color); + } + + .stat-card-modern-header { + margin-bottom: 14px; + } + + .stat-card-modern-value { + font-size: 22px; + } +} + /* Search button in top nav */ .search-button { background: transparent;