| @import url("https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap"); |
|
|
| .page { |
| font-family: "DM Sans", -apple-system, BlinkMacSystemFont, sans-serif; |
| min-height: 100vh; |
| } |
|
|
|
|
| .hero { |
| position: relative; |
| overflow: hidden; |
| padding: 4rem 2rem 2.5rem; |
| text-align: center; |
| } |
|
|
| .heroGlow { |
| position: absolute; |
| top: -120px; |
| left: 50%; |
| transform: translateX(-50%); |
| width: 600px; |
| height: 400px; |
| background: radial-gradient( |
| ellipse at center, |
| rgba(255, 215, 0, 0.07) 0%, |
| transparent 70% |
| ); |
| pointer-events: none; |
| } |
|
|
| .heroContent { |
| position: relative; |
| z-index: 1; |
| max-width: 720px; |
| margin: 0 auto; |
| } |
|
|
| .heroEyebrow { |
| font-family: "JetBrains Mono", monospace; |
| font-size: 0.75rem; |
| letter-spacing: 0.15em; |
| text-transform: uppercase; |
| color: rgba(255, 215, 0, 0.5); |
| margin-bottom: 0.75rem; |
| } |
|
|
| .heroTitle { |
| font-size: 3rem; |
| font-weight: 700; |
| letter-spacing: -0.04em; |
| line-height: 1.1; |
| margin: 0 0 0.75rem; |
| } |
|
|
| [data-theme="dark"] .heroTitle { |
| color: #fafaf6; |
| } |
|
|
| .heroSub { |
| font-size: 1.05rem; |
| color: var(--ifm-font-color-secondary, #9a968e); |
| line-height: 1.5; |
| margin: 0 0 2rem; |
| } |
|
|
| .heroAccent { |
| color: #ffd700; |
| font-weight: 700; |
| font-variant-numeric: tabular-nums; |
| } |
|
|
| .statsRow { |
| display: flex; |
| justify-content: center; |
| gap: 2.5rem; |
| flex-wrap: wrap; |
| } |
|
|
| .stat { |
| display: flex; |
| flex-direction: column; |
| align-items: center; |
| gap: 0.2rem; |
| } |
|
|
| .statValue { |
| font-family: "JetBrains Mono", monospace; |
| font-size: 1.6rem; |
| font-weight: 700; |
| line-height: 1; |
| } |
|
|
| .statLabel { |
| font-size: 0.72rem; |
| letter-spacing: 0.06em; |
| text-transform: uppercase; |
| color: var(--ifm-font-color-secondary, #9a968e); |
| } |
|
|
|
|
| .controlsBar { |
| position: sticky; |
| top: 60px; |
| z-index: 50; |
| display: flex; |
| flex-direction: column; |
| gap: 0.75rem; |
| align-items: center; |
| padding: 1rem 2rem; |
| backdrop-filter: blur(16px) saturate(1.4); |
| border-bottom: 1px solid rgba(255, 215, 0, 0.06); |
| } |
|
|
| [data-theme="dark"] .controlsBar { |
| background: rgba(7, 7, 13, 0.85); |
| } |
|
|
| .searchWrap { |
| position: relative; |
| width: 100%; |
| max-width: 560px; |
| } |
|
|
| .searchIcon { |
| position: absolute; |
| left: 0.85rem; |
| top: 50%; |
| transform: translateY(-50%); |
| color: rgba(255, 215, 0, 0.35); |
| pointer-events: none; |
| } |
|
|
| .searchInput { |
| width: 100%; |
| padding: 0.7rem 2.5rem 0.7rem 2.6rem; |
| font-size: 0.95rem; |
| font-family: "DM Sans", sans-serif; |
| border: 1px solid rgba(255, 215, 0, 0.12); |
| border-radius: 10px; |
| background: rgba(15, 15, 24, 0.6); |
| color: var(--ifm-font-color-base, #e8e4dc); |
| outline: none; |
| transition: border-color 0.2s, box-shadow 0.2s; |
| } |
|
|
| .searchInput:focus { |
| border-color: rgba(255, 215, 0, 0.4); |
| box-shadow: 0 0 0 3px rgba(255, 215, 0, 0.06); |
| } |
|
|
| .searchInput::placeholder { |
| color: var(--ifm-font-color-secondary, #9a968e); |
| opacity: 0.5; |
| } |
|
|
| .clearBtn { |
| position: absolute; |
| right: 0.6rem; |
| top: 50%; |
| transform: translateY(-50%); |
| background: none; |
| border: none; |
| color: var(--ifm-font-color-secondary); |
| cursor: pointer; |
| padding: 0.15rem; |
| display: flex; |
| opacity: 0.6; |
| transition: opacity 0.15s; |
| } |
|
|
| .clearBtn:hover { |
| opacity: 1; |
| color: #ffd700; |
| } |
|
|
| .sourcePills { |
| display: flex; |
| gap: 0.4rem; |
| flex-wrap: wrap; |
| justify-content: center; |
| } |
|
|
| .srcPill { |
| display: inline-flex; |
| align-items: center; |
| gap: 0.35rem; |
| padding: 0.35rem 0.75rem; |
| border: 1px solid rgba(255, 255, 255, 0.07); |
| border-radius: 20px; |
| background: transparent; |
| color: var(--ifm-font-color-secondary, #9a968e); |
| font-family: "DM Sans", sans-serif; |
| font-size: 0.8rem; |
| font-weight: 500; |
| cursor: pointer; |
| transition: all 0.2s; |
| } |
|
|
| .srcPill:hover { |
| border-color: rgba(255, 255, 255, 0.15); |
| color: var(--ifm-font-color-base); |
| } |
|
|
| .srcPillActive { |
| border-color: var(--pill-border, rgba(255, 215, 0, 0.3)); |
| background: var(--pill-bg, rgba(255, 215, 0, 0.06)); |
| color: var(--pill-color, #ffd700); |
| } |
|
|
| .srcCount { |
| font-family: "JetBrains Mono", monospace; |
| font-size: 0.68rem; |
| background: rgba(255, 255, 255, 0.05); |
| padding: 0.05rem 0.35rem; |
| border-radius: 8px; |
| } |
|
|
| .srcPillActive .srcCount { |
| background: rgba(255, 255, 255, 0.08); |
| } |
|
|
|
|
| .layout { |
| display: grid; |
| grid-template-columns: 260px 1fr; |
| gap: 0; |
| max-width: 1440px; |
| margin: 0 auto; |
| min-height: 60vh; |
| } |
|
|
|
|
| .sidebar { |
| position: sticky; |
| top: 160px; |
| height: calc(100vh - 160px); |
| overflow-y: auto; |
| padding: 1.25rem 1rem 2rem 1.5rem; |
| border-right: 1px solid rgba(255, 215, 0, 0.05); |
| } |
|
|
| .sidebar::-webkit-scrollbar { |
| width: 4px; |
| } |
| .sidebar::-webkit-scrollbar-thumb { |
| background: rgba(255, 215, 0, 0.1); |
| border-radius: 2px; |
| } |
|
|
| .sidebarHeader { |
| display: flex; |
| align-items: center; |
| justify-content: space-between; |
| margin-bottom: 0.75rem; |
| } |
|
|
| .sidebarTitle { |
| font-size: 0.72rem; |
| font-weight: 600; |
| letter-spacing: 0.1em; |
| text-transform: uppercase; |
| color: var(--ifm-font-color-secondary); |
| margin: 0; |
| } |
|
|
| .sidebarClear { |
| font-family: "DM Sans", sans-serif; |
| font-size: 0.72rem; |
| color: rgba(255, 215, 0, 0.6); |
| background: none; |
| border: none; |
| cursor: pointer; |
| padding: 0; |
| transition: color 0.15s; |
| } |
|
|
| .sidebarClear:hover { |
| color: #ffd700; |
| } |
|
|
| .catList { |
| display: flex; |
| flex-direction: column; |
| gap: 1px; |
| } |
|
|
| .catItem { |
| display: flex; |
| align-items: center; |
| gap: 0.5rem; |
| padding: 0.45rem 0.6rem; |
| border: none; |
| border-radius: 6px; |
| background: transparent; |
| color: var(--ifm-font-color-secondary, #9a968e); |
| font-family: "DM Sans", sans-serif; |
| font-size: 0.82rem; |
| cursor: pointer; |
| transition: all 0.15s; |
| text-align: left; |
| width: 100%; |
| } |
|
|
| .catItem:hover { |
| background: rgba(255, 215, 0, 0.04); |
| color: var(--ifm-font-color-base); |
| } |
|
|
| .catItemActive { |
| background: rgba(255, 215, 0, 0.08); |
| color: #ffd700; |
| } |
|
|
| .catItemIcon { |
| font-size: 0.9rem; |
| width: 1.3rem; |
| text-align: center; |
| flex-shrink: 0; |
| } |
|
|
| .catItemLabel { |
| flex: 1; |
| overflow: hidden; |
| text-overflow: ellipsis; |
| white-space: nowrap; |
| } |
|
|
| .catItemCount { |
| font-family: "JetBrains Mono", monospace; |
| font-size: 0.68rem; |
| color: rgba(255, 215, 0, 0.3); |
| min-width: 1.5rem; |
| text-align: right; |
| } |
|
|
| .catItemActive .catItemCount { |
| color: rgba(255, 215, 0, 0.6); |
| } |
|
|
| .sidebarToggle { |
| display: none; |
| } |
|
|
|
|
| .main { |
| padding: 1.25rem 1.5rem 3rem; |
| min-width: 0; |
| } |
|
|
| .filterSummary { |
| display: flex; |
| align-items: center; |
| gap: 0.5rem; |
| flex-wrap: wrap; |
| margin-bottom: 1rem; |
| padding-bottom: 0.75rem; |
| border-bottom: 1px solid rgba(255, 215, 0, 0.05); |
| } |
|
|
| .filterCount { |
| font-size: 0.82rem; |
| font-weight: 600; |
| color: var(--ifm-font-color-base); |
| margin-right: 0.25rem; |
| } |
|
|
| .filterChip { |
| display: inline-flex; |
| align-items: center; |
| gap: 0.3rem; |
| padding: 0.2rem 0.5rem; |
| border: 1px solid rgba(255, 215, 0, 0.15); |
| border-radius: 4px; |
| background: rgba(255, 215, 0, 0.04); |
| color: rgba(255, 215, 0, 0.8); |
| font-size: 0.75rem; |
| } |
|
|
| .filterChip button { |
| background: none; |
| border: none; |
| color: inherit; |
| cursor: pointer; |
| padding: 0; |
| font-size: 0.85rem; |
| line-height: 1; |
| opacity: 0.6; |
| transition: opacity 0.15s; |
| } |
|
|
| .filterChip button:hover { |
| opacity: 1; |
| } |
|
|
| .clearAllBtn { |
| font-family: "DM Sans", sans-serif; |
| font-size: 0.75rem; |
| color: var(--ifm-font-color-secondary); |
| background: none; |
| border: none; |
| cursor: pointer; |
| padding: 0; |
| margin-left: auto; |
| transition: color 0.15s; |
| } |
|
|
| .clearAllBtn:hover { |
| color: #ffd700; |
| } |
|
|
|
|
| .grid { |
| display: grid; |
| grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); |
| gap: 0.75rem; |
| } |
|
|
|
|
| @keyframes cardIn { |
| from { |
| opacity: 0; |
| transform: translateY(8px); |
| } |
| to { |
| opacity: 1; |
| transform: translateY(0); |
| } |
| } |
|
|
| .card { |
| position: relative; |
| border: 1px solid rgba(255, 255, 255, 0.05); |
| border-radius: 10px; |
| overflow: hidden; |
| cursor: pointer; |
| transition: border-color 0.2s, box-shadow 0.2s, transform 0.2s; |
| animation: cardIn 0.35s ease both; |
| } |
|
|
| [data-theme="dark"] .card { |
| background: #0c0c16; |
| } |
|
|
| .card:hover { |
| border-color: rgba(255, 215, 0, 0.15); |
| box-shadow: 0 4px 24px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(255, 215, 0, 0.05); |
| transform: translateY(-1px); |
| } |
|
|
| .cardExpanded { |
| border-color: rgba(255, 215, 0, 0.2); |
| box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4), 0 0 0 1px rgba(255, 215, 0, 0.08); |
| } |
|
|
| .cardAccent { |
| position: absolute; |
| top: 0; |
| left: 0; |
| width: 3px; |
| height: 100%; |
| opacity: 0.5; |
| transition: opacity 0.2s; |
| } |
|
|
| .card:hover .cardAccent { |
| opacity: 1; |
| } |
|
|
| .cardInner { |
| padding: 1rem 1rem 0.85rem 1.15rem; |
| } |
|
|
| .cardTop { |
| display: flex; |
| align-items: flex-start; |
| gap: 0.6rem; |
| margin-bottom: 0.5rem; |
| } |
|
|
| .cardIcon { |
| font-size: 1.15rem; |
| line-height: 1; |
| flex-shrink: 0; |
| margin-top: 0.1rem; |
| opacity: 0.7; |
| } |
|
|
| .cardTitleGroup { |
| display: flex; |
| align-items: flex-start; |
| justify-content: space-between; |
| gap: 0.5rem; |
| flex: 1; |
| min-width: 0; |
| } |
|
|
| .cardTitle { |
| font-size: 0.92rem; |
| font-weight: 600; |
| line-height: 1.3; |
| margin: 0; |
| word-break: break-word; |
| color: var(--ifm-font-color-base); |
| } |
|
|
| .sourcePill { |
| display: inline-flex; |
| align-items: center; |
| gap: 0.25rem; |
| font-family: "JetBrains Mono", monospace; |
| font-size: 0.62rem; |
| font-weight: 500; |
| padding: 0.15rem 0.45rem; |
| border-radius: 4px; |
| border: 1px solid; |
| white-space: nowrap; |
| flex-shrink: 0; |
| margin-top: 0.1rem; |
| } |
|
|
| .cardDesc { |
| font-size: 0.82rem; |
| line-height: 1.55; |
| color: var(--ifm-font-color-secondary, #9a968e); |
| margin: 0 0 0.6rem; |
| display: -webkit-box; |
| -webkit-line-clamp: 2; |
| -webkit-box-orient: vertical; |
| overflow: hidden; |
| } |
|
|
| .cardDescFull { |
| -webkit-line-clamp: unset; |
| } |
|
|
| .cardMeta { |
| display: flex; |
| align-items: center; |
| gap: 0.35rem; |
| flex-wrap: wrap; |
| } |
|
|
| .catButton { |
| font-family: "JetBrains Mono", monospace; |
| font-size: 0.66rem; |
| padding: 0.15rem 0.45rem; |
| border: 1px solid rgba(255, 215, 0, 0.12); |
| border-radius: 3px; |
| background: rgba(255, 215, 0, 0.04); |
| color: rgba(255, 215, 0, 0.7); |
| cursor: pointer; |
| transition: all 0.15s; |
| } |
|
|
| .catButton:hover { |
| background: rgba(255, 215, 0, 0.1); |
| color: #ffd700; |
| border-color: rgba(255, 215, 0, 0.25); |
| } |
|
|
| .platformPill { |
| font-size: 0.66rem; |
| padding: 0.12rem 0.4rem; |
| border-radius: 3px; |
| background: rgba(96, 165, 250, 0.06); |
| color: rgba(96, 165, 250, 0.8); |
| border: 1px solid rgba(96, 165, 250, 0.1); |
| } |
|
|
|
|
| .cardDetail { |
| margin-top: 0.75rem; |
| padding-top: 0.7rem; |
| border-top: 1px solid rgba(255, 255, 255, 0.04); |
| animation: cardIn 0.2s ease both; |
| } |
|
|
| .tagRow { |
| display: flex; |
| flex-wrap: wrap; |
| gap: 0.3rem; |
| margin-bottom: 0.65rem; |
| } |
|
|
| .tagPill { |
| font-family: "DM Sans", sans-serif; |
| font-size: 0.68rem; |
| padding: 0.12rem 0.4rem; |
| border: 1px solid rgba(255, 255, 255, 0.06); |
| border-radius: 3px; |
| background: rgba(255, 255, 255, 0.02); |
| color: var(--ifm-font-color-secondary); |
| cursor: pointer; |
| transition: all 0.15s; |
| } |
|
|
| .tagPill:hover { |
| background: rgba(255, 215, 0, 0.06); |
| color: rgba(255, 215, 0, 0.8); |
| border-color: rgba(255, 215, 0, 0.15); |
| } |
|
|
| .authorRow { |
| display: flex; |
| align-items: center; |
| gap: 0.5rem; |
| margin-bottom: 0.3rem; |
| } |
|
|
| .authorLabel { |
| font-family: "JetBrains Mono", monospace; |
| font-size: 0.62rem; |
| text-transform: uppercase; |
| letter-spacing: 0.06em; |
| color: var(--ifm-font-color-secondary); |
| opacity: 0.5; |
| min-width: 3.5rem; |
| } |
|
|
| .authorValue { |
| font-size: 0.78rem; |
| color: var(--ifm-font-color-base); |
| } |
|
|
| .installHint { |
| margin-top: 0.65rem; |
| padding: 0.45rem 0.65rem; |
| background: rgba(0, 0, 0, 0.25); |
| border: 1px solid rgba(255, 215, 0, 0.06); |
| border-radius: 5px; |
| } |
|
|
| .installHint code { |
| font-family: "JetBrains Mono", monospace; |
| font-size: 0.72rem; |
| color: rgba(255, 215, 0, 0.7); |
| background: none; |
| padding: 0; |
| } |
|
|
| .highlight { |
| background: rgba(255, 215, 0, 0.2); |
| color: #ffd700; |
| border-radius: 2px; |
| padding: 0 1px; |
| } |
|
|
|
|
| .loadMoreWrap { |
| display: flex; |
| justify-content: center; |
| margin-top: 1.5rem; |
| } |
|
|
| .loadMoreBtn { |
| font-family: "DM Sans", sans-serif; |
| font-size: 0.85rem; |
| font-weight: 500; |
| padding: 0.6rem 1.5rem; |
| border: 1px solid rgba(255, 215, 0, 0.2); |
| border-radius: 8px; |
| background: rgba(255, 215, 0, 0.04); |
| color: rgba(255, 215, 0, 0.8); |
| cursor: pointer; |
| transition: all 0.2s; |
| } |
|
|
| .loadMoreBtn:hover { |
| background: rgba(255, 215, 0, 0.08); |
| border-color: rgba(255, 215, 0, 0.35); |
| color: #ffd700; |
| } |
|
|
|
|
| .empty { |
| display: flex; |
| flex-direction: column; |
| align-items: center; |
| justify-content: center; |
| padding: 5rem 2rem; |
| text-align: center; |
| } |
|
|
| .emptyIcon { |
| font-size: 2.5rem; |
| margin-bottom: 1rem; |
| opacity: 0.4; |
| } |
|
|
| .emptyTitle { |
| font-size: 1.1rem; |
| font-weight: 600; |
| margin: 0 0 0.5rem; |
| color: var(--ifm-font-color-base); |
| } |
|
|
| .emptyDesc { |
| font-size: 0.85rem; |
| color: var(--ifm-font-color-secondary); |
| margin: 0 0 1.25rem; |
| } |
|
|
| .emptyReset { |
| font-family: "DM Sans", sans-serif; |
| font-size: 0.85rem; |
| padding: 0.5rem 1.25rem; |
| border: 1px solid rgba(255, 215, 0, 0.25); |
| border-radius: 6px; |
| background: transparent; |
| color: #ffd700; |
| cursor: pointer; |
| transition: all 0.2s; |
| } |
|
|
| .emptyReset:hover { |
| background: rgba(255, 215, 0, 0.08); |
| } |
|
|
|
|
| .backdrop { |
| display: none; |
| } |
|
|
| .activeCatBadge { |
| font-size: 0.72rem; |
| padding: 0.1rem 0.4rem; |
| border-radius: 3px; |
| background: rgba(255, 215, 0, 0.1); |
| color: rgba(255, 215, 0, 0.8); |
| } |
|
|
|
|
| @media (max-width: 900px) { |
| .layout { |
| grid-template-columns: 1fr; |
| } |
|
|
| .sidebar { |
| display: none; |
| position: fixed; |
| top: 0; |
| left: 0; |
| bottom: 0; |
| width: 280px; |
| z-index: 200; |
| background: #0a0a14; |
| border-right: 1px solid rgba(255, 215, 0, 0.1); |
| padding-top: 1.5rem; |
| height: 100vh; |
| } |
|
|
| .sidebarOpen { |
| display: block; |
| } |
|
|
| .backdrop { |
| display: block; |
| position: fixed; |
| inset: 0; |
| z-index: 190; |
| background: rgba(0, 0, 0, 0.6); |
| backdrop-filter: blur(4px); |
| } |
|
|
| .sidebarToggle { |
| display: flex; |
| align-items: center; |
| gap: 0.4rem; |
| padding: 0.5rem 0.85rem; |
| margin: 0 1rem 0.75rem; |
| border: 1px solid rgba(255, 215, 0, 0.1); |
| border-radius: 6px; |
| background: rgba(255, 215, 0, 0.03); |
| color: var(--ifm-font-color-secondary); |
| font-family: "DM Sans", sans-serif; |
| font-size: 0.82rem; |
| cursor: pointer; |
| transition: all 0.15s; |
| } |
|
|
| .sidebarToggle:hover { |
| border-color: rgba(255, 215, 0, 0.2); |
| color: var(--ifm-font-color-base); |
| } |
|
|
| .hero { |
| padding: 2.5rem 1.25rem 1.75rem; |
| } |
|
|
| .heroTitle { |
| font-size: 2rem; |
| } |
|
|
| .statsRow { |
| gap: 1.5rem; |
| } |
|
|
| .statValue { |
| font-size: 1.25rem; |
| } |
|
|
| .controlsBar { |
| padding: 0.75rem 1rem; |
| } |
|
|
| .main { |
| padding: 0.75rem 1rem 2rem; |
| } |
|
|
| .grid { |
| grid-template-columns: 1fr; |
| } |
| } |
|
|
| @media (min-width: 901px) and (max-width: 1100px) { |
| .grid { |
| grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); |
| } |
| } |
|
|