/**
 * Plugin store layout glue — Blora Studio theme.
 * Component look & feel comes from /blora/blora.css (theme-style=studio + palette=minimal (Mono)).
 */

/* Brand mark: full-bleed /BL.png inside circular seal */
.blora-brand-mark {
  background: transparent;
  box-shadow: none;
}
.blora-brand-mark img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  border-radius: 50%;
}

/* Soft studio page wash (Dusk palette ambient) */
body.blora-page {
  background:
    radial-gradient(
      ellipse 80% 50% at 10% -10%,
      color-mix(in srgb, var(--blora-seal) 10%, transparent),
      transparent 55%
    ),
    radial-gradient(
      ellipse 60% 40% at 100% 0%,
      color-mix(in srgb, var(--blora-indigo) 8%, transparent),
      transparent 50%
    ),
    var(--blora-paper);
  overflow-x: clip;
}

/* Page content offset under floating studio navbar */
.apps-page {
  padding-top: calc(var(--blora-space-10) + var(--blora-space-7));
  padding-bottom: var(--blora-space-10);
  min-height: calc(100vh - 8rem);
  min-width: 0;
  box-sizing: border-box;
}

.apps-hero {
  margin-bottom: var(--blora-space-7);
  max-width: 46rem;
}

.apps-hero .blora-h1 {
  letter-spacing: -0.03em;
  font-weight: 600;
  margin-bottom: var(--blora-space-3);
}

.apps-hero .blora-text-lead {
  color: var(--blora-ink-light);
  max-width: 38rem;
}

.apps-hero__kicker {
  display: inline-flex;
  align-items: center;
  gap: var(--blora-space-2);
  font-size: var(--blora-text-xs);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--blora-seal);
  margin-bottom: var(--blora-space-4);
  font-family: var(--blora-font-sans);
  font-weight: 600;
}

.apps-hero__kicker::before {
  content: "";
  width: 1.25rem;
  height: 2px;
  border-radius: var(--blora-radius-full);
  background: var(--blora-seal);
  opacity: 0.7;
}

/* Soft studio hero wash */
.apps-hero--wash {
  position: relative;
}

.apps-hero--wash::before {
  content: "";
  position: absolute;
  inset: -25% -15% auto auto;
  width: min(32rem, 75vw);
  height: min(20rem, 45vw);
  background: radial-gradient(
    ellipse at center,
    color-mix(in srgb, var(--blora-seal) 14%, transparent) 0%,
    transparent 72%
  );
  pointer-events: none;
  z-index: -1;
}

/* Hero meta row: chips + secondary actions */
.apps-hero__meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--blora-space-2);
  align-items: center;
  margin-top: var(--blora-space-5);
}

.apps-hero__meta .blora-tag {
  border-radius: var(--blora-radius-full);
}

/* Stats strip under hero */
.apps-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr));
  gap: var(--blora-space-4);
  margin-bottom: var(--blora-space-7);
}

.apps-stats .blora-stat {
  padding: var(--blora-space-5);
  border-radius: var(--blora-radius-xl);
  background: color-mix(in srgb, var(--blora-surface-1) 90%, transparent);
  border: 1px solid var(--blora-ink-ghost);
  box-shadow: var(--blora-shadow-1);
  backdrop-filter: blur(12px) saturate(1.1);
  -webkit-backdrop-filter: blur(12px) saturate(1.1);
}

.apps-stats .blora-stat__value {
  font-family: var(--blora-font-sans);
  font-size: var(--blora-text-2xl);
  letter-spacing: -0.02em;
}

/* Toolbar capsule */
.apps-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: var(--blora-space-3);
  align-items: center;
  margin-bottom: var(--blora-space-6);
  padding: var(--blora-space-3);
  border-radius: var(--blora-radius-full);
  background: color-mix(in srgb, var(--blora-surface-1) 88%, transparent);
  border: 1px solid var(--blora-ink-ghost);
  box-shadow: var(--blora-shadow-1);
  backdrop-filter: blur(16px) saturate(1.15);
  -webkit-backdrop-filter: blur(16px) saturate(1.15);
}

.apps-toolbar .blora-search {
  flex: 1 1 240px;
  min-width: 160px;
}

.apps-toolbar .blora-search .blora-input {
  width: 100%;
  border-radius: var(--blora-radius-full);
}

.apps-toolbar .blora-select {
  flex: 0 1 11rem;
  width: auto;
  min-width: 8.5rem;
  max-width: 14rem;
  border-radius: var(--blora-radius-full);
}

.apps-toolbar .blora-btn {
  flex: 0 0 auto;
  border-radius: var(--blora-radius-full);
  white-space: nowrap;
}

.apps-toolbar .blora-segmented {
  flex: 0 0 auto;
  border-radius: var(--blora-radius-full);
  padding: 3px;
}

.apps-toolbar .blora-segmented__item {
  border-radius: var(--blora-radius-full);
  font-size: var(--blora-text-xs);
  padding: 0.45em 0.95em;
}

/* Plugin cards grid */
.apps-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: var(--blora-space-5);
}

