/* ScanPeek visitor design system v1.
   Loaded only by public location, object, exhibit, history and route pages.
   Do not apply to the ScanPeek landing page or /admin. */
body.scanpeek-visitor {
  --bg: #f2ede5;
  --surface: #faf7f2;
  --surface-2: #edf1f4;
  --text: #22324d;
  --muted: #53606b;
  --line: #d5dadd;
  --accent: #22324d;
  --accent-hover: #304769;
  --accent-soft: #e6f3fa;
  --accent-text: #ffffff;
  --visitor-blue: #126d92; /* AA for normal text on the warm background */
  --visitor-cyan: #38bdf8; /* decorative accent, not body text */
  --shadow: 0 18px 50px rgba(34, 50, 77, 0.07);
  --shadow-soft: 0 8px 26px rgba(34, 50, 77, 0.045);
  background:
    radial-gradient(circle at 90% 0%, rgba(56, 189, 248, 0.08), transparent 28rem),
    var(--bg);
  color: var(--text);
}

/* Preserve the existing editorial typefaces and page layouts. */
body.scanpeek-visitor .public-guide,
body.scanpeek-visitor .location-page,
body.scanpeek-visitor .route-page,
body.scanpeek-visitor .sp-floorplan {
  color: var(--text);
}
body.scanpeek-visitor .public-guide .public-hero > h1,
body.scanpeek-visitor .public-guide .public-exhibit-header > h1,
body.scanpeek-visitor .public-guide .history-page-header > h1,
body.scanpeek-visitor .route-page .route-hero > h1,
body.scanpeek-visitor .location-page .location-hero-copy > h1,
body.scanpeek-visitor .public-guide .public-section-heading h2,
body.scanpeek-visitor .public-guide .object-guide-gate h2,
body.scanpeek-visitor .public-guide .public-audio-copy h2,
body.scanpeek-visitor .location-page .location-section-heading h2,
body.scanpeek-visitor .location-page .location-place-card h3,
body.scanpeek-visitor .location-page .location-route-copy h3,
body.scanpeek-visitor .route-page .route-stops-heading h2,
body.scanpeek-visitor .sp-floorplan-intro h2 {
  color: var(--text);
}
body.scanpeek-visitor .public-guide .eyebrow,
body.scanpeek-visitor .public-guide .section-label,
body.scanpeek-visitor .location-page .eyebrow,
body.scanpeek-visitor .location-page .section-label,
body.scanpeek-visitor .route-page .eyebrow,
body.scanpeek-visitor .route-page .section-label,
body.scanpeek-visitor .sp-floorplan-index-top,
body.scanpeek-visitor .sp-floorplan-level,
body.scanpeek-visitor .public-exhibit-number {
  color: var(--visitor-blue);
}
body.scanpeek-visitor .public-guide .lead,
body.scanpeek-visitor .public-guide .public-description > p,
body.scanpeek-visitor .public-guide .history-page-content > p,
body.scanpeek-visitor .public-guide .object-guide-gate p,
body.scanpeek-visitor .location-page .location-hero-copy > p,
body.scanpeek-visitor .location-page .location-place-card p,
body.scanpeek-visitor .location-page .location-route-copy p,
body.scanpeek-visitor .route-page .route-hero > .lead,
body.scanpeek-visitor .route-page .route-qr-copy p {
  color: var(--muted);
}

/* Buttons and keyboard focus: clear contrast and comfortable hit areas. */
body.scanpeek-visitor .primary-button {
  border-color: var(--accent);
  background: var(--accent);
  color: #fff;
}
body.scanpeek-visitor .primary-button:hover {
  border-color: var(--accent-hover);
  background: var(--accent-hover);
}
body.scanpeek-visitor .secondary-button {
  border-color: #cbd5db;
  background: rgba(255, 255, 255, 0.68);
  color: var(--text);
}
body.scanpeek-visitor .secondary-button:hover {
  border-color: #8fa4b4;
  background: #fff;
}
body.scanpeek-visitor :is(a, button, input, textarea):focus-visible {
  outline: 3px solid var(--visitor-blue);
  outline-offset: 3px;
}

