/* Hegetic Components: the catalog. Paints itself with the cx theme variables (lib/cx.css), so the world switch at the top
   repaints the page, and every preview and link carries the chosen world. */
.lb-top { position: sticky; top: 0; z-index: 10; display: flex; justify-content: space-between; align-items: center; gap: 16px; height: 68px; padding: 0 var(--gutter); background: color-mix(in srgb, var(--c-bg) 86%, transparent); backdrop-filter: blur(14px) saturate(1.3); -webkit-backdrop-filter: blur(14px) saturate(1.3); border-bottom: 1px solid var(--c-line); }
.lb-logo { display: flex; align-items: center; gap: 12px; color: var(--c-fg); text-decoration: none; }
.lb-logo svg { height: 20px; width: auto; }
.lb-logo span { font: 500 11.5px/1 var(--mono); letter-spacing: .14em; text-transform: uppercase; color: var(--c-mid); padding: 6px 9px; border: 1px solid var(--c-line); border-radius: 999px; }
.lb-top__r { display: flex; align-items: center; gap: 10px; }
.lb-btn { display: inline-flex; align-items: center; gap: 10px; height: 44px; padding: 0 20px; border-radius: var(--c-r-btn); background: var(--c-deep); color: var(--c-on-deep); font: 650 14.5px/1 var(--sans); text-decoration: none; transition: transform .3s var(--ease); }
.lb-btn:hover { transform: translateY(-1px); }
.lb-btn::after { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--c-accent); }

.lb-hero { max-width: var(--wrap); margin: 0 auto; padding: 88px var(--gutter) 48px; }
.lb-k { display: flex; align-items: center; gap: 10px; font: 500 12px/1 var(--mono); letter-spacing: .14em; text-transform: uppercase; color: var(--c-mid); }
.lb-k i { width: 9px; height: 9px; border-radius: 50%; background: var(--c-accent); }
.lb-hero h1 { margin: 22px 0 0; font: 750 clamp(48px, 8.6vw, 124px)/.9 var(--sans); letter-spacing: -.055em; }
.lb-hero h1 em, .lb-end h2 em { font-style: normal; color: var(--c-mid); }
.lb-sub { margin: 26px 0 0; max-width: 56ch; font-size: 19px; color: var(--c-muted); }
.lb-ctrl { display: flex; flex-wrap: wrap; gap: 20px 40px; margin-top: 44px; padding-top: 24px; border-top: 1px solid var(--c-line); }
.lb-ctrl__l { margin: 0 0 10px; font: 500 11.5px/1 var(--mono); letter-spacing: .12em; text-transform: uppercase; color: var(--c-muted); }
.lb-themes { width: max-content; }
.lb-filters { display: flex; flex-wrap: wrap; gap: 6px; }
.lb-filters button { height: 38px; border: 1px solid var(--c-line); background: transparent; color: var(--c-fg); border-radius: 999px; padding: 0 15px; font: 600 13.5px/1 var(--sans); cursor: pointer; transition: background-color .2s, color .2s, border-color .2s; }
.lb-filters button:hover { border-color: var(--c-fg); }
.lb-filters button[aria-pressed="true"] { background: var(--c-deep); color: var(--c-on-deep); border-color: var(--c-deep); }
.lb-filters button sup { font: 500 10px/1 var(--mono); margin-left: 4px; opacity: .6; vertical-align: 4px; }

.lb-grid { max-width: var(--wrap); margin: 0 auto; padding: 8px var(--gutter) 40px; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 40px 24px; }
.lb-card { display: flex; flex-direction: column; gap: 14px; text-decoration: none; color: inherit; }
.lb-card[hidden] { display: none; }
.lb-view { position: relative; aspect-ratio: 16 / 10; border-radius: var(--c-r-card); overflow: hidden; background: var(--c-raise); box-shadow: 0 0 0 1px var(--c-line); transition: box-shadow .35s var(--ease), transform .5s var(--ease); }
.lb-card:hover .lb-view, .lb-card:focus-visible .lb-view { box-shadow: 0 0 0 1px var(--c-mid), 0 30px 60px -36px rgba(14, 17, 23, .45); transform: translateY(-3px); }
.lb-card:focus-visible { outline: none; } .lb-card:focus-visible .lb-view { outline: 2px solid var(--c-accent); outline-offset: 3px; }
.lb-view img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; transition: opacity .45s, transform .9s var(--ease); }
.lb-card:hover .lb-view img { transform: scale(1.025); }
.lb-view iframe { position: absolute; left: 0; top: 0; width: 1100px; height: 688px; border: 0; transform-origin: 0 0; transform: scale(var(--k, .36)); pointer-events: none; opacity: 0; transition: opacity .45s; }
.lb-view.is-live iframe { opacity: 1; } .lb-view.is-live img { opacity: 0; }
.lb-view__id { position: absolute; left: 12px; top: 12px; z-index: 2; display: flex; align-items: center; gap: 7px; padding: 6px 9px; border-radius: 999px; background: color-mix(in srgb, var(--c-bg) 88%, transparent); backdrop-filter: blur(6px); font: 500 11px/1 var(--mono); letter-spacing: .06em; color: var(--c-fg); }
.lb-view__id::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--c-accent); }
.lb-meta h2 { margin: 0; display: flex; justify-content: space-between; align-items: baseline; gap: 12px; font: 700 21px/1.2 var(--sans); letter-spacing: -.02em; }
.lb-meta h2 span { flex: none; font: 500 11px/1 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--c-mid); }
.lb-meta p { margin: 6px 0 0; color: var(--c-muted); font-size: 15px; line-height: 1.5; }