a.apps-plugin-card {
  text-decoration: none;
  color: inherit;
  display: flex;
  flex-direction: column;
  gap: var(--blora-space-4);
  height: 100%;
  min-height: 13rem;
  border-radius: var(--blora-radius-xl);
  background: color-mix(in srgb, var(--blora-surface-1) 94%, transparent);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  transition:
    transform var(--blora-dur-base) var(--blora-ease),
    box-shadow var(--blora-dur-base) var(--blora-ease),
    border-color var(--blora-dur-fast) var(--blora-ease);
}

a.apps-plugin-card:hover {
  color: inherit;
  transform: translateY(-3px);
  box-shadow: var(--blora-shadow-3);
  border-color: color-mix(in srgb, var(--blora-seal) 28%, var(--blora-ink-ghost));
}

a.apps-plugin-card:focus-visible {
  outline: 2px solid color-mix(in srgb, var(--blora-seal) 55%, transparent);
  outline-offset: 3px;
}

.apps-plugin-card__head {
  display: flex;
  gap: var(--blora-space-4);
  align-items: flex-start;
}

.apps-plugin-card__icon {
  width: 52px;
  height: 52px;
  border-radius: var(--blora-radius-lg);
  object-fit: cover;
  background: var(--blora-surface-2);
  flex-shrink: 0;
  border: 1px solid var(--blora-ink-ghost);
}

.apps-plugin-card__icon-fallback {
  width: 52px;
  height: 52px;
  border-radius: var(--blora-radius-lg);
  display: flex;
  align-items: center;
  justify-content: center;
  background: color-mix(in srgb, var(--blora-seal) 12%, var(--blora-surface-1));
  color: var(--blora-seal);
  font-family: var(--blora-font-sans);
  font-weight: 700;
  font-size: var(--blora-text-xl);
  flex-shrink: 0;
  border: 1px solid color-mix(in srgb, var(--blora-seal) 20%, transparent);
}

.apps-plugin-card__title {
  margin: 0;
  font-family: var(--blora-font-sans);
  font-size: var(--blora-text-lg);
  font-weight: 600;
  color: var(--blora-ink-deep);
  letter-spacing: -0.02em;
  line-height: var(--blora-leading-tight);
}

.apps-plugin-card__meta {
  margin-top: var(--blora-space-1);
  font-size: var(--blora-text-xs);
  color: var(--blora-ink-mist);
  font-family: var(--blora-font-mono);
}

.apps-plugin-card__desc {
  margin: 0;
  flex: 1;
  font-size: var(--blora-text-sm);
  color: var(--blora-ink-light);
  line-height: var(--blora-leading-normal);
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.apps-plugin-card__tags {
  display: flex;
  flex-wrap: wrap;
  gap: var(--blora-space-2);
  align-items: center;
}

.apps-plugin-card__tags .blora-tag {
  border-radius: var(--blora-radius-full);
}

.apps-plugin-card__foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--blora-space-3);
  margin-top: auto;
  padding-top: var(--blora-space-3);
  border-top: 1px solid var(--blora-ink-ghost);
  font-size: var(--blora-text-xs);
  color: var(--blora-ink-mist);
}

.apps-plugin-card__foot-cta {
  color: var(--blora-seal);
  font-weight: 600;
  letter-spacing: 0.02em;
}

/* Skeleton cards */
.apps-skeleton-card {
  min-height: 13rem;
  padding: var(--blora-space-5);
  border-radius: var(--blora-radius-xl);
  background: var(--blora-surface-1);
  border: 1px solid var(--blora-ink-ghost);
  display: flex;
  flex-direction: column;
  gap: var(--blora-space-4);
}

.apps-skeleton-card__head {
  display: flex;
  gap: var(--blora-space-4);
  align-items: center;
}

/* Detail layout */
.apps-detail {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--blora-space-6);
  align-items: start;
}

@media (min-width: 860px) {
  .apps-detail {
    grid-template-columns: 1fr 300px;
  }
}

.apps-detail__head {
  display: flex;
  gap: var(--blora-space-5);
  align-items: flex-start;
  margin-bottom: var(--blora-space-5);
}

.apps-detail__icon {
  width: 80px;
  height: 80px;
  border-radius: var(--blora-radius-xl);
  object-fit: cover;
  background: var(--blora-surface-2);
  border: 1px solid var(--blora-ink-ghost);
  flex-shrink: 0;
  box-shadow: var(--blora-shadow-1);
}

.apps-detail__icon-fallback {
  width: 80px;
  height: 80px;
  border-radius: var(--blora-radius-xl);
  display: flex;
  align-items: center;
  justify-content: center;
  background: color-mix(in srgb, var(--blora-seal) 12%, var(--blora-surface-1));
  color: var(--blora-seal);
  font-family: var(--blora-font-sans);
  font-weight: 700;
  font-size: var(--blora-text-3xl);
  flex-shrink: 0;
  border: 1px solid color-mix(in srgb, var(--blora-seal) 20%, transparent);
  box-shadow: var(--blora-shadow-1);
}

.apps-detail__desc {
  white-space: pre-wrap;
  color: var(--blora-ink-light);
  font-size: var(--blora-text-base);
  line-height: var(--blora-leading-loose);
}

.apps-detail__meta-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(7rem, 1fr));
  gap: var(--blora-space-3);
  margin-top: var(--blora-space-6);
  padding-top: var(--blora-space-5);
  border-top: 1px solid var(--blora-ink-ghost);
}