/* Visitor cards, gallery surrounds and navigation. Existing dimensions stay. */
body.scanpeek-visitor .location-hero-copy,
body.scanpeek-visitor .location-share-card,
body.scanpeek-visitor .location-place-card,
body.scanpeek-visitor .location-route-card,
body.scanpeek-visitor .route-hero,
body.scanpeek-visitor .route-qr-card,
body.scanpeek-visitor .public-description,
body.scanpeek-visitor .history-page-content,
body.scanpeek-visitor .object-guide-gate,
body.scanpeek-visitor .public-nav-card,
body.scanpeek-visitor .public-exhibit-card {
  border-color: var(--line);
  background-color: rgba(250, 247, 242, 0.92);
  box-shadow: var(--shadow-soft);
}
body.scanpeek-visitor .public-exhibit-card:hover,
body.scanpeek-visitor .public-nav-card:not(.is-disabled):hover,
body.scanpeek-visitor .location-place-card:focus-within,
body.scanpeek-visitor .location-route-card:focus-within {
  border-color: #9bb6c7;
  box-shadow: 0 10px 28px rgba(34, 50, 77, 0.09);
}
body.scanpeek-visitor .public-exhibit-content strong,
body.scanpeek-visitor .public-nav-card:not(.is-disabled) strong {
  color: var(--text);
}
body.scanpeek-visitor .public-gallery-swipe-dot.is-active {
  background: var(--visitor-blue);
}
body.scanpeek-visitor .public-gallery-swipe-dot:not(.is-active) {
  background: rgba(34, 50, 77, 0.28);
}
body.scanpeek-visitor .public-gallery-more,
body.scanpeek-visitor .public-gallery-thumb {
  border-color: var(--line);
}
body.scanpeek-visitor .public-gallery-swipe-slide:focus-visible,
body.scanpeek-visitor .public-gallery-main:focus-visible {
  outline-color: var(--visitor-blue);
}

/* Audio keeps its original controls and JS handlers, but uses the new palette. */
body.scanpeek-visitor .public-audio-card {
  border-color: #c5d5dd;
  background:
    radial-gradient(circle at 94% 0%, rgba(56, 189, 248, 0.10), transparent 17rem),
    #f8f7f3;
  box-shadow: var(--shadow-soft);
}
body.scanpeek-visitor .custom-audio-player {
  border-color: #d2dfe6;
  background: rgba(255, 255, 255, 0.83);
}
body.scanpeek-visitor .audio-play-button {
  background: var(--accent);
  color: #fff;
}
body.scanpeek-visitor .audio-play-button:hover {
  background: var(--accent-hover);
}
body.scanpeek-visitor .audio-progress {
  accent-color: var(--visitor-blue);
}
body.scanpeek-visitor .audio-skip-row button {
  border-color: var(--line);
  color: var(--text);
}
body.scanpeek-visitor .audio-skip-row button:hover {
  border-color: #8fa4b4;
  background: #eef5f8;
}
body.scanpeek-visitor .audio-time-row {
  color: var(--muted);
}

/* Location / route metadata and access indicators. */
body.scanpeek-visitor .location-route-meta span,
body.scanpeek-visitor .route-meta span,
body.scanpeek-visitor .museum-route-badge,
body.scanpeek-visitor .guide-lock-mark,
body.scanpeek-visitor .location-lock-note {
  background: #e7f0f5;
  color: var(--text);
}
body.scanpeek-visitor .access-badge.public {
  background: #e6f2ee;
  color: #2d6354;
}
body.scanpeek-visitor .access-badge.locked {
  background: #e7edf3;
  color: #354b67;
}
body.scanpeek-visitor .route-stop-access {
  color: var(--muted);
}

/* Technology museum: keep floor-plan geometry, update interactive accents only. */
body.scanpeek-visitor .sp-floorplan-layout {
  border-color: var(--line);
  background: #fbfaf7;
}
body.scanpeek-visitor .sp-floorplan-canvas {
  background: #f0f1f0;
}
body.scanpeek-visitor .sp-floorplan-index {
  border-color: var(--line);
}
body.scanpeek-visitor .sp-floorplan-item {
  border-color: #e4e7e8;
  color: var(--text);
}
body.scanpeek-visitor .sp-floorplan-item:hover,
body.scanpeek-visitor .sp-floorplan-item:focus-visible {
  color: var(--visitor-blue);
}
body.scanpeek-visitor .sp-floorplan-item-number {
  border-color: #d4e0e7;
  background: #e6f3fa;
  color: var(--text);
}
body.scanpeek-visitor .sp-floorplan-pin {
  background: var(--accent);
  box-shadow: 0 5px 15px rgba(34, 50, 77, 0.2);
}
body.scanpeek-visitor .sp-floorplan-pin:hover,
body.scanpeek-visitor .sp-floorplan-pin:focus-visible {
  background: #126d92;
  box-shadow: 0 8px 20px rgba(34, 50, 77, 0.24);
}
body.scanpeek-visitor .sp-floorplan-intro p,
body.scanpeek-visitor .sp-floorplan-disclaimer {
  color: var(--muted);
}

/* On narrow phones the skip controls remain at least 44px tall.
   Do not enlarge the player grid or change its audio behavior. */
@media (max-width: 560px) {
  body.scanpeek-visitor .audio-skip-row button {
    min-width: 0;
    min-height: 44px;
  }
  body.scanpeek-visitor .public-exhibit-navigation .public-nav-card {
    min-height: 56px;
  }
}
@media (prefers-reduced-motion: reduce) {
  body.scanpeek-visitor .public-exhibit-card,
  body.scanpeek-visitor .public-nav-card,
  body.scanpeek-visitor .audio-play-button {
    transition: none;
  }
}
