:root { color-scheme: dark; --bg: #090d10; --bg-soft: #0f171b; --panel: #121b20; --panel-strong: #18242a; --text: #f1f0df; --muted: #9eb0ad; --border: rgba(184, 222, 208, 0.16); --shadow: 0 18px 50px rgba(0, 0, 0, 0.36); --type-difficulty: #ff4f5e; --type-expansion: #a778ff; --type-new-experience: #21c6b7; --type-qol: #62d96b; --type-vanilla: #65a8ff; --type-vanilla\+: #65a8ff; --type-cosmetic: #ff8abe; --type-demake: #ffb84a; --type-roguelite: #e85cff; --type-unknown: #8fa4a0; font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; background: var(--bg); color: var(--text); } * { box-sizing: border-box; } html { min-width: 320px; background: radial-gradient(circle at 20% -20%, rgba(33, 198, 183, 0.12), transparent 30rem), linear-gradient(180deg, #0b1014 0%, #090d10 32rem); } body { margin: 0; min-height: 100vh; letter-spacing: 0; } body::before { content: ""; position: fixed; inset: 0; pointer-events: none; background-image: linear-gradient(rgba(255, 255, 255, 0.025) 50%, transparent 50%); background-size: 100% 4px; opacity: 0.18; z-index: 20; } a { color: inherit; } img { display: block; max-width: 100%; } button, input, select { font: inherit; } .site-header { position: sticky; top: 0; z-index: 10; display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem clamp(1rem, 3vw, 2.5rem); border-bottom: 1px solid var(--border); background: rgba(9, 13, 16, 0.86); backdrop-filter: blur(14px); } .brand, .site-header nav { display: flex; align-items: center; gap: 0.75rem; } .brand { font-family: Georgia, "Times New Roman", serif; font-size: 1.2rem; font-weight: 700; text-decoration: none; } .brand-mark { width: 1.1rem; height: 1.1rem; border: 2px solid var(--type-new-experience); border-radius: 2px; box-shadow: inset 0 0 0 3px #0b1114; } .site-header nav { flex-wrap: wrap; justify-content: flex-end; } .site-header nav a, .back-link { color: var(--muted); font-size: 0.88rem; text-decoration: none; } .site-header nav a:hover, .back-link:hover { color: var(--text); } main { width: min(1500px, 100%); margin: 0 auto; padding: clamp(1rem, 3vw, 2.5rem); } .hero, .browse-header { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 2rem; padding: clamp(2.4rem, 8vw, 6rem) 0 clamp(1.5rem, 5vw, 3rem); } h1, h2, h3, legend { margin: 0; font-family: Georgia, "Times New Roman", serif; line-height: 1.04; letter-spacing: 0; } h1 { max-width: 11ch; font-size: clamp(3rem, 8vw, 7rem); } .hero p, .browse-header p, .section-heading p { max-width: 42rem; margin: 1rem 0 0; color: var(--muted); font-size: clamp(1rem, 2vw, 1.2rem); line-height: 1.6; } .hero-stats-panel { width: min(52rem, 100%); } .hero-stats-panel summary { display: none; } .hero-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0.75rem; width: 100%; } .stat-card { min-width: 0; padding: 1rem; border: 1px solid var(--border); border-radius: 6px; background: rgba(18, 27, 32, 0.82); } .stat-card-total { display: grid; place-content: center; text-align: center; } .stat-card-total strong { display: block; font-size: 3rem; line-height: 1; font-variant-numeric: tabular-nums; } .stat-card-total span, .stat-heading { color: var(--muted); font-size: 0.8rem; text-transform: uppercase; } .stat-heading { display: block; margin-bottom: 0.75rem; color: var(--text); font-weight: 700; } .stat-card-group { container-type: inline-size; } .stat-list { display: grid; gap: 0.45rem; margin: 0; padding: 0; list-style: none; } .stat-list li { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 0.5rem; color: var(--muted); font-size: clamp(0.68rem, 4.5cqw, 0.84rem); line-height: 1.25; } .stat-icon { position: relative; display: inline-block; width: 0.85em; height: 0.85em; flex: 0 0 auto; } .stat-icon-platform { border: 1px solid rgba(33, 198, 183, 0.82); border-radius: 2px; box-shadow: 0.18em 0.18em 0 rgba(33, 198, 183, 0.24); } .stat-icon-type { border: 1px solid rgba(167, 120, 255, 0.86); background: rgba(167, 120, 255, 0.22); transform: rotate(45deg) scale(0.82); } .stat-icon-status { border-radius: 50%; border: 1px solid rgba(98, 217, 107, 0.9); } .stat-icon-status::after { content: ""; position: absolute; left: 0.22em; top: 0.16em; width: 0.28em; height: 0.46em; border: solid rgba(98, 217, 107, 0.95); border-width: 0 0.12em 0.12em 0; transform: rotate(45deg); } .stat-label { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .stat-list strong { color: var(--text); font-variant-numeric: tabular-nums; } .flagships, .related, .browse-summary { margin-bottom: clamp(2rem, 5vw, 4rem); } .section-heading { display: flex; align-items: end; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; } .section-heading h2, .results-bar h2, .detail-section h2, .side-panel h2 { font-size: clamp(1.5rem, 3vw, 2.2rem); } .flagship-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; } .browse-summary { scroll-margin-top: 5.5rem; } .browse-summary-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; } .browse-facet { min-width: 0; padding: 1rem; border: 1px solid var(--border); border-radius: 6px; background: rgba(18, 27, 32, 0.64); } .browse-facet h3 { font-size: 1.2rem; } .browse-link-list { display: grid; gap: 0.45rem; margin-top: 0.8rem; } .browse-link-list a { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; min-height: 2.15rem; padding: 0.45rem 0.55rem; border: 1px solid rgba(255, 255, 255, 0.08); border-radius: 4px; background: rgba(4, 8, 10, 0.38); color: var(--muted); font-size: 0.88rem; text-decoration: none; } .browse-link-list a:hover { border-color: rgba(33, 198, 183, 0.28); color: var(--text); } .browse-link-list span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .browse-link-list em { color: #c8d8d3; font-style: normal; font-variant-numeric: tabular-nums; } .catalog-shell { display: grid; grid-template-columns: 18rem minmax(0, 1fr); gap: clamp(1rem, 3vw, 2rem); align-items: start; } .filter-rail { position: sticky; top: 5.5rem; display: grid; gap: 0.9rem; max-height: calc(100vh - 6.5rem); overflow-y: auto; overscroll-behavior: contain; scrollbar-gutter: stable; } .filter-rail, .filter-list { scrollbar-color: rgba(7, 11, 13, 0.82) transparent; scrollbar-width: thin; } .filter-rail::-webkit-scrollbar, .filter-list::-webkit-scrollbar { width: 6px; height: 6px; } .filter-rail::-webkit-scrollbar-track, .filter-list::-webkit-scrollbar-track { background: transparent; } .filter-rail::-webkit-scrollbar-thumb, .filter-list::-webkit-scrollbar-thumb { border-radius: 999px; background: rgba(7, 11, 13, 0.72); } .filter-rail::-webkit-scrollbar-thumb:hover, .filter-list::-webkit-scrollbar-thumb:hover { background: rgba(38, 51, 55, 0.82); } .filter-panel { min-width: 0; margin: 0; padding: 1rem; border: 1px solid var(--border); border-radius: 6px; background: rgba(18, 27, 32, 0.72); } .filter-panel legend, .search-label { color: var(--text); font-size: 0.95rem; font-weight: 700; } .filter-panel legend { float: left; width: 100%; padding: 0; margin-bottom: 0.75rem; } .search-label { display: block; margin-bottom: 0.55rem; } .search-input, .select-input { width: 100%; min-height: 2.7rem; padding: 0.7rem 0.75rem; border: 1px solid var(--border); border-radius: 4px; background: #091015; color: var(--text); } .search-input:focus, .select-input:focus, .filter-list input:focus-visible, a:focus-visible { outline: 2px solid var(--type-new-experience); outline-offset: 3px; } .filter-list { clear: both; display: grid; gap: 0.4rem; max-height: 18rem; overflow: auto; margin-top: 0; } .filter-list label { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 0.55rem; min-height: 2rem; color: var(--muted); font-size: 0.88rem; } .filter-list span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .filter-list em { color: #60746f; font-style: normal; font-variant-numeric: tabular-nums; } .catalog-results { min-width: 0; } .results-bar { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; } .results-bar span { color: var(--muted); font-variant-numeric: tabular-nums; } .hack-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(17rem, 1fr)); gap: 1rem; } .hack-card { min-width: 0; border: 1px solid var(--border); border-left: 4px solid var(--accent); border-radius: 7px; overflow: hidden; background: var(--panel); box-shadow: var(--shadow); transition: transform 160ms ease, border-color 160ms ease, box-shadow 160ms ease; } .hack-card:hover { transform: translateY(-3px); border-color: color-mix(in srgb, var(--accent), white 20%); box-shadow: 0 18px 44px color-mix(in srgb, var(--accent), transparent 78%); } .hack-card[hidden] { display: none; } .card-link { position: relative; display: grid; min-height: 22rem; color: inherit; text-decoration: none; } .hack-card-compact .card-link { min-height: 18rem; } .card-link img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: saturate(0.96) contrast(1.04); } .card-scrim { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(8, 12, 15, 0.08) 0%, rgba(8, 12, 15, 0.72) 48%, rgba(8, 12, 15, 0.96) 100%); } .card-copy { position: relative; align-self: end; display: grid; gap: 0.7rem; padding: 1rem; } .card-kicker, .card-types, .chip-row { display: flex; flex-wrap: wrap; gap: 0.45rem; } .hack-card h2 { font-size: 1.5rem; } .hack-card p { display: -webkit-box; min-height: 3.1rem; margin: 0; overflow: hidden; color: #d3ddd8; font-size: 0.92rem; line-height: 1.45; -webkit-line-clamp: 2; -webkit-box-orient: vertical; } .chip { display: inline-flex; align-items: center; gap: 0.25rem; max-width: 100%; padding: 0.28rem 0.45rem; border: 1px solid rgba(255, 255, 255, 0.14); border-radius: 4px; background: rgba(4, 8, 10, 0.62); color: #e9efe9; font-size: 0.72rem; line-height: 1; } .chip span { color: var(--muted); } .chip strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .empty-state { padding: 2rem; border: 1px dashed var(--border); border-radius: 6px; color: var(--muted); text-align: center; } .detail-hero { position: relative; display: grid; min-height: min(58vh, 34rem); overflow: hidden; border: 1px solid var(--border); border-left: 5px solid var(--accent); border-radius: 8px; background: var(--panel); } .detail-hero img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0.72; } .detail-hero::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(8, 12, 15, 0.96), rgba(8, 12, 15, 0.62), rgba(8, 12, 15, 0.25)); } .detail-hero-copy { position: relative; z-index: 1; align-self: end; display: grid; gap: 1rem; max-width: 64rem; padding: clamp(1rem, 4vw, 2rem); } .detail-hero h1 { max-width: 14ch; font-size: clamp(2.6rem, 7vw, 6rem); } .detail-grid { display: grid; grid-template-columns: minmax(0, 1fr) 22rem; gap: 1.25rem; margin-top: 1.25rem; } .detail-main, .detail-side { display: grid; gap: 1rem; align-content: start; } .detail-section, .side-panel { padding: clamp(1rem, 3vw, 1.35rem); border: 1px solid var(--border); border-radius: 7px; background: rgba(18, 27, 32, 0.72); } .detail-section p, .side-panel p, .feature-list { color: #d8e1dd; line-height: 1.68; } .feature-list, .link-list { margin: 1rem 0 0; padding: 0; } .feature-list { padding-left: 1.2rem; } .feature-list li + li { margin-top: 0.55rem; } .link-list { display: grid; gap: 0.55rem; list-style: none; } .link-list li { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0.75rem; align-items: center; } .link-list a { overflow-wrap: anywhere; color: #bfeee5; } .link-list span { color: var(--muted); font-size: 0.75rem; text-transform: uppercase; } .related, .browse-results { margin-top: 1.25rem; } @media (max-width: 980px) { .hero, .browse-header, .catalog-shell, .detail-grid { grid-template-columns: 1fr; } .hero-stats-panel { min-width: 0; } .hero-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); } .filter-rail { position: static; grid-template-columns: repeat(2, minmax(0, 1fr)); max-height: none; overflow-y: visible; overscroll-behavior: auto; scrollbar-gutter: auto; } .flagship-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .browse-summary-grid { grid-template-columns: 1fr; } } @media (max-width: 640px) { .site-header { align-items: flex-start; flex-direction: column; } main { padding: 1rem; } h1 { font-size: 3.1rem; } .filter-rail, .flagship-grid { grid-template-columns: 1fr; } .hero-stats-panel summary { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; min-height: 2.7rem; margin-bottom: 0.75rem; padding: 0.7rem 0.85rem; border: 1px solid var(--border); border-radius: 6px; background: rgba(18, 27, 32, 0.82); color: var(--muted); cursor: pointer; font-size: 0.82rem; font-weight: 700; list-style: none; text-transform: uppercase; } .hero-stats-panel summary::-webkit-details-marker { display: none; } .hero-stats-panel summary::after { content: "+"; color: var(--text); font-size: 1.2rem; line-height: 1; } .hero-stats-panel[open] summary::after { content: "-"; } .hero-stats { grid-auto-columns: minmax(10.5rem, 72vw); grid-auto-flow: column; grid-template-columns: none; overflow-x: auto; overflow-y: hidden; padding-bottom: 0.45rem; scroll-snap-type: x proximity; scrollbar-color: rgba(7, 11, 13, 0.82) transparent; scrollbar-width: thin; -webkit-overflow-scrolling: touch; } .hero-stats::-webkit-scrollbar { height: 5px; } .hero-stats::-webkit-scrollbar-track { background: transparent; } .hero-stats::-webkit-scrollbar-thumb { border-radius: 999px; background: rgba(7, 11, 13, 0.72); } .stat-card { min-height: 10.25rem; scroll-snap-align: start; } .hack-grid { grid-template-columns: 1fr; } .card-link { min-height: 19rem; } .detail-hero { min-height: 28rem; } .link-list li { grid-template-columns: 1fr; } }