.pexpo-core-root { --accent1: #950000; --accent2: #2c3489; --bg: #f6f7fb; --panel: #ffffff; --panel2: #f2f4fb; --stroke: #1018281a; --stroke2: #10182824; --text: #101828eb; --muted: #1018289e; --shadow: 0 18px 45px #1018281f; --r: 14px; --cardMin: 240; --gap: 12px; --filterW: 170px; --filterWOpen: 360px; --toggle-bg-color: #4281A4; --toggle-nub-color: #FF686B; --topbarH: 64px; /* Basic font reset for the component only */ font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji","Segoe UI Emoji"; color: var(--text); line-height: 1.35; font-size: 14px; } /* Scoped box-sizing reset */ .pexpo-core-root * { box-sizing: border-box; } .pexpo-core-shell { width: min(1100px, 96vw); height: min(720px, 92vh); background: linear-gradient(180deg, rgba(44,52,137,.05), transparent 42%), var(--panel); border: 1px solid var(--stroke); border-radius: calc(var(--r) + 2px); box-shadow: var(--shadow); overflow: hidden; display:flex; flex-direction:column; position: relative; isolation: isolate; } /* --- Top row --- */ .pexpo-core-topbar { display:flex; align-items:flex-start; justify-content:space-between; gap: 12px; padding: 14px; border-bottom: 1px solid var(--stroke); background: linear-gradient(180deg, rgba(16,24,40,.02), rgba(16,24,40,.00)); position: relative; z-index: 3; } .pexpo-core-topHeight { height: 45px; } /* Filter button */ .pexpo-core-filterWrap { width: var(--filterW); transition: width 220ms ease; } .pexpo-core-filterWrap.pexpo-core-open { width: var(--filterWOpen); } .pexpo-core-filterBtn { width: 100%; display:flex; align-items:center; justify-content:space-between; gap: 10px; padding: 10px 10px; border-radius: 12px; border: 1px solid var(--stroke2); background: var(--panel2); color: var(--text); cursor:pointer; user-select:none; box-shadow: 0 8px 22px rgba(16,24,40,.10); } .pexpo-core-filterBtn .pexpo-core-left { display:flex; align-items:center; gap: 10px; min-width: 0; } .pexpo-core-pill { font-size: 12px; padding: 3px 8px; border: 1px solid rgba(44,52,137,.25); border-radius: 999px; color: rgba(44,52,137,.85); background: rgba(44,52,137,.06); white-space:nowrap; } .pexpo-core-filterBtn .pexpo-core-label { font-weight: 650; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } /* Sort */ .pexpo-core-sortWrap { display:flex; justify-content: space-between; align-items:center; gap: 10px; padding: 10px 10px; border-radius: 12px; border: 1px solid var(--stroke2); background: var(--panel2); color: var(--text); box-shadow: 0 8px 22px rgba(16,24,40,.10); flex: 0 0 auto; } .pexpo-core-sortLabel { font-weight: 650; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .pexpo-core-sortSelect { border: 1px solid rgba(16,24,40,.16); background: rgba(255,255,255,.95); color: var(--text); border-radius: 10px; padding: 5px 10px; outline: none; font: inherit; height: 35px; } .pexpo-core-sortSelect:focus { border-color: rgba(44,52,137,.45); box-shadow: 0 0 0 3px rgba(44,52,137,.14); } /* Search */ .pexpo-core-searchWrap { flex: 1 1 auto; display:flex; justify-content:flex-end; align-items:flex-start; } .pexpo-core-search { width: min(520px, 100%); display:flex; align-items:center; gap: 10px; padding: 10px 12px; border-radius: 14px; border: 1px solid var(--stroke2); background: rgba(255,255,255,.9); box-shadow: 0 8px 22px rgba(16,24,40,.10); } .pexpo-core-search input { width: 100%; border: none; outline: none; background: transparent; color: var(--text); font-size: 14px; } .pexpo-core-kbd { color: rgba(16,24,40,.62); border: 1px solid rgba(16,24,40,.16); border-bottom-color: rgba(16,24,40,.22); background: rgba(255,255,255,.85); border-radius: 8px; padding: 2px 8px; font-size: 12px; white-space: nowrap; } /* --- Main body --- */ .pexpo-core-body { flex: 1 1 auto; padding: 14px; overflow:auto; position: relative; z-index: 1; } .pexpo-core-metaRow { display:flex; align-items:center; justify-content:space-between; gap: 10px; margin-bottom: 12px; color: var(--muted); font-size: 12px; } /* Masonry */ .pexpo-core-masonry { display:flex; gap: var(--gap); align-items:flex-start; } .pexpo-core-mCol { flex: 1 1 0; min-width: 0; display:flex; flex-direction:column; gap: var(--gap); } .pexpo-core-card { border-radius: 14px; border: 1px solid var(--stroke2); background: linear-gradient(180deg, rgba(143, 152, 255, 0.05), rgba(255,255,255,.92)); padding: 12px; box-shadow: 0 12px 26px rgba(16,24,40,.10); display:flex; flex-direction:column; gap: 8px; } .pexpo-core-imageWrap { width: 100%; height: auto; border-radius: 10px; overflow: hidden; } .pexpo-core-imageWrap img { width: 100%; height: auto; display: block; } .pexpo-core-cardTop { display:flex; align-items:flex-start; justify-content:space-between; gap: 10px; } .pexpo-core-title { font-weight: 750; letter-spacing: .15px; color: var(--text); &:hover { color: initial; } } .pexpo-core-tags { display: flex; flex-wrap: wrap; gap: 6px; row-gap: 6px; } .pexpo-core-tag { font-size: 12px; padding: 3px 8px; border-radius: 999px; border: 1px solid #333333ce; color: var(--text); background: #99999930; white-space:nowrap; } .pexpo-core-desc { color: rgba(16,24,40,.74); font-size: 13px; } .pexpo-core-foot { margin-top:auto; display:flex; align-items:center; justify-content:space-between; color: rgba(16,24,40,.60); font-size: 12px; border-top: 1px dashed rgba(16,24,40,.16); padding-top: 8px; } .pexpo-core-dot { width: 7px; height: 7px; border-radius: 999px; background: rgba(44,52,137,.55); display:inline-block; margin-right: 8px; } .pexpo-core-status { display:flex; align-items:center; gap: 0; } /* Filter drawer */ .pexpo-core-filterDrawerBackdrop { position:absolute; inset: var(--topbarH) 0 0 0; background: rgba(16,24,40,.20); backdrop-filter: blur(2px); opacity: 0; pointer-events: none; transition: opacity 180ms ease; z-index: 2; } .pexpo-core-filterDrawerBackdrop.pexpo-core-show { opacity: 1; pointer-events: auto; } .pexpo-core-filterDrawer { position:absolute; top: var(--topbarH); bottom: 0; left: 14px; width: var(--filterW); border-radius: 14px; border: 1px solid var(--stroke2); background: rgba(255,255,255,.92); overflow:hidden; box-shadow: 0 18px 45px rgba(16,24,40,.18); opacity: 0; transform: translateY(-8px); pointer-events: none; transition: opacity 200ms ease, transform 200ms ease, width 220ms ease; z-index: 3; display:flex; flex-direction:column; min-height: 0; margin: 12.5px 0 12.5px 0; } .pexpo-core-filterDrawer.pexpo-core-open { opacity: 1; transform: translateY(0); pointer-events: auto; width: var(--filterWOpen); } .pexpo-core-filterPanelHeader { display:flex; align-items:center; justify-content:space-between; padding: 10px 10px; border-bottom: 1px solid var(--stroke); color: rgba(16,24,40,.60); background: linear-gradient(180deg, rgba(44,52,137,.05), rgba(255,255,255,.0)); flex: 0 0 auto; } .pexpo-core-filterPanelHeader b { color: var(--text); } .pexpo-core-filterPanelBody { display: flex; padding: 10px; flex-direction: column; overflow:auto; min-height: 0; gap: 10px; } .pexpo-core-toggle { width: 100%; display: flex; justify-content: space-between; align-items: center; } .pexpo-core-toggle input[type="checkbox"] { display: none; } .pexpo-core-toggle label { position: relative; display: block; width: 50px; height: 25px; cursor: pointer; } .pexpo-core-toggle label::before { content: ''; display: block; width: 100%; height: 100%; border-radius: 4px; background: var(--toggle-bg-off); border: 1.5px solid color-mix(in srgb, var(--toggle-bg-off), black var(--darker)); box-sizing: border-box; transition: all 0.2s ease-in; } .pexpo-core-toggle label::after { content: ''; display: block; height: 21px; width: 21px; border-radius: 2px; background: var(--toggle-nub-color); position: absolute; top: 2px; left: 2px; transition: all 0.2s ease-in; box-shadow: 0 2px 5px rgba(0,0,0,0.2); } .pexpo-core-toggle input:checked + label::before { background: var(--toggle-bg-on); border: 1.5px solid color-mix(in srgb, var(--toggle-bg-on), black var(--darker)); } .pexpo-core-toggle input:checked + label::after { left: 27px; } /* .pexpo-core-textarea { width: 100%; height: 210px; resize: vertical; min-height: 180px; max-height: 60vh; border-radius: 10px; border: 1px solid rgba(44,52,137,.20); background: #fbfbfe; color: rgba(16,24,40,.92); padding: 10px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 12px; line-height: 1.35; outline: none; } .pexpo-core-textarea:focus { border-color: rgba(44,52,137,.45); box-shadow: 0 0 0 3px rgba(44,52,137,.14); } */ .pexpo-core-hint { margin-top: 8px; color: rgba(16,24,40,.60); font-size: 12px; } .pexpo-core-error { margin-top: 8px; color: #950000; font-size: 12px; display:none; } .pexpo-core-error.pexpo-core-show { display:block; } /* Drawer open padding */ .pexpo-core-shell.pexpo-core-drawerOpen .pexpo-core-body { /* padding-left: calc(14px + var(--filterWOpen) + 14px); */ transition: padding-left 220ms ease; } .pexpo-core-shell:not(.pexpo-core-drawerOpen) .pexpo-core-body { transition: padding-left 220ms ease; } /* Icons */ .pexpo-core-icons-search { box-sizing: border-box; position: relative; display: block; transform: scale(var(--ggs, 1)); width: 16px; height: 16px; border: 2px solid; border-radius: 100%; margin-left: -4px; margin-top: -4px; } .pexpo-core-icons-search:after { content: ""; display: block; box-sizing: border-box; position: absolute; border-radius: 3px; width: 3px; height: 8px; background: currentColor; transform: rotate(-45deg); top: 10px; left: 12px; } .pexpo-core-icons-down { box-sizing: border-box; position: relative; display: block; transform: scale(var(--ggs, 1)); width: 22px; height: 22px; border: 2px solid transparent; border-radius: 100px; } .pexpo-core-icons-down:after { content: ""; display: block; box-sizing: border-box; position: absolute; width: 10px; height: 10px; border-bottom: 2px solid; border-right: 2px solid; transform: rotate(45deg); transition: 1s transform ease; left: 4px; top: 2px; } .pexpo-core-filterWrap.pexpo-core-open .pexpo-core-icons-down { transform: rotate(-135deg) translate(-1px,-1px); } .pexpo-core-icons-options { box-sizing: border-box; position: relative; display: block; transform: scale(var(--ggs, 1)); width: 10px; height: 2px; box-shadow: -3px 4px 0 0, 3px -4px 0 0; margin: 0 10px 0 10px; } .pexpo-core-icons-options::after, .pexpo-core-icons-options::before { content: ""; display: block; box-sizing: border-box; position: absolute; width: 8px; height: 8px; border: 2px solid; border-radius: 100%; } .pexpo-core-icons-options::before { top: -7px; left: -4px; } .pexpo-core-icons-options::after { bottom: -7px; right: -4px; } @media (max-width: 720px) { .pexpo-core-topbar { flex-direction:column; } .pexpo-core-searchWrap { justify-content:stretch; } .pexpo-core-search { width: 100%; } .pexpo-core-filterWrap { width: 100%; } .pexpo-core-filterWrap.pexpo-core-open { width: 100%; } .pexpo-core-sortWrap { width: 100%; } .pexpo-core-sortSelect { width: 110px; } .pexpo-core-searchWrap { width: 100%; } .pexpo-core-filterDrawer { left: 14px; right: 14px; width: auto; } .pexpo-core-filterDrawer.pexpo-core-open { width: auto; } .pexpo-core-shell.pexpo-core-drawerOpen .pexpo-core-body { padding-left: 14px; } }