/* ============================================================ Card List Layout (store.pointercrateLayout = false) All rules prefixed .cl- or .page-list-cards to avoid bleed ============================================================ */ /* ── Page shell ── */ .page-list-cards { display: flex; flex-direction: column; align-items: center; width: 100%; min-height: 100vh; padding: 2rem 1rem 6rem; box-sizing: border-box; /* don't let parent overflow:hidden clip the dropdown */ overflow: visible; } /* ── Toolbar (search + filter) ── */ .cl-toolbar { display: flex; flex-shrink: 0; gap: 10px; align-items: center; width: 100%; max-width: 860px; margin-bottom: 1.25rem; } .cl-search { flex: 1; padding: 10px 14px; border-radius: 8px; border: none; background: #2a2a2a; color: #fff; font-size: 14px; } .cl-filter-btn { padding: 9px 16px; border-radius: 8px; display: flex; align-items: center; gap: 6px; background: #2a2a2a; color: #fff; border: none; cursor: pointer; font-size: 14px; white-space: nowrap; } .cl-filter-dropdown { /* position + top/right/z-index are set via inline style from JS (Teleport) */ width: 280px; background: #1e1e1e; border: 1px solid #444; border-radius: 10px; padding: 1rem; box-shadow: 0 8px 32px rgba(0,0,0,0.6); } /* invisible full-screen backdrop so clicking outside closes the menu */ .cl-menu-backdrop { position: fixed; inset: 0; z-index: 99998; } /* dropdown sits above backdrop */ .cl-filter-dropdown { z-index: 99999; } .cl-filter-heading { font-size: 12px; color: #888; margin: 0 0 8px; text-transform: uppercase; letter-spacing: 0.08em; } .cl-filter-label { display: flex; align-items: center; gap: 8px; font-size: 14px; color: #fff; cursor: pointer; } .cl-filter-apply { width: 100%; padding: 9px; border-radius: 8px; background: #3a6ee8; color: #fff; border: none; font-size: 14px; font-weight: 500; cursor: pointer; } /* ── Section labels ── */ .cl-section-label { width: 100%; max-width: 860px; font-size: 12px; color: #666; margin-bottom: 0.5rem; letter-spacing: 0.04em; } .cl-separator { width: 100%; max-width: 860px; display: flex; align-items: center; gap: 1rem; margin: 1.5rem 0 0.75rem; color: #888; font-size: 13px; letter-spacing: 0.1em; text-transform: uppercase; } .cl-separator::before, .cl-separator::after { content: ''; flex: 1; height: 1px; background: rgba(255,255,255,0.08); } /* ── Card list container ── */ .cl-list { display: flex; flex-direction: column; align-items: center; gap: 10px; width: 100%; max-width: 860px; /* isolate the card stack so nothing inside can paint above the toolbar */ isolation: isolate; z-index: 1; position: relative; } /* ── Individual card ── */ .cl-card { position: relative; width: 100%; min-height: 90px; height: auto; border-radius: 10px; overflow: clip; border: 1px solid rgba(255,255,255,0.06); display: flex; align-items: stretch; gap: 0; cursor: pointer; background: transparent; text-align: left; padding: 0; transition: border-color 0.15s ease, box-shadow 0.15s ease; } /* Brightness overlay via pseudo-element — avoids filter: on the card itself, which would create a stacking context and let cards paint above the dropdown */ .cl-card::after { content: ''; position: absolute; inset: 0; background: transparent; transition: background 0.15s ease; pointer-events: none; z-index: 10; border-radius: inherit; } .cl-card:hover { border-color: rgba(255,255,255,0.18); box-shadow: 0 8px 32px rgba(0,0,0,0.5); } .cl-card:hover::after { background: rgba(255,255,255,0.05); } .cl-card:active::after { background: rgba(0,0,0,0.12); } .cl-card-legacy { opacity: 0.75; } .cl-card-legacy:hover { opacity: 1; } /* Blurred level thumbnail background */ .cl-card-bg { position: absolute; inset: 0; background-size: cover; background-position: center; filter: blur(4px) brightness(0.2) saturate(0.6); transform: scale(1.08); transition: filter 0.3s ease; } .cl-card:hover .cl-card-bg { filter: blur(3px) brightness(0.28) saturate(0.8); } /* Dark gradient over the bg */ .cl-card-tint { position: absolute; inset: 0; background: linear-gradient( 90deg, rgba(0,0,0,0.0) 0%, rgba(0,0,0,0.3) 42%, rgba(0,0,0,0.15) 100% ); } /* YouTube thumbnail */ .cl-card-yt { position: relative; z-index: 2; flex-shrink: 0; width: 142px; min-height: 90px; align-self: stretch; overflow: hidden; display: flex; align-items: center; justify-content: center; } .cl-card-yt-img { width: 100%; height: 100%; object-fit: cover; display: block; } .cl-card-yt-placeholder { background: rgba(0,0,0,0.3); } /* Play icon overlay */ .cl-card-yt-play { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: 22px; color: rgba(255,255,255,0.0); background: rgba(0,0,0,0.0); transition: all 0.2s; pointer-events: none; } .cl-card:hover .cl-card-yt-play { color: rgba(255,255,255,0.9); background: rgba(0,0,0,0.4); } /* Vertical divider between thumbnail and text */ .cl-card-yt::after { content: ''; position: absolute; right: 0; top: 10%; height: 80%; width: 1px; background: rgba(255,255,255,0.08); } /* Text info */ .cl-card-info { position: relative; z-index: 2; flex: 1; min-width: 0; padding: 0.85rem 1rem 0.85rem 1.1rem; display: flex; flex-direction: column; gap: 3px; justify-content: center; } .cl-card-rank { font-size: 11px; font-weight: 700; letter-spacing: 0.12em; color: rgba(255,255,255,0.45); text-transform: uppercase; display: flex; align-items: center; gap: 6px; } .cl-legacy-badge { font-size: 10px; background: rgba(255,255,255,0.1); border-radius: 3px; padding: 1px 5px; letter-spacing: 0.06em; color: rgba(255,255,255,0.4); } .cl-card-name { font-size: 17px; font-weight: 700; color: #fff; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: 1.2; } .cl-card-meta { font-size: 12px; color: rgba(255,255,255,0.45); display: flex; align-items: center; gap: 5px; flex-wrap: nowrap; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .cl-card-pts { color: #e8ff00; font-weight: 600; font-size: 12px; } .cl-card-dot { color: rgba(255,255,255,0.2); } .cl-card-tags { display: flex; gap: 4px; flex-wrap: nowrap; overflow: hidden; } .cl-card-tag { font-size: 10px; background: rgba(255,255,255,0.1); color: rgba(255,255,255,0.55); border-radius: 3px; padding: 1px 6px; letter-spacing: 0.04em; white-space: nowrap; } /* Arrow chevron on right */ .cl-card-arrow { position: relative; z-index: 2; font-size: 22px; color: rgba(255,255,255,0.2); padding: 0 1rem 0 0.5rem; flex-shrink: 0; transition: color 0.15s, transform 0.15s; } .cl-card:hover .cl-card-arrow { color: rgba(255,255,255,0.7); transform: translateX(3px); } /* ── Panel backdrop ── */ .cl-panel-backdrop { position: fixed; inset: 0; z-index: 500; background: rgba(0,0,0,0.55); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); display: flex; align-items: flex-start; justify-content: flex-end; overflow: hidden; } /* ── Side panel ── */ .cl-panel { position: relative; width: min(560px, 100vw); height: 100vh; overflow-y: auto; overflow-x: hidden; display: flex; flex-direction: column; background: #13161b; box-shadow: -12px 0 60px rgba(0,0,0,0.7); } /* Panel slide-in transition */ .cl-panel-slide-enter-active { transition: transform 0.32s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.2s ease; } .cl-panel-slide-leave-active { transition: transform 0.25s cubic-bezier(0.55, 0, 1, 0.45), opacity 0.2s ease; } .cl-panel-slide-enter-from, .cl-panel-slide-leave-to { transform: translateX(100%); opacity: 0; } /* ── Close button ── */ .cl-panel-close { position: absolute; top: 0.9rem; right: 0.9rem; z-index: 20; width: 32px; height: 32px; border-radius: 50%; background: rgba(0,0,0,0.5); border: 1px solid rgba(255,255,255,0.15); color: rgba(255,255,255,0.8); font-size: 13px; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background 0.2s, color 0.2s; line-height: 1; } .cl-panel-close:hover { background: rgba(255,255,255,0.15); color: #fff; } /* ── Hero banner ── */ .cl-panel-hero { position: relative; height: 220px; background-size: cover; background-position: center; background-color: #1a1d23; flex-shrink: 0; } .cl-panel-hero-tint { position: absolute; inset: 0; background: linear-gradient( to bottom, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.55) 55%, rgba(19,22,27,1) 100% ); } .cl-panel-hero-info { position: absolute; bottom: 0; left: 0; right: 0; padding: 1rem 1.5rem 1.25rem; } .cl-panel-rank { display: inline-block; font-size: 11px; font-weight: 700; letter-spacing: 0.18em; color: rgba(255,255,255,0.45); text-transform: uppercase; margin-bottom: 0.3rem; } .cl-panel-title { font-size: 1.75rem; font-weight: 800; color: #fff; margin: 0 0 0.5rem; line-height: 1.15; /* drop shadow so it reads over any background */ text-shadow: 0 2px 12px rgba(0,0,0,0.8); } /* Override LevelAuthors styles inside the hero so they look clean */ .cl-panel-hero-info .level-authors { display: flex; flex-wrap: wrap; gap: 0.35rem 0.75rem; margin: 0; } .cl-panel-hero-info .level-authors p, .cl-panel-hero-info .level-authors span, .cl-panel-hero-info .level-authors a { font-size: 12px !important; color: rgba(255,255,255,0.55) !important; text-shadow: 0 1px 6px rgba(0,0,0,0.8); text-transform: uppercase; letter-spacing: 0.06em; font-weight: 600; margin: 0 !important; line-height: 1.4; } /* ── Panel body ── */ .cl-panel-body { padding: 1.5rem 1.5rem 4rem; flex: 1; display: flex; flex-direction: column; gap: 0; } /* description quote */ .cl-panel-body > p:first-child { font-size: 13px; color: rgba(255,255,255,0.45); font-style: italic; line-height: 1.6; margin: 0 0 1rem; padding-bottom: 1rem; border-bottom: 1px solid rgba(255,255,255,0.06); } .cl-panel-body p { color: rgba(255,255,255,0.65); font-size: 14px; line-height: 1.65; margin: 0 0 0.6rem; } /* section headings (Records, etc.) */ .cl-panel-body h2 { font-size: 0.7rem; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; color: rgba(255,255,255,0.35); margin: 1.75rem 0 0.75rem; padding-bottom: 0.4rem; border-bottom: 1px solid rgba(255,255,255,0.06); } /* packs row */ .cl-panel-body .packs { display: flex; flex-wrap: wrap; gap: 0.4rem; margin: 0.5rem 0 1rem; } /* video */ .cl-panel-body .video { width: 100%; aspect-ratio: 16/9; border-radius: 8px; border: none; margin: 0.5rem 0 1rem; background: #000; } /* stats row */ .cl-panel-body .stats { display: flex; gap: 0; list-style: none; padding: 0; margin: 0 0 0.5rem; border: 1px solid rgba(255,255,255,0.07); border-radius: 8px; overflow: hidden; } .cl-panel-body .stats li { flex: 1; padding: 0.75rem 1rem; border-right: 1px solid rgba(255,255,255,0.07); display: flex; flex-direction: column; gap: 0.2rem; } .cl-panel-body .stats li:last-child { border-right: none; } /* enjoyment bar inside the panel stats */ .cl-panel-body .stats .enjoyment-stat { gap: 0.3rem; } .cl-panel-body .enjoyment-bar-track { width: 75%; height: 3px; background: rgba(255,255,255,0.08); border-radius: 99px; overflow: hidden; margin-top: 2px; } .cl-panel-body .enjoyment-bar-fill { height: 100%; border-radius: 99px; background: hsl(calc(var(--enjoyment, 0) * 1.2deg), 80%, 52%); box-shadow: 0 0 6px hsl(calc(var(--enjoyment, 0) * 1.2deg), 80%, 52%); transition: width 0.6s cubic-bezier(0.22, 1, 0.36, 1), background 0.6s ease; } .cl-panel-body .stats .type-title-sm { font-size: 0.6rem; letter-spacing: 0.14em; text-transform: uppercase; color: rgba(255,255,255,0.35); font-weight: 700; } .cl-panel-body .stats p { font-size: 1rem; font-weight: 700; color: #fff; margin: 0; } /* records table */ .cl-panel-body .records { width: 100%; border-collapse: collapse; } .cl-panel-body .records .record { border-bottom: 1px solid rgba(255,255,255,0.05); } .cl-panel-body .records .record:last-child { border-bottom: none; } .cl-panel-body .records td { padding: 0.5rem 0.25rem; vertical-align: middle; } .cl-panel-body .records .percent p { font-size: 13px; font-weight: 700; color: rgba(255,255,255,0.5); margin: 0; min-width: 3rem; } .cl-panel-body .records .ico { width: 36px; height: 36px; image-rendering: pixelated; border-radius: 4px; } .cl-panel-body .records .user a { font-size: 14px; font-weight: 600; color: #fff; text-decoration: none; padding-left: 0.5rem; } .cl-panel-body .records .user a:hover { color: #e8ff00; } /* tabs (Verification / Showcase) */ .cl-panel-body .tabs { display: flex; gap: 0.25rem; margin-bottom: 0.5rem; } .cl-panel-body .tab { padding: 0.4rem 1rem; border-radius: 6px; border: 1px solid rgba(255,255,255,0.1); background: transparent; color: rgba(255,255,255,0.45); font-size: 13px; cursor: pointer; transition: all 0.15s; } .cl-panel-body .tab.selected { background: rgba(255,255,255,0.1); color: #fff; border-color: rgba(255,255,255,0.2); } /* ── Responsive ── */ @media (max-width: 600px) { .cl-card { min-height: 80px; height: auto; } .cl-card-yt { width: 110px; min-height: 80px; align-self: stretch; } .cl-card-name { font-size: 15px; } .cl-card-meta { font-size: 11px; } .cl-panel { width: 100vw; } .cl-panel-title { font-size: 1.5rem; } }