.apps-detail__meta-grid .blora-stat__value {
  font-family: var(--blora-font-sans);
  font-size: var(--blora-text-lg);
}

.apps-side-actions {
  display: flex;
  flex-direction: column;
  gap: var(--blora-space-3);
}

.apps-side-actions .blora-btn {
  width: 100%;
  justify-content: center;
  border-radius: var(--blora-radius-full);
}

.apps-perm-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: var(--blora-space-3);
}

.apps-perm-item {
  padding: var(--blora-space-4);
  border-radius: var(--blora-radius-lg);
  background: var(--blora-surface-2);
  color: var(--blora-ink-mid);
  border: 1px solid var(--blora-ink-ghost);
}

.apps-perm-item.is-risk {
  border-color: color-mix(in srgb, var(--blora-gold) 45%, var(--blora-ink-ghost));
  background: color-mix(in srgb, var(--blora-gold) 10%, var(--blora-surface-1));
}

.apps-perm-item__row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--blora-space-2);
  margin-bottom: var(--blora-space-2);
}

.apps-perm-item__id {
  font-family: var(--blora-font-mono);
  font-size: var(--blora-text-xs);
  color: var(--blora-ink-deep);
  background: color-mix(in srgb, var(--blora-surface-1) 80%, transparent);
  padding: 0.15em 0.55em;
  border-radius: var(--blora-radius-full);
  border: 1px solid var(--blora-ink-ghost);
}

.apps-perm-item__name {
  font-size: var(--blora-text-sm);
  font-weight: 600;
  color: var(--blora-ink-deep);
  letter-spacing: -0.01em;
}

.apps-perm-item__use {
  margin-top: var(--blora-space-1);
  font-size: var(--blora-text-xs);
  color: var(--blora-ink-mist);
  line-height: var(--blora-leading-normal);
}

.apps-perm-item__use-label {
  color: var(--blora-ink-light);
  font-weight: 500;
}

.apps-perm-doc {
  margin-top: var(--blora-space-4);
}

.apps-perm-doc a {
  color: var(--blora-seal);
}

.apps-perm-check {
  align-items: flex-start;
}

.apps-perm-check__text {
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
  min-width: 0;
}

.apps-perm-check__id {
  font-family: var(--blora-font-mono);
  font-size: var(--blora-text-xs);
  color: var(--blora-ink-deep);
}

.apps-perm-check__name {
  font-family: var(--blora-font-sans);
  font-size: var(--blora-text-xs);
  color: var(--blora-ink-mist);
  line-height: 1.35;
}

.apps-locale-btn {
  border-radius: var(--blora-radius-full);
  min-width: 2.75rem;
  font-weight: 600;
  letter-spacing: 0.02em;
}

/* Submit form */
.apps-form {
  max-width: 44rem;
  border-radius: var(--blora-radius-xl);
  padding: var(--blora-space-7);
  background: color-mix(in srgb, var(--blora-surface-1) 94%, transparent);
  box-shadow: var(--blora-shadow-2);
}

.apps-form__section {
  display: flex;
  flex-direction: column;
  gap: var(--blora-space-5);
}

.apps-form__section + .apps-form__section {
  margin-top: var(--blora-space-2);
  padding-top: var(--blora-space-6);
  border-top: 1px solid var(--blora-ink-ghost);
}

.apps-form__section-title {
  margin: 0;
  font-family: var(--blora-font-sans);
  font-size: var(--blora-text-sm);
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--blora-ink-mist);
}

.apps-form-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--blora-space-5);
}

@media (min-width: 640px) {
  .apps-form-grid--2 {
    grid-template-columns: 1fr 1fr;
  }
}

.apps-perm-checks {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(168px, 1fr));
  gap: var(--blora-space-2);
}

.apps-perm-checks .blora-checkbox {
  padding: var(--blora-space-3) var(--blora-space-4);
  border-radius: var(--blora-radius-full);
  background: var(--blora-surface-2);
  border: 1px solid var(--blora-ink-ghost);
  font-family: var(--blora-font-mono);
  font-size: var(--blora-text-xs);
  transition:
    border-color var(--blora-dur-fast) var(--blora-ease),
    background var(--blora-dur-fast) var(--blora-ease);
}

.apps-perm-checks .blora-checkbox:hover {
  border-color: color-mix(in srgb, var(--blora-seal) 30%, var(--blora-ink-ghost));
}

.apps-perm-checks .blora-checkbox.is-risk {
  border-color: color-mix(in srgb, var(--blora-gold) 45%, var(--blora-ink-ghost));
}

.apps-form__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--blora-space-3);
  margin-top: var(--blora-space-2);
  padding-top: var(--blora-space-6);
  border-top: 1px solid var(--blora-ink-ghost);
}

.apps-form__actions .blora-btn {
  border-radius: var(--blora-radius-full);
}

/* Navbar auth slot */
.apps-nav-user {
  display: inline-flex;
  align-items: center;
  gap: var(--blora-space-2);
  padding: 0.15rem 0.55rem 0.15rem 0.15rem;
  border-radius: var(--blora-radius-full);
  background: color-mix(in srgb, var(--blora-surface-2) 80%, transparent);
  border: 1px solid var(--blora-ink-ghost);
}

