.object-dialog{width:min(42rem,calc(100% - 2rem));max-width:none;border:1px solid hsl(var(--border));border-radius:.65rem;padding:0;background:hsl(var(--card));color:hsl(var(--foreground));box-shadow:0 24px 80px hsl(var(--foreground)/.22)}.object-dialog::backdrop{background:rgba(0,0,0,.58);backdrop-filter:blur(2px)}.object-dialog__panel{padding:1.5rem}.object-dialog__panel textarea{resize:vertical}.object-dialog__panel [data-dialog-close],.object-dialog__panel [data-suggestion-close]{cursor:pointer}.object-map__fallback{margin-top:1rem;padding:1rem;border:1px dashed hsl(var(--border));border-radius:.4rem;color:hsl(var(--muted-foreground))}.object-actions form{margin:0}.object-comments article:last-child{border-bottom:0}.admin-artwork-form textarea{resize:vertical}

/* The identifier/navigation strip must stay below the fixed 5rem site navbar.
   A sticky child cannot outlive a non-sticky parent, so keep the outer bar in
   the viewport as the containing block and pin the inner row at the same 5rem
   offset. The site navbar remains above it at z-50. */
.object-id-bar{position:sticky;top:0;z-index:45}
.object-id-bar__inner{position:sticky;top:5rem;z-index:1}

/* Leaflet gives its panes comparatively high z-index values. Keep those panes
   inside the map's own stacking context so they cannot paint over the sticky
   object identifier/navigation bar while the page is scrolled. */
.object-map{position:relative;z-index:0;isolation:isolate}
.object-map__canvas,.object-map .leaflet-container{position:relative;z-index:0}

.object-result-navigation{display:flex;align-items:center;justify-content:flex-end;gap:.7rem;font-size:.82rem}.object-result-navigation a{display:inline-flex;align-items:center;min-height:2rem;border:1px solid hsl(var(--gold)/.24);border-radius:.4rem;padding:.35rem .6rem;color:inherit;text-decoration:none}.object-result-navigation a:hover{border-color:hsl(var(--gold));color:hsl(var(--gold))}.object-result-navigation [data-result-position]{min-width:3.4rem;text-align:center;color:hsl(var(--muted-foreground));font-variant-numeric:tabular-nums}.object-suggest-link{margin-left:.55rem;border:0;padding:0;background:transparent;color:hsl(var(--gold));font:500 .72rem var(--font-body);cursor:pointer;text-decoration:underline;text-underline-offset:3px}.object-suggest-link:hover{color:hsl(var(--foreground))}
.object-missing-suggestions{border:1px solid hsl(var(--gold)/.24);border-radius:.65rem;padding:1rem;background:hsl(var(--gold)/.045)}.object-missing-suggestions summary{cursor:pointer;font:600 1rem var(--font-heading);color:hsl(var(--foreground))}.object-missing-suggestions>p{margin:.6rem 0 1rem;color:hsl(var(--muted-foreground));font-size:.85rem}.object-missing-suggestions__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem}.object-missing-suggestions__grid button{display:flex;align-items:center;justify-content:space-between;gap:.75rem;border:1px solid hsl(var(--border));border-radius:.45rem;padding:.6rem .7rem;background:hsl(var(--card));color:hsl(var(--foreground));text-align:left;cursor:pointer}.object-missing-suggestions__grid button:hover{border-color:hsl(var(--gold));background:hsl(var(--gold)/.08)}.object-missing-suggestions__grid span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.object-missing-suggestions__grid strong{flex:0 0 auto;color:hsl(var(--gold));font-size:.72rem}
@media(max-width:767px){.object-result-navigation{position:fixed;z-index:45;left:.75rem;right:.75rem;bottom:.75rem;display:grid;grid-template-columns:1fr auto 1fr;gap:.5rem;border:1px solid hsl(var(--gold)/.3);border-radius:.65rem;padding:.55rem;background:hsl(var(--surface-dark)/.96);color:hsl(var(--cream-on-dark));box-shadow:0 18px 50px rgba(0,0,0,.28);backdrop-filter:blur(10px)}.object-result-navigation [data-result-previous]{grid-column:1}.object-result-navigation [data-result-position]{grid-column:2;align-self:center;color:hsl(var(--cream-on-dark)/.68)}.object-result-navigation [data-result-next]{grid-column:3}.object-result-navigation [data-result-previous],.object-result-navigation [data-result-next]{justify-self:stretch;justify-content:center;width:100%}.object-result-navigation a{border-color:hsl(var(--gold)/.35);color:hsl(var(--cream-on-dark))}.object-missing-suggestions__grid{grid-template-columns:1fr}}
.object-missing-suggestions--prominent{border-color:hsl(var(--gold)/.72);background:hsl(var(--gold)/.1);box-shadow:0 0 0 2px hsl(var(--gold)/.12)}
.object-missing-suggestions__grid button.object-missing-suggestion--prominent{border:2px solid hsl(var(--gold));background:hsl(var(--gold));color:hsl(var(--surface-dark));font-weight:700;box-shadow:0 0 0 3px hsl(var(--gold)/.2)}
.object-missing-suggestions__grid button.object-missing-suggestion--prominent:hover{border-color:hsl(var(--foreground));background:hsl(var(--gold)/.86);color:hsl(var(--surface-dark))}
.object-missing-suggestions__grid button.object-missing-suggestion--prominent strong{color:inherit;font-size:1rem;font-weight:800;letter-spacing:.01em;text-decoration:underline;text-underline-offset:3px}


