// ───────────────────────────────────────────────────────────────────────────── // Page: Explore // File: src/scss/pages/_explore.scss // // Structural layout only — zero colors, zero typography. // All visual rules live in components/_search.scss and patterns/_surfaces.scss. // ───────────────────────────────────────────────────────────────────────────── // ── Browse layout — filter sidebar + main grid ──────────────────────────────── .browse-layout { display: grid; grid-template-columns: 220px 1fr; align-items: start; gap: 0; padding-top: var(--space-3); @media (max-width: 900px) { grid-template-columns: 1fr; } } .browse-layout__sidebar { padding: var(--space-4) var(--space-4) var(--space-4) var(--space-3); position: sticky; top: 0; max-height: 100vh; overflow-y: auto; @media (max-width: 900px) { display: none; } } .browse-layout__content { padding: 0 var(--space-4); min-width: 0; } // ── Sidebar components ──────────────────────────────────────────────────────── .sidebar-section { padding: var(--space-3) 0; border-bottom: 1px solid var(--border-subtle); &:last-child { border-bottom: none; } &--header { padding-bottom: var(--space-2); } } .sidebar-section__hd { display: flex; align-items: center; justify-content: space-between; } .sidebar-section-title { display: flex; align-items: center; gap: 6px; font-size: var(--text-xs); font-weight: var(--weight-bold); letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-muted); margin: 0 0 var(--space-2); } .sidebar-clear { font-size: var(--text-xs); color: var(--color-accent); text-decoration: none; opacity: 0.8; &:hover { opacity: 1; text-decoration: underline; } } .sidebar-radio { display: flex; align-items: center; gap: 8px; font-size: 12px; color: var(--text-secondary); cursor: pointer; padding: 3px 0; &:hover { color: var(--text-primary); } input[type="radio"] { appearance: none; -webkit-appearance: none; width: 14px; height: 14px; border-radius: 50%; border: 1.5px solid var(--border-default); background: transparent; flex-shrink: 0; position: relative; cursor: pointer; transition: border-color var(--transition-fast), background var(--transition-fast); &::after { content: ''; position: absolute; inset: 3px; border-radius: 50%; background: transparent; transition: background var(--transition-fast); } &:checked { border-color: var(--color-accent); &::after { background: var(--color-accent); } } &:hover { border-color: var(--color-accent); } } } .sidebar-links { display: flex; flex-direction: column; gap: 2px; margin-top: var(--space-2); } .sidebar-link { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--text-secondary); text-decoration: none; padding: 3px 0; transition: color var(--transition-fast); svg { opacity: 0.5; flex-shrink: 0; } &:hover { color: var(--color-accent); svg { opacity: 1; } } } .chip-group { display: flex; gap: 5px; flex-wrap: wrap; margin-top: var(--space-2); } .sidebar-empty { font-size: 12px; color: var(--text-muted); margin: var(--space-2) 0 0; font-style: italic; } .sidebar-select { width: 100%; padding: 6px var(--space-3); border-radius: var(--radius-sm); background: var(--bg-overlay); color: var(--text-secondary); border: 1px solid var(--border-default); font-size: 12px; cursor: pointer; appearance: none; -webkit-appearance: none; &:focus { outline: none; border-color: var(--color-accent); } } // ── Grid header ─────────────────────────────────────────────────────────────── .grid-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--space-3); padding: var(--space-3) 0 var(--space-2); border-bottom: 1px solid var(--border-subtle); } .grid-header__title { font-size: var(--text-xs); font-weight: var(--weight-bold); color: var(--text-secondary); text-transform: uppercase; letter-spacing: 0.06em; margin: 0; } .grid-header__count { font-size: 12px; color: var(--text-muted); font-family: var(--font-mono); }