.apps-nav-username {
  font-size: var(--blora-text-sm);
  color: var(--blora-ink-mid);
  max-width: 7.5rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  padding-right: 0.25rem;
}

/* Mine / admin list cards */
.apps-list {
  display: flex;
  flex-direction: column;
  gap: var(--blora-space-4);
}

.apps-list-card {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: var(--blora-space-4);
  align-items: start;
  padding: var(--blora-space-5);
  border-radius: var(--blora-radius-xl);
  background: color-mix(in srgb, var(--blora-surface-1) 94%, transparent);
  border: 1px solid var(--blora-ink-ghost);
  box-shadow: var(--blora-shadow-1);
}

.apps-list-card__title {
  margin: 0 0 var(--blora-space-1);
  font-size: var(--blora-text-lg);
  font-weight: 600;
  color: var(--blora-ink-deep);
  letter-spacing: -0.02em;
}

.apps-list-card__id {
  font-family: var(--blora-font-mono);
  font-size: var(--blora-text-xs);
  color: var(--blora-ink-mist);
}

.apps-list-card__desc {
  margin: var(--blora-space-3) 0 0;
  font-size: var(--blora-text-sm);
  color: var(--blora-ink-light);
  line-height: var(--blora-leading-normal);
}

.apps-list-card__meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--blora-space-2);
  align-items: center;
  margin-top: var(--blora-space-3);
}

.apps-list-card__side {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: var(--blora-space-3);
  min-width: 7rem;
}

.apps-table-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--blora-space-2);
  justify-content: flex-end;
}

.apps-table-actions .blora-btn {
  border-radius: var(--blora-radius-full);
}

.apps-manifest-url {
  word-break: break-all;
  font-family: var(--blora-font-mono);
  font-size: var(--blora-text-xs);
  color: var(--blora-ink-mist);
}

.apps-manifest-url a {
  color: var(--blora-seal);
}

/* Breadcrumb polish */
.apps-page .blora-breadcrumb {
  margin-bottom: var(--blora-space-6);
  padding: var(--blora-space-2) var(--blora-space-4);
  display: inline-flex;
  border-radius: var(--blora-radius-full);
  background: color-mix(in srgb, var(--blora-surface-1) 80%, transparent);
  border: 1px solid var(--blora-ink-ghost);
}

/* Navbar brand as link */
a.blora-navbar__brand {
  text-decoration: none;
  color: inherit;
}

/* Studio floating nav: slightly tighter product chrome */
body.blora-page .blora-navbar--floating {
  box-shadow: var(--blora-shadow-2);
}