.lb-end { max-width: var(--wrap); margin: 0 auto; padding: 104px var(--gutter) 120px; text-align: center; }
.lb-end h2 { margin: 0; font: 750 clamp(36px, 5.6vw, 76px)/.95 var(--sans); letter-spacing: -.045em; }
.lb-end p { margin: 22px auto 30px; max-width: 46ch; color: var(--c-muted); font-size: 18px; }
.lb-foot a { color: inherit; text-underline-offset: 3px; }
.lb-foot { display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; padding: 26px var(--gutter); border-top: 1px solid var(--c-line); font: 500 12px/1.4 var(--mono); color: var(--c-muted); }

@media (max-width: 1080px) { .lb-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 680px) {
  .lb-grid { grid-template-columns: 1fr; gap: 36px; }
  .lb-hero { padding-top: 56px; } .lb-sub { font-size: 17px; }
  .lb-top .lb-btn { display: none; }
  .lb-themes button span { display: none; } .lb-themes button { padding: 0 11px; } .lb-themes button i { margin: 0; }
}
@media (prefers-reduced-motion: reduce) { .lb-view, .lb-view img { transition: none; } .lb-card:hover .lb-view, .lb-card:hover .lb-view img { transform: none; } }

/* the closing cards: "and many more" and "yours, made to measure" */
.lb-view--more { background: transparent; box-shadow: none; border: 1px dashed color-mix(in srgb, var(--c-mid) 55%, transparent); }
.lb-card.lb-more:hover .lb-view { border-color: var(--c-mid); box-shadow: none; }
.lb-next { position: absolute; inset: 44px 0 0; overflow: hidden; -webkit-mask-image: linear-gradient(transparent, #000 24%, #000 76%, transparent); mask-image: linear-gradient(transparent, #000 24%, #000 76%, transparent); }
.lb-view--more .lb-view__id { background: var(--c-bg); }
.lb-next ul { margin: 0; padding: 0 22px; list-style: none; animation: lb-roll 30s linear infinite; }
.lb-card.lb-more:hover .lb-next ul { animation-play-state: paused; }
.lb-next li { display: flex; align-items: baseline; gap: 14px; padding: 11px 0; border-bottom: 1px solid var(--c-line); font: 600 17px/1.2 var(--sans); letter-spacing: -.01em; color: var(--c-fg); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lb-next li b { flex: none; width: 52px; font: 500 11px/1 var(--mono); letter-spacing: .06em; color: var(--c-mid); }
@keyframes lb-roll { to { transform: translateY(-50%); } }
.lb-yours { position: absolute; inset: 0; display: grid; place-items: center; align-content: center; gap: 16px; background-image: linear-gradient(var(--c-line) 1px, transparent 1px), linear-gradient(90deg, var(--c-line) 1px, transparent 1px); background-size: 28px 28px; background-position: center; }
.lb-yours i { width: 64px; height: 64px; border-radius: 50%; border: 1px solid var(--c-mid); background: var(--c-bg); position: relative; }
.lb-yours i::before, .lb-yours i::after { content: ""; position: absolute; left: 50%; top: 50%; width: 22px; height: 1.5px; background: var(--c-fg); transform: translate(-50%, -50%); }
.lb-yours i::after { transform: translate(-50%, -50%) rotate(90deg); }
.lb-yours span { padding: 6px 10px; border-radius: 6px; background: var(--c-bg); font: 500 12.5px/1 var(--mono); color: var(--c-fg); }
.lb-yours b { position: absolute; right: 26%; top: 34%; width: 12px; height: 12px; border-radius: 50%; background: var(--c-accent); box-shadow: 0 0 0 0 color-mix(in srgb, var(--c-accent) 45%, transparent); animation: lb-ping 2.4s var(--ease) infinite; }
@keyframes lb-ping { 70%, 100% { box-shadow: 0 0 0 14px transparent; } }
.lb-card.lb-more:hover .lb-yours i { border-color: var(--c-accent); }
@media (prefers-reduced-motion: reduce) { .lb-next ul, .lb-yours b { animation: none; } }