.object-own-suggestions {
  border: 1px solid hsl(var(--border));
  border-radius: .65rem;
  padding: 1rem;
  background: hsl(var(--muted) / .32);
}

.object-own-suggestions summary {
  cursor: pointer;
  font: 600 1rem var(--font-heading);
}

.object-own-suggestions > p {
  margin: .6rem 0 1rem;
  color: hsl(var(--muted-foreground));
  font-size: .85rem;
}

.object-own-suggestions ul {
  display: grid;
  gap: .65rem;
}

.object-own-suggestions li {
  border-radius: .5rem;
  padding: .75rem;
  background: hsl(var(--card));
}

.object-own-suggestions li > div {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
}

.object-own-suggestions li p {
  margin-top: .35rem;
  white-space: pre-line;
}

.object-own-suggestions li small {
  display: block;
  margin-top: .35rem;
  color: hsl(var(--muted-foreground));
}

.object-own-suggestions__status {
  border-radius: 999px;
  padding: .2rem .55rem;
  background: hsl(var(--gold) / .16);
  color: hsl(var(--foreground));
  font-size: .72rem;
  font-weight: 700;
  text-transform: capitalize;
}

/* Object-detail follow-up: separate the missing-data panel from the first
   metadata section and make the thumbnail rail layout-only. These rules live
   in this versioned stylesheet so an older cached page-specific gallery CSS
   cannot reintroduce the shared card background. */
.object-missing-suggestions {
  margin-bottom: 1.75rem;
}

.object-gallery-card {
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  overflow: visible !important;
}

.object-gallery,
.object-gallery__stage,
.object-gallery__thumbs {
  background: transparent !important;
}

.object-gallery__caption {
  border: 1px solid hsl(var(--border));
  border-radius: .55rem;
  background: hsl(var(--card)) !important;
}

/* Fine-pointer users get a true hover magnifier over the primary image. The
   custom lens-loop cursor stays as the affordance, while the circular overlay
   renders a 2.5x view of the exact source point beneath the pointer. */
.object-gallery__main {
  grid-template-rows: minmax(0, 1fr) !important;
  padding: 0 !important;
  cursor: url("/cursors/magnify-loop.svg") 16 16, zoom-in !important;
}

.object-gallery__hover-lens {
  position: absolute;
  z-index: 3;
  width: 136px;
  height: 136px;
  border: 2px solid hsl(var(--gold));
  border-radius: 9999px;
  transform: translate(-50%, -50%);
  background-color: hsl(var(--background));
  background-repeat: no-repeat;
  box-shadow:
    0 0 0 2px hsl(var(--background) / .8),
    0 .55rem 1.5rem rgb(0 0 0 / .28);
  pointer-events: none;
  will-change: left, top, background-position;
}

.object-gallery__hover-lens[hidden] {
  display: none !important;
}

@media (hover: none), (pointer: coarse) {
  .object-gallery__hover-lens {
    display: none !important;
  }
}

.object-gallery__enlarge-hint {
  display: none !important;
}

.object-gallery__enlarge-row {
  display: flex;
  justify-content: flex-end;
  margin-top: .6rem;
}

.object-gallery__enlarge-button {
  display: inline-flex;
  min-height: 2.25rem;
  align-items: center;
  justify-content: center;
  border: 1px solid hsl(var(--gold) / .55);
  border-radius: 9999px;
  padding: .42rem .78rem;
  background: hsl(var(--background));
  color: hsl(var(--foreground));
  font: 600 .76rem/1 var(--font-body);
  cursor: pointer;
  transition: border-color 150ms ease, background-color 150ms ease, color 150ms ease;
}

.object-gallery__enlarge-button:hover {
  border-color: hsl(var(--gold));
  background: hsl(var(--gold) / .1);
}

.object-gallery__enlarge-button:focus-visible {
  outline: 2px solid hsl(var(--gold));
  outline-offset: 3px;
}

/* Linked archive identifiers are actionable records, so present them as the
   same pill/chip language used elsewhere in the archive. The wrapper created
   by archive-interactions.js keeps adjacent punctuation with the chip. */
.object-reference-inline {
  white-space: nowrap;
}

[data-related-archive-reference] {
  display: inline-flex;
  align-items: center;
  margin: .08rem .08rem .08rem 0;
  border: 1px solid hsl(var(--gold) / .5);
  border-radius: 9999px;
  padding: .14rem .48rem;
  background: hsl(var(--gold) / .08);
  color: hsl(var(--foreground));
  font-size: .92em;
  line-height: 1.25;
  text-decoration: none !important;
  vertical-align: baseline;
  white-space: nowrap;
  transition: border-color 150ms ease, background-color 150ms ease;
}

[data-related-archive-reference]:hover {
  border-color: hsl(var(--gold));
  background: hsl(var(--gold) / .16);
  color: hsl(var(--foreground));
}

/* The legacy Tags field is comma-delimited. Present each stored tag as a
   discrete search action without changing the underlying tag value or search. */
.object-tag-chips {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .5rem;
}

.object-tag-chip {
  text-decoration: none;
}