/* Soft panels on detail/admin */
.apps-detail .blora-panel,
.apps-detail .blora-card,
.apps-form.blora-panel {
  border-radius: var(--blora-radius-xl);
  box-shadow: var(--blora-shadow-2);
  background: color-mix(in srgb, var(--blora-surface-1) 94%, transparent);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

.apps-detail .blora-card__title {
  font-family: var(--blora-font-sans);
  letter-spacing: -0.01em;
}

.blora-table-wrap {
  border-radius: var(--blora-radius-xl);
  overflow: hidden;
  border: 1px solid var(--blora-ink-ghost);
  box-shadow: var(--blora-shadow-1);
  background: var(--blora-surface-1);
}

/* Empty / result states sit on soft glass */
.apps-page .blora-empty,
.apps-page .blora-result {
  border-radius: var(--blora-radius-xl);
  background: color-mix(in srgb, var(--blora-surface-1) 80%, transparent);
  border: 1px solid var(--blora-ink-ghost);
  box-shadow: var(--blora-shadow-1);
}

/* Footer */
.apps-footer {
  margin-top: var(--blora-space-10);
  padding: var(--blora-space-6) var(--blora-space-5);
  border-top: 1px solid var(--blora-ink-ghost);
  display: flex;
  flex-wrap: wrap;
  gap: var(--blora-space-4);
  align-items: center;
  justify-content: space-between;
  color: var(--blora-ink-mist);
  font-size: var(--blora-text-sm);
}

.apps-footer a {
  color: var(--blora-ink-light);
  text-decoration: none;
  border-radius: var(--blora-radius-full);
  padding: 0.25em 0.6em;
  transition:
    color var(--blora-dur-fast) var(--blora-ease),
    background var(--blora-dur-fast) var(--blora-ease);
}

.apps-footer a:hover {
  color: var(--blora-seal);
  background: color-mix(in srgb, var(--blora-seal) 8%, transparent);
}

.apps-footer__links {
  display: flex;
  flex-wrap: wrap;
  gap: var(--blora-space-1);
  align-items: center;
}

/* —— Shared mobile layout (all store pages) —— */
@media (max-width: 720px) {
  /* Navbar: brand + auth on first row, menu full-width below */
  .blora-navbar {
    flex-wrap: wrap;
    row-gap: var(--blora-space-2);
    column-gap: var(--blora-space-2);
  }

  .blora-navbar__menu {
    order: 3;
    flex: 1 1 100%;
    justify-content: flex-start;
    flex-wrap: wrap;
    gap: var(--blora-space-1);
    min-width: 0;
  }

  .blora-navbar__link {
    white-space: nowrap;
    padding: 0.35em 0.75em;
    border-radius: var(--blora-radius-full);
  }

  .blora-navbar__brand {
    min-width: 0;
    flex: 1 1 auto;
  }

  .blora-navbar__brand span:last-child {
    font-size: var(--blora-text-base);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .blora-navbar__menu a[href*="github.com"] {
    display: none;
  }

  #nav-auth-slot {
    flex: 0 1 auto;
    max-width: 100%;
    justify-content: flex-end;
  }

  #nav-auth-slot .blora-btn--ghost[href="/apps/submit"],
  #nav-auth-slot .blora-btn--ghost[href="/apps/mine"] {
    display: none;
  }

  .apps-page {
    padding-top: calc(var(--blora-space-9) + var(--blora-space-6));
    padding-bottom: var(--blora-space-8);
  }

  .apps-page.blora-container,
  .blora-container.apps-page {
    padding-inline: var(--blora-space-4);
  }

  .apps-hero {
    margin-bottom: var(--blora-space-5);
  }

  .apps-hero .blora-h1 {
    font-size: clamp(1.75rem, 7vw, 2.25rem);
    line-height: 1.2;
    word-break: break-word;
  }

  .apps-hero .blora-text-lead {
    font-size: var(--blora-text-base);
  }

  .apps-hero__meta {
    gap: var(--blora-space-2);
  }

  .apps-stats {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--blora-space-2);
    margin-bottom: var(--blora-space-5);
  }

  .apps-stats .blora-stat {
    padding: var(--blora-space-3);
  }

  .apps-stats .blora-stat__value {
    font-size: var(--blora-text-xl);
  }

  .apps-stats .blora-stat__label {
    font-size: var(--blora-text-xs);
  }

  /* Index / admin toolbar */
  .apps-toolbar {
    flex-direction: column;
    align-items: stretch;
    padding: var(--blora-space-3);
    border-radius: var(--blora-radius-xl);
    gap: var(--blora-space-2);
  }

  .apps-toolbar .blora-search {
    flex: 1 1 auto;
    min-width: 0;
    width: 100%;
  }

  .apps-toolbar .blora-select {
    flex: 1 1 auto;
    width: 100%;
    max-width: none;
    min-width: 0;
  }

  .apps-toolbar .blora-btn {
    width: 100%;
    justify-content: center;
  }

  .apps-toolbar .blora-segmented {
    width: 100%;
    display: flex;
    flex-wrap: wrap;
    justify-content: stretch;
  }

  .apps-toolbar .blora-segmented__item {
    flex: 1 1 auto;
    text-align: center;
    min-width: 0;
    padding: 0.45em 0.5em;
  }

  .apps-grid {
    grid-template-columns: 1fr;
    gap: var(--blora-space-4);
  }

  a.apps-plugin-card:hover {
    transform: none;
  }

  .apps-list-card {
    grid-template-columns: 1fr;
  }

  .apps-list-card__side {
    align-items: stretch;
    flex-direction: column;
    flex-wrap: nowrap;
    min-width: 0;
    width: 100%;
  }

  .apps-list-card__side .apps-table-actions {
    width: 100%;
    justify-content: stretch;
  }

  .apps-list-card__side .apps-table-actions .blora-btn {
    flex: 1 1 auto;
    justify-content: center;
  }

  .apps-list-card__id {
    word-break: break-all;
  }

  .apps-footer {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--blora-space-3);
    padding: var(--blora-space-5) 0;
  }

  .apps-page .blora-breadcrumb {
    max-width: 100%;
    flex-wrap: wrap;
    row-gap: var(--blora-space-1);
  }

  /* Detail hero */
  .apps-detail-hero {
    flex-direction: column;
    padding: var(--blora-space-4);
    gap: var(--blora-space-4);
  }

  .apps-detail-hero__main {
    width: 100%;
    flex: 1 1 auto;
  }

  .apps-detail-hero__actions {
    width: 100%;
    min-width: 0;
  }

  .apps-detail-hero__sub {
    word-break: break-word;
  }

  .apps-detail-hero__title {
    font-size: clamp(1.5rem, 6.5vw, 2rem);
    word-break: break-word;
  }

  .apps-shots__item {
    width: min(82vw, 280px);
  }

  .apps-related__grid {
    grid-template-columns: 1fr;
  }

  .apps-form {
    padding: var(--blora-space-5);
    border-radius: var(--blora-radius-lg);
  }

  .apps-form__actions {
    flex-direction: column;
  }

  .apps-form__actions .blora-btn {
    width: 100%;
    justify-content: center;
  }

  .apps-perm-checks {
    grid-template-columns: 1fr;
  }

  .apps-perm-checks .blora-checkbox {
    border-radius: var(--blora-radius-lg);
  }

  .apps-review-item__time {
    margin-left: 0;
    width: 100%;
  }

  .apps-review-replies {
    padding-left: var(--blora-space-3);
  }

  .apps-info-list li {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.15rem;
  }

  .apps-info-list__v {
    text-align: left;
  }

  .apps-lightbox {
    padding: var(--blora-space-3);
  }

  .apps-lightbox__close {
    top: var(--blora-space-3);
    right: var(--blora-space-3);
  }
}

@media (max-width: 640px) {
  .apps-nav-username {
    display: none;
  }

  .apps-nav-user {
    padding: 0.1rem;
  }

  /* Hide secondary nav labels when logged in — still available via menu / footer */
  #nav-auth-slot > a.blora-btn--ghost[href="/apps/admin"] {
    display: none;
  }

  .apps-page {
    padding-top: calc(var(--blora-space-10) + var(--blora-space-5));
  }

  .apps-page.blora-container,
  .blora-container.apps-page {
    padding-inline: var(--blora-space-3);
  }

  .apps-stats {
    grid-template-columns: 1fr;
  }

  .apps-stats .blora-stat {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: var(--blora-space-3);
  }

  .apps-stats .blora-stat__value {
    font-size: var(--blora-text-2xl);
  }

  .apps-detail-hero__main {
    flex-direction: column;
    align-items: stretch;
  }

  .apps-detail-hero__icon,
  .apps-detail-hero__icon-fallback {
    width: 72px;
    height: 72px;
    font-size: var(--blora-text-2xl);
  }

  .apps-detail-hero__rating {
    gap: var(--blora-space-2);
  }

  .apps-plugin-card__head {
    gap: var(--blora-space-3);
  }

  .apps-plugin-card__icon,
  .apps-plugin-card__icon-fallback {
    width: 44px;
    height: 44px;
  }

  .apps-form {
    padding: var(--blora-space-4);
  }

  .apps-form__section--import {
    padding: var(--blora-space-4);
  }

  .apps-media-row {
    flex-direction: column;
  }

  .apps-shots-editor {
    grid-template-columns: 1fr 1fr;
  }

  .apps-rating-summary__avg {
    font-size: 2.5rem;
  }

  .apps-review-item {
    padding: var(--blora-space-3);
  }

  .apps-list-card {
    padding: var(--blora-space-4);
  }

  .apps-footer__links {
    width: 100%;
  }

  .apps-footer__links a {
    padding: 0.35em 0.5em;
  }

  /* Prevent long mono / URLs from forcing horizontal scroll */
  .apps-page,
  .apps-detail-page,
  .apps-list-card,
  .apps-form {
    overflow-wrap: anywhere;
  }

  .apps-page code,
  .apps-manifest-url,
  .apps-detail-hero__sub {
    overflow-wrap: anywhere;
    word-break: break-word;
  }
}

/* Narrow phones */
@media (max-width: 380px) {
  .blora-navbar__brand span:last-child {
    max-width: 7.5rem;
  }

  .apps-shots-editor {
    grid-template-columns: 1fr;
  }

  .apps-toolbar .blora-segmented__item {
    font-size: 0.7rem;
  }
}

/* Notched devices: keep chrome clear of safe areas */
@supports (padding: max(0px)) {
  body.blora-page .blora-navbar--floating {
    top: max(var(--blora-navbar-inset, var(--blora-space-2)), env(safe-area-inset-top, 0px));
  }

  @media (max-width: 720px) {
    .apps-page.blora-container,
    .blora-container.apps-page {
      padding-inline: max(var(--blora-space-4), env(safe-area-inset-left, 0px), env(safe-area-inset-right, 0px));
      padding-bottom: max(var(--blora-space-8), env(safe-area-inset-bottom, 0px));
    }
  }

  @media (max-width: 640px) {
    .apps-page.blora-container,
    .blora-container.apps-page {
      padding-inline: max(var(--blora-space-3), env(safe-area-inset-left, 0px), env(safe-area-inset-right, 0px));
    }
  }
}

@media (prefers-reduced-motion: reduce) {
  a.apps-plugin-card {
    transition: none;
  }

  a.apps-plugin-card:hover {
    transform: none;
  }
}

/* —— App Store–style detail —— */
.apps-detail-hero {
  display: flex;
  flex-wrap: wrap;
  gap: var(--blora-space-6);
  align-items: flex-start;
  padding: var(--blora-space-6);
  margin-bottom: var(--blora-space-6);
  background: var(--blora-surface-1);
  border: 1px solid var(--blora-ink-ghost);
  border-radius: var(--blora-radius-xl);
  box-shadow: var(--blora-shadow-1);
}

.apps-detail-hero__main {
  display: flex;
  gap: var(--blora-space-5);
  align-items: flex-start;
  flex: 1 1 16rem;
  min-width: 0;
}

.apps-detail-hero__icon {
  width: 112px;
  height: 112px;
  border-radius: 22%;
  object-fit: cover;
  background: var(--blora-surface-2);
  border: 1px solid var(--blora-ink-ghost);
  flex-shrink: 0;
  box-shadow: var(--blora-shadow-2);
}

.apps-detail-hero__icon-fallback {
  width: 112px;
  height: 112px;
  border-radius: 22%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: color-mix(in srgb, var(--blora-seal) 14%, var(--blora-surface-1));
  color: var(--blora-seal);
  font-weight: 700;
  font-size: var(--blora-text-4xl);
  flex-shrink: 0;
  border: 1px solid color-mix(in srgb, var(--blora-seal) 22%, transparent);
}

.apps-detail-hero__title {
  margin: 0 0 var(--blora-space-2);
  letter-spacing: -0.03em;
  line-height: 1.15;
}

.apps-detail-hero__sub {
  color: var(--blora-ink-mid);
  font-size: var(--blora-text-sm);
  margin-bottom: var(--blora-space-3);
}

.apps-detail-hero__rating {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--blora-space-3);
  margin-bottom: var(--blora-space-3);
  font-size: var(--blora-text-sm);
  color: var(--blora-ink-mid);
}

.apps-detail-hero__score {
  font-weight: 700;
  color: var(--blora-ink);
  font-variant-numeric: tabular-nums;
}

.apps-detail-hero__actions {
  display: flex;
  flex-direction: column;
  gap: var(--blora-space-2);
  flex: 0 0 auto;
  min-width: 11rem;
}

.apps-detail-hero__actions .blora-btn {
  width: 100%;
  justify-content: center;
}

.apps-shots {
  margin-bottom: var(--blora-space-7);
}

.apps-shots__title {
  margin: 0 0 var(--blora-space-3);
  font-size: var(--blora-text-lg);
  font-weight: 600;
}

.apps-shots__scroller {
  display: flex;
  gap: var(--blora-space-4);
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  padding-bottom: var(--blora-space-2);
  -webkit-overflow-scrolling: touch;
}

.apps-shots__scroller::-webkit-scrollbar {
  height: 6px;
}

.apps-shots__item {
  flex: 0 0 auto;
  width: min(72vw, 320px);
  aspect-ratio: 16 / 10;
  border-radius: var(--blora-radius-lg);
  overflow: hidden;
  scroll-snap-align: start;
  border: 1px solid var(--blora-ink-ghost);
  background: var(--blora-surface-2);
  cursor: zoom-in;
  padding: 0;
}

.apps-shots__item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.apps-detail-body {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--blora-space-6);
  align-items: start;
}

@media (min-width: 900px) {
  .apps-detail-body {
    grid-template-columns: minmax(0, 1fr) 300px;
  }

  .apps-detail-aside {
    position: sticky;
    top: calc(var(--blora-space-10) + var(--blora-space-6));
  }
}

.apps-detail-section {
  margin-bottom: var(--blora-space-6);
}

.apps-detail-section__title {
  margin: 0 0 var(--blora-space-3);
  font-size: var(--blora-text-lg);
  font-weight: 600;
}

.apps-detail-prose {
  color: var(--blora-ink-mid);
  line-height: 1.7;
  white-space: pre-wrap;
  word-break: break-word;
}

.apps-rating-panel {
  display: grid;
  gap: var(--blora-space-5);
}

@media (min-width: 720px) {
  .apps-rating-panel {
    grid-template-columns: 220px minmax(0, 1fr);
  }
}

.apps-rating-summary {
  text-align: center;
  padding: var(--blora-space-4);
  background: var(--blora-surface-2);
  border-radius: var(--blora-radius-lg);
  border: 1px solid var(--blora-ink-ghost);
}

.apps-rating-summary__avg {
  font-size: 3rem;
  font-weight: 700;
  line-height: 1;
  letter-spacing: -0.04em;
  font-variant-numeric: tabular-nums;
}

.apps-rating-summary__count {
  margin-top: var(--blora-space-2);
  font-size: var(--blora-text-xs);
  color: var(--blora-ink-mist);
}

.apps-rating-bars {
  display: grid;
  gap: 0.35rem;
  margin-top: var(--blora-space-4);
  text-align: left;
}

.apps-rating-bar {
  display: grid;
  grid-template-columns: 1.2rem 1fr 2rem;
  gap: var(--blora-space-2);
  align-items: center;
  font-size: var(--blora-text-xs);
  color: var(--blora-ink-mist);
}

.apps-rating-bar__track {
  height: 6px;
  border-radius: 999px;
  background: var(--blora-ink-ghost);
  overflow: hidden;
}

.apps-rating-bar__fill {
  height: 100%;
  border-radius: inherit;
  background: var(--blora-seal);
}

.apps-review-form {
  padding: var(--blora-space-4);
  border: 1px solid var(--blora-ink-ghost);
  border-radius: var(--blora-radius-lg);
  background: var(--blora-surface-1);
  margin-bottom: var(--blora-space-4);
}

.apps-review-form .blora-textarea {
  margin-top: var(--blora-space-3);
}

.apps-review-list {
  display: grid;
  gap: var(--blora-space-3);
}

.apps-review-item {
  padding: var(--blora-space-4);
  border: 1px solid var(--blora-ink-ghost);
  border-radius: var(--blora-radius-lg);
  background: var(--blora-surface-1);
}

.apps-review-item__head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--blora-space-2) var(--blora-space-3);
  margin-bottom: var(--blora-space-2);
}

.apps-review-item__user {
  font-weight: 600;
}

.apps-review-item__time {
  font-size: var(--blora-text-xs);
  color: var(--blora-ink-mist);
  margin-left: auto;
}

.apps-review-item__body {
  color: var(--blora-ink-mid);
  line-height: 1.6;
  white-space: pre-wrap;
  word-break: break-word;
}

.apps-review-item__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--blora-space-2);
  margin-top: var(--blora-space-3);
}

.apps-review-replies {
  margin-top: var(--blora-space-3);
  padding-left: var(--blora-space-4);
  border-left: 2px solid var(--blora-ink-ghost);
  display: grid;
  gap: var(--blora-space-3);
}

.apps-review-reply {
  padding: var(--blora-space-3);
  border-radius: var(--blora-radius-md);
  background: var(--blora-surface-0, var(--blora-bg));
}

.apps-review-reply__head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--blora-space-2);
  margin-bottom: var(--blora-space-1);
}

.apps-review-reply__user {
  font-weight: 600;
  font-size: var(--blora-text-sm);
}

.apps-review-reply__time {
  font-size: var(--blora-text-xs);
  color: var(--blora-ink-mist);
  margin-left: auto;
}

.apps-review-reply__body {
  color: var(--blora-ink-mid);
  line-height: 1.55;
  white-space: pre-wrap;
  word-break: break-word;
  font-size: var(--blora-text-sm);
}

.apps-review-reply-form {
  margin-top: var(--blora-space-3);
  display: none;
}

.apps-review-reply-form.is-open {
  display: block;
}

.apps-review-reply-form .blora-textarea {
  margin-bottom: var(--blora-space-2);
  min-height: 4.5rem;
}

.apps-info-list {
  display: grid;
  gap: var(--blora-space-3);
  margin: 0;
  padding: 0;
  list-style: none;
}

.apps-info-list li {
  display: flex;
  justify-content: space-between;
  gap: var(--blora-space-3);
  font-size: var(--blora-text-sm);
}

.apps-info-list__k {
  color: var(--blora-ink-mist);
}

.apps-info-list__v {
  color: var(--blora-ink);
  text-align: right;
  word-break: break-all;
}

.apps-related {
  margin-top: var(--blora-space-8);
}

.apps-related__title {
  margin: 0 0 var(--blora-space-4);
  font-size: var(--blora-text-xl);
  font-weight: 600;
}

.apps-related__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: var(--blora-space-4);
}

.apps-plugin-card__rating {
  display: flex;
  align-items: center;
  gap: var(--blora-space-2);
  font-size: var(--blora-text-xs);
  color: var(--blora-ink-mist);
  margin-top: var(--blora-space-2);
}

/* Star ratings: selected = clear yellow (minimal palette gold is too muted) */
.apps-stars-inline {
  display: inline-flex;
  gap: 1px;
  letter-spacing: 0.02em;
  line-height: 1;
}

.apps-stars-inline .is-on {
  color: #f5b301;
}

.apps-stars-inline .is-off {
  color: var(--blora-ink-ghost);
  opacity: 1;
}

/* Interactive / blora-rate widgets on store pages */
.blora-scope .blora-rate__star {
  color: var(--blora-ink-ghost);
}

.blora-scope .blora-rate__star.is-on {
  color: #f5b301;
}

.blora-dark .blora-scope .blora-rate__star.is-on,
.blora-dark .apps-stars-inline .is-on {
  color: #ffcc33;
}

/* lightbox */
.apps-lightbox {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--blora-space-6);
  background: rgba(0, 0, 0, 0.72);
  backdrop-filter: blur(6px);
}

.apps-lightbox[hidden] {
  display: none !important;
}

.apps-lightbox img {
  max-width: min(96vw, 1100px);
  max-height: 88vh;
  border-radius: var(--blora-radius-md);
  box-shadow: var(--blora-shadow-3);
  object-fit: contain;
}

.apps-lightbox__close {
  position: absolute;
  top: var(--blora-space-4);
  right: var(--blora-space-4);
}

/* plugin.json import */
.apps-form__section--import {
  border: 1px dashed color-mix(in srgb, var(--blora-seal) 35%, var(--blora-ink-ghost));
  border-radius: var(--blora-radius-lg);
  padding: var(--blora-space-5);
  background: color-mix(in srgb, var(--blora-seal) 4%, var(--blora-surface-1));
}

.apps-mono,
#field-plugin-json {
  font-family: var(--blora-font-mono, 'JetBrains Mono', ui-monospace, monospace);
  font-size: var(--blora-text-sm);
  line-height: 1.5;
}

/* submit media editor */
.apps-media-row {
  display: flex;
  gap: var(--blora-space-4);
  align-items: flex-start;
}

.apps-media-preview--icon {
  width: 72px;
  height: 72px;
  border-radius: 20%;
  background: var(--blora-surface-2);
  border: 1px solid var(--blora-ink-ghost);
  overflow: hidden;
  flex-shrink: 0;
  background-size: cover;
  background-position: center;
}

.apps-media-controls {
  flex: 1;
  min-width: 0;
}

.apps-shots-editor {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  gap: var(--blora-space-3);
}

.apps-shot-chip {
  border: 1px solid var(--blora-ink-ghost);
  border-radius: var(--blora-radius-md);
  overflow: hidden;
  background: var(--blora-surface-1);
}

.apps-shot-chip__img {
  aspect-ratio: 16 / 10;
  background: var(--blora-surface-2) center/cover no-repeat;
}

.apps-shot-chip__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem;
  padding: var(--blora-space-2);
}

.apps-shot-chip__actions .blora-btn {
  flex: 1;
  min-width: 0;
  padding-inline: 0.35rem;
  font-size: 0.7rem;
}
