:root {
  color-scheme: dark;
  --bg: #090a0d;
  --bg-soft: #11131a;
  --panel: #151821;
  --panel-soft: #1d2230;
  --border: #343b4f;
  --text: #f1f3f7;
  --muted: #b8c0ce;
  --button-bg: #252c3d;
  --button-hover: #31394e;
  --button-text: #f3f5f8;
  --accent: #b83245;
  --accent-soft: rgba(184, 50, 69, 0.18);
  --shadow: 0 18px 60px rgba(0, 0, 0, 0.34);
  --page-bg-overlay: rgba(0, 0, 0, 0.34);
  --page-bg-vignette: rgba(0, 0, 0, 0.78);
}

:root[data-theme="light"] {
  color-scheme: light;
  --bg: #f4f1ea;
  --bg-soft: #ebe4d8;
  --panel: #fffaf0;
  --panel-soft: #f4eadc;
  --border: #d7cab8;
  --text: #1f2024;
  --muted: #65615a;
  --button-bg: #eadfcd;
  --button-hover: #ded0bc;
  --button-text: #1f2024;
  --accent: #8f2636;
  --accent-soft: rgba(143, 38, 54, 0.12);
  --shadow: 0 18px 45px rgba(60, 42, 24, 0.13);
  --page-bg-overlay: rgba(244, 241, 234, 0.42);
  --page-bg-vignette: rgba(244, 241, 234, 0.64);
}

* { box-sizing: border-box; }

body {
  margin: 0;
  min-height: 100vh;
  background: var(--bg);
  color: var(--text);
  font-family: "Yu Gothic", "YuGothic", "Hiragino Kaku Gothic ProN", Meiryo, system-ui, sans-serif;
  line-height: 1.72;
}

a { color: inherit; }

.site-header {
  position: sticky;
  top: 0;
  z-index: 20;
  background: color-mix(in srgb, var(--bg) 86%, transparent);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--border);
}

.site-header__inner {
  max-width: 1180px;
  margin: 0 auto;
  padding: 12px 20px;
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: center;
  gap: 18px;
}

.site-logo {
  font-weight: 800;
  text-decoration: none;
  letter-spacing: 0.03em;
  white-space: nowrap;
}

.site-nav {
  display: flex;
  gap: 10px;
  justify-content: flex-end;
  align-items: center;
  flex-wrap: wrap;
}

.nav-item { position: relative; }

.nav-button,
.tag-button {
  border: 1px solid var(--border);
  background: var(--button-bg);
  color: var(--button-text);
  border-radius: 999px;
  text-decoration: none;
  padding: 8px 14px;
  font: inherit;
  line-height: 1.2;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 36px;
  white-space: nowrap;
}

.theme-toggle { cursor: pointer; }

.nav-button:hover,
.nav-button:focus-visible,
.tag-button:hover,
.tag-button:focus-visible,
.dropdown-menu a:hover,
.dropdown-menu a:focus-visible {
  background: var(--button-hover);
}

.nav-button:focus-visible,
.tag-button:focus-visible,
.dropdown-menu a:focus-visible {
  outline: 2px solid var(--muted);
  outline-offset: 2px;
}

.dropdown-menu {
  position: absolute;
  top: calc(100% + 8px);
  left: 50%;
  transform: translateX(-50%);
  min-width: 172px;
  display: grid;
  gap: 8px;
  padding: 10px;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: var(--panel);
  box-shadow: var(--shadow);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity .16s ease, visibility .16s ease, transform .16s ease;
}

.has-dropdown:hover .dropdown-menu,
.has-dropdown:focus-within .dropdown-menu {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translateX(-50%) translateY(2px);
}

.dropdown-menu a {
  display: block;
  padding: 8px 10px;
  border-radius: 10px;
  color: var(--button-text);
  text-decoration: none;
  white-space: nowrap;
}

.site-main {
  max-width: 1180px;
  margin: 0 auto;
  padding: 26px 20px 54px;
}

.hero-grid {
  display: grid;
  grid-template-columns: minmax(300px, 0.8fr) minmax(420px, 1.2fr);
  gap: 18px;
  align-items: stretch;
  margin-bottom: 18px;
}

.panel {
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 20px;
  box-shadow: var(--shadow);
  padding: 18px;
}

.panel--hero {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: 220px;
  overflow: hidden;
  padding-top: 46px;
}
.hero-last-updated {
  position: absolute;
  top: 14px;
  right: 16px;
  color: var(--muted);
  font-size: 0.85rem;
  border: 1px solid var(--border);
  border-radius: 999px;
  padding: 4px 10px;
  background: var(--panel-soft);
}

.hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 16px;
}

.hero-action-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 38px;
  padding: 8px 16px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--button-bg);
  color: var(--button-text);
  text-decoration: none;
  font-weight: 700;
}

.hero-action-button:hover,
.hero-action-button:focus-visible {
  background: var(--button-hover);
}

.page-panel {
  max-width: 900px;
  margin: 0 auto;
}

.page-title {
  font-size: 1.7rem;
  white-space: normal;
}


.eyebrow {
  color: var(--muted);
  margin: 0 0 8px;
  font-size: 0.92rem;
}

h1 {
  margin: 0;
  font-size: clamp(2rem, 3.2vw, 2.85rem);
  line-height: 1.08;
  letter-spacing: 0.01em;
  white-space: nowrap;
}

.hero-copy {
  margin: 14px 0 0;
  color: var(--muted);
}

.panel-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
}

.panel-heading h2,
.date-card h3,
.message-card h3 {
  margin: 0;
  line-height: 1.35;
}

.panel-heading h2 { font-size: 1.18rem; }

.map-frame {
  width: 100%;
  height: 420px;
  overflow: hidden;
  border-radius: 14px;
  border: 1px solid var(--border);
  background: var(--panel-soft);
}

.map-frame iframe {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
}

.home-stack {
  display: grid;
  gap: 18px;
}

.date-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 14px;
}

.info-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
  align-items: start;
}

.date-card {
  position: relative;
  background: var(--panel-soft);
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 18px;
}

.date-card h3 {
  display: inline-block;
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 999px;
  padding: 5px 12px;
  font-size: 0.95rem;
  color: var(--muted);
}

.update-list {
  display: grid;
  gap: 12px;
  margin-top: 14px;
}

.update-item {
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 14px;
}

.update-item__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 8px;
}

.tag-button {
  min-height: 30px;
  font-size: 0.86rem;
  padding: 6px 12px;
}

.spot-link {
  display: inline-block;
  font-size: 1.1rem;
  font-weight: 800;
  text-decoration: none;
  color: var(--text);
}

.spot-link:hover,
.spot-link:focus-visible {
  text-decoration: underline;
  text-underline-offset: 0.18em;
}

.visit-message,
.empty-text,
.simple-list,
.message-card p {
  color: var(--muted);
}

.visit-message { margin: 6px 0 0; }
.empty-text { margin: 0; }

.simple-list {
  margin: 0;
  padding-left: 1.2em;
}

.simple-list li + li { margin-top: 8px; }
.list-date { font-weight: 700; color: var(--text); margin-right: 0.4em; }

.message-card + .message-card { margin-top: 12px; }
.message-card p { margin: 8px 0 0; }

.site-footer {
  max-width: 1180px;
  margin: 0 auto;
  padding: 0 20px 26px;
  color: var(--muted);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  flex-wrap: wrap;
}

.site-footer__links {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px 18px;
  flex-wrap: wrap;
  font-size: .82rem;
}

.site-footer__links a {
  color: var(--muted);
  text-underline-offset: .2em;
}

.site-footer__links a:hover,
.site-footer__links a:focus-visible { color: var(--text); }


/* NV0.0.2b: corner-only frame treatment and foreground update overlay */
.map-frame--wide,
.update-date-card,
.update-detail-popover,
.update-place-card,
.plan-card,
.message-card,
.affiliate-good-card {
  position: relative;
  border: 0;
  border-radius: 0;
  background: color-mix(in srgb, var(--glass-soft) 74%, transparent);
}

.map-frame--wide::before,
.update-date-card::before,
.update-detail-popover::before,
.update-place-card::before,
.plan-card::before,
.message-card::before,
.affiliate-good-card::before,
.map-frame--wide::after,
.update-date-card::after,
.update-detail-popover::after,
.update-place-card::after,
.plan-card::after,
.message-card::after,
.affiliate-good-card::after {
  content: "";
  position: absolute;
  width: 34px;
  height: 34px;
  pointer-events: none;
  z-index: 2;
}

.map-frame--wide::before,
.update-date-card::before,
.update-detail-popover::before,
.update-place-card::before,
.plan-card::before,
.message-card::before,
.affiliate-good-card::before {
  top: 0;
  left: 0;
  border-top: 4px solid var(--corner-line);
  border-left: 4px solid var(--corner-line);
}

.map-frame--wide::after,
.update-date-card::after,
.update-detail-popover::after,
.update-place-card::after,
.plan-card::after,
.message-card::after,
.affiliate-good-card::after {
  right: 0;
  bottom: 0;
  border-right: 4px solid var(--corner-line);
  border-bottom: 4px solid var(--corner-line);
}

.update-date-grid.is-showing-popover {
  z-index: 160;
}

.update-detail-popover {
  min-height: 100%;
}

.update-detail-popover__head,
.update-place-list {
  position: relative;
  z-index: 3;
}

.update-place-list {
  max-height: none;
  overflow: visible;
}

.update-place-card {
  box-shadow: none;
}

.update-date-card:hover,
.update-date-card:focus-visible,
.update-date-card[aria-expanded="true"],
.update-place-card:hover,
.update-place-card:focus-visible,
.affiliate-good-card--link:hover {
  background: color-mix(in srgb, var(--glass-soft) 58%, var(--button-hover));
}

.home-section {
  position: relative;
}

.updates-section {
  z-index: 12;
}

.visit-plan-section,
.admin-message-section,
.affiliate-goods-panel {
  z-index: 1;
}

@media (max-width: 860px) {
  .site-header__inner,
  .hero-grid,
  .info-row {
    grid-template-columns: 1fr;
  }

  .site-nav { justify-content: flex-start; }

  h1 {
    font-size: clamp(1.8rem, 9vw, 2.7rem);
    white-space: normal;
  }

  .map-frame { height: 360px; }

  .dropdown-menu {
    left: 0;
    transform: none;
  }

  .has-dropdown:hover .dropdown-menu,
  .has-dropdown:focus-within .dropdown-menu {
    transform: translateY(2px);
  }
}

@media (max-width: 520px) {
  .hero-last-updated { position: static; align-self: flex-start; margin-bottom: 10px; }
  .panel--hero { padding-top: 14px; }
  .site-main { padding: 18px 12px 40px; }
  .site-header__inner { padding: 12px; }
  .panel { padding: 14px; border-radius: 16px; }
  .map-frame { height: 300px; }
}

/* NV0.0.0d: top page update carousel */
.updates-panel {
  position: relative;
}

.updates-carousel {
  position: relative;
}

.updates-carousel__controls {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin: -4px 0 10px;
}

.arrow-button,
.mini-arrow-button {
  border: 1px solid var(--border);
  background: var(--button-bg);
  color: var(--button-text);
  border-radius: 999px;
  cursor: pointer;
  font: inherit;
  line-height: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.arrow-button {
  min-width: 42px;
  min-height: 34px;
  padding: 7px 12px;
  font-size: 1rem;
}

.mini-arrow-button {
  min-width: 30px;
  min-height: 28px;
  padding: 5px 8px;
  font-size: 0.9rem;
}

.arrow-button:hover,
.arrow-button:focus-visible,
.mini-arrow-button:hover,
.mini-arrow-button:focus-visible {
  background: var(--button-hover);
}

.arrow-button:focus-visible,
.mini-arrow-button:focus-visible {
  outline: 2px solid var(--muted);
  outline-offset: 2px;
}

.updates-viewport {
  overflow: hidden;
  scroll-behavior: smooth;
}

.updates-panel .date-row {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: calc((100% - 14px) / 2);
  grid-template-columns: none;
  gap: 14px;
}

.date-card__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 14px;
}

.item-scroll-controls {
  display: inline-flex;
  gap: 6px;
  flex: 0 0 auto;
}

.update-list-viewport {
  overflow: hidden;
  scroll-behavior: smooth;
  max-height: calc((112px * 3) + (12px * 2));
}

.date-card .update-list {
  margin-top: 0;
}

.info-row {
  align-items: stretch;
}

.info-row > .panel {
  height: 100%;
}


/* NV0.0.2b: corner-only frame treatment and foreground update overlay */
.map-frame--wide,
.update-date-card,
.update-detail-popover,
.update-place-card,
.plan-card,
.message-card,
.affiliate-good-card {
  position: relative;
  border: 0;
  border-radius: 0;
  background: color-mix(in srgb, var(--glass-soft) 74%, transparent);
}

.map-frame--wide::before,
.update-date-card::before,
.update-detail-popover::before,
.update-place-card::before,
.plan-card::before,
.message-card::before,
.affiliate-good-card::before,
.map-frame--wide::after,
.update-date-card::after,
.update-detail-popover::after,
.update-place-card::after,
.plan-card::after,
.message-card::after,
.affiliate-good-card::after {
  content: "";
  position: absolute;
  width: 34px;
  height: 34px;
  pointer-events: none;
  z-index: 2;
}

.map-frame--wide::before,
.update-date-card::before,
.update-detail-popover::before,
.update-place-card::before,
.plan-card::before,
.message-card::before,
.affiliate-good-card::before {
  top: 0;
  left: 0;
  border-top: 4px solid var(--corner-line);
  border-left: 4px solid var(--corner-line);
}

.map-frame--wide::after,
.update-date-card::after,
.update-detail-popover::after,
.update-place-card::after,
.plan-card::after,
.message-card::after,
.affiliate-good-card::after {
  right: 0;
  bottom: 0;
  border-right: 4px solid var(--corner-line);
  border-bottom: 4px solid var(--corner-line);
}

.update-date-grid.is-showing-popover {
  z-index: 160;
}

.update-detail-popover {
  min-height: 100%;
}

.update-detail-popover__head,
.update-place-list {
  position: relative;
  z-index: 3;
}

.update-place-list {
  max-height: none;
  overflow: visible;
}

.update-place-card {
  box-shadow: none;
}

.update-date-card:hover,
.update-date-card:focus-visible,
.update-date-card[aria-expanded="true"],
.update-place-card:hover,
.update-place-card:focus-visible,
.affiliate-good-card--link:hover {
  background: color-mix(in srgb, var(--glass-soft) 58%, var(--button-hover));
}

.home-section {
  position: relative;
}

.updates-section {
  z-index: 12;
}

.visit-plan-section,
.admin-message-section,
.affiliate-goods-panel {
  z-index: 1;
}

@media (max-width: 860px) {
  .updates-panel .date-row {
    grid-auto-columns: 100%;
  }
}

/* NV0.0.0e: dropdown usability and non-intrusive ad slots */
body.has-bottom-ad {
  padding-bottom: 86px;
}

.has-dropdown {
  position: relative;
}

.has-dropdown::after {
  content: "";
  position: absolute;
  left: -10px;
  right: -10px;
  top: 100%;
  height: 14px;
}

.dropdown-menu {
  top: calc(100% + 6px);
  z-index: 50;
}

.has-dropdown:hover .dropdown-menu,
.has-dropdown:focus-within .dropdown-menu {
  transform: translateX(-50%);
}

.ad-label {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 22px;
  padding: 3px 9px;
  border: 1px solid var(--border);
  border-radius: 999px;
  color: var(--muted);
  font-size: 0.78rem;
  line-height: 1.1;
}

.side-ad {
  position: fixed;
  top: 96px;
  width: 118px;
  min-height: 440px;
  padding: 34px 10px 14px;
  border: 1px solid var(--border);
  border-radius: 16px;
  background: color-mix(in srgb, var(--panel) 94%, transparent);
  box-shadow: var(--shadow);
  color: var(--muted);
  text-align: center;
  z-index: 12;
}

.side-ad--left {
  left: max(12px, calc((100vw - 1180px) / 2 - 142px));
}

.side-ad--right {
  right: max(12px, calc((100vw - 1180px) / 2 - 142px));
}

.side-ad p {
  margin: 18px 0 0;
  font-size: 0.9rem;
}

.ad-close {
  position: absolute;
  top: 8px;
  right: 8px;
  width: 24px;
  height: 24px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--button-bg);
  color: var(--button-text);
  cursor: pointer;
  line-height: 1;
}

.ad-close:hover,
.ad-close:focus-visible,
.bottom-ad__toggle:hover,
.bottom-ad__toggle:focus-visible {
  background: var(--button-hover);
}

.bottom-ad {
  position: fixed;
  left: 50%;
  bottom: 10px;
  transform: translateX(-50%);
  width: min(860px, calc(100vw - 32px));
  min-height: 58px;
  padding: 10px 48px 10px 18px;
  border: 1px solid var(--border);
  border-radius: 18px;
  background: color-mix(in srgb, var(--panel) 96%, transparent);
  box-shadow: var(--shadow);
  z-index: 15;
}

.bottom-ad__body {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  min-height: 36px;
  color: var(--muted);
}

.bottom-ad__toggle {
  position: absolute;
  top: 10px;
  right: 12px;
  width: 32px;
  height: 32px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--button-bg);
  color: var(--button-text);
  cursor: pointer;
  line-height: 1;
}

.bottom-ad.is-collapsed {
  width: auto;
  min-height: 42px;
  padding: 8px 52px 8px 16px;
}

.bottom-ad.is-collapsed .bottom-ad__body {
  display: none;
}

[hidden] {
  display: none !important;
}

@media (max-width: 1500px) {
  .side-ad {
    display: none;
  }
}


/* NV0.0.2b: corner-only frame treatment and foreground update overlay */
.map-frame--wide,
.update-date-card,
.update-detail-popover,
.update-place-card,
.plan-card,
.message-card,
.affiliate-good-card {
  position: relative;
  border: 0;
  border-radius: 0;
  background: color-mix(in srgb, var(--glass-soft) 74%, transparent);
}

.map-frame--wide::before,
.update-date-card::before,
.update-detail-popover::before,
.update-place-card::before,
.plan-card::before,
.message-card::before,
.affiliate-good-card::before,
.map-frame--wide::after,
.update-date-card::after,
.update-detail-popover::after,
.update-place-card::after,
.plan-card::after,
.message-card::after,
.affiliate-good-card::after {
  content: "";
  position: absolute;
  width: 34px;
  height: 34px;
  pointer-events: none;
  z-index: 2;
}

.map-frame--wide::before,
.update-date-card::before,
.update-detail-popover::before,
.update-place-card::before,
.plan-card::before,
.message-card::before,
.affiliate-good-card::before {
  top: 0;
  left: 0;
  border-top: 4px solid var(--corner-line);
  border-left: 4px solid var(--corner-line);
}

.map-frame--wide::after,
.update-date-card::after,
.update-detail-popover::after,
.update-place-card::after,
.plan-card::after,
.message-card::after,
.affiliate-good-card::after {
  right: 0;
  bottom: 0;
  border-right: 4px solid var(--corner-line);
  border-bottom: 4px solid var(--corner-line);
}

.update-date-grid.is-showing-popover {
  z-index: 160;
}

.update-detail-popover {
  min-height: 100%;
}

.update-detail-popover__head,
.update-place-list {
  position: relative;
  z-index: 3;
}

.update-place-list {
  max-height: none;
  overflow: visible;
}

.update-place-card {
  box-shadow: none;
}

.update-date-card:hover,
.update-date-card:focus-visible,
.update-date-card[aria-expanded="true"],
.update-place-card:hover,
.update-place-card:focus-visible,
.affiliate-good-card--link:hover {
  background: color-mix(in srgb, var(--glass-soft) 58%, var(--button-hover));
}

.home-section {
  position: relative;
}

.updates-section {
  z-index: 12;
}

.visit-plan-section,
.admin-message-section,
.affiliate-goods-panel {
  z-index: 1;
}

@media (max-width: 860px) {
  body.has-bottom-ad { padding-bottom: 72px; }

  .has-dropdown:hover .dropdown-menu,
  .has-dropdown:focus-within .dropdown-menu {
    transform: none;
  }

  .bottom-ad {
    width: min(520px, calc(100vw - 20px));
    bottom: 8px;
    border-radius: 14px;
  }
}

/* NV0.0.1a: visit plans and admin message viewer */
.plan-list {
  display: grid;
  gap: 12px;
}

.plan-card,
.message-card {
  border: 1px solid var(--border);
  background: var(--panel-soft);
  border-radius: 14px;
  padding: 14px;
}

.plan-card__date {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 4px 10px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--panel);
  color: var(--muted);
  font-size: 0.9rem;
  font-weight: 700;
}

.plan-card__spot {
  margin-top: 10px;
  font-size: 1.08rem;
  font-weight: 800;
}

.plan-card__spot a {
  text-decoration: none;
}

.plan-card__spot a:hover,
.plan-card__spot a:focus-visible {
  text-decoration: underline;
  text-underline-offset: 0.18em;
}

.plan-card__visit {
  margin-top: 6px;
  color: var(--muted);
}

.message-viewer {
  position: relative;
}

.message-nav {
  position: absolute;
  top: -48px;
  right: 0;
  display: inline-flex;
  gap: 6px;
}

.message-viewport {
  overflow: hidden;
  scroll-behavior: smooth;
}

.message-track {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: 100%;
  gap: 12px;
}

.message-card {
  margin: 0;
  min-width: 0;
}

.message-card__head {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 10px;
  align-items: start;
  margin-bottom: 10px;
}

.message-card__head time {
  color: var(--muted);
  font-size: 0.88rem;
  white-space: nowrap;
}

.message-card__body {
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--panel);
  padding: 12px;
}

.message-card__body p {
  margin: 0;
}


/* NV0.0.1b: clearer arrows and expedition tags */
.arrow-button,
.mini-arrow-button {
  font-family: system-ui, "Yu Gothic", "YuGothic", Meiryo, sans-serif;
  font-weight: 800;
  line-height: 1;
  aspect-ratio: 1 / 1;
}

.mini-arrow-button {
  min-width: 36px;
  min-height: 36px;
  padding: 0;
  font-size: 1.05rem;
}

.message-nav {
  top: -52px;
  gap: 8px;
}

.plan-card__top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
}

.plan-expedition-tag {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 4px 10px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--button-bg);
  color: var(--button-text);
  font-size: 0.86rem;
  font-weight: 800;
  white-space: nowrap;
}

.plan-spots {
  display: grid;
  gap: 10px;
  margin-top: 10px;
}

.plan-spot-row {
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--panel);
  padding: 10px 12px;
}

.plan-card__spot {
  margin-top: 0;
}

/* NV0.0.1c: affiliate goods / protection equipment section */
.affiliate-goods-panel {
  position: relative;
}

.affiliate-goods-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
}

.affiliate-good-card {
  min-width: 0;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: var(--panel-soft);
  overflow: hidden;
  display: grid;
  grid-template-rows: 132px auto auto;
}


.affiliate-good-card--link {
  color: inherit;
  text-decoration: none;
  transition: transform 0.15s ease, border-color 0.15s ease, background 0.15s ease;
}

.affiliate-good-card--link:hover {
  transform: translateY(-2px);
  border-color: var(--accent);
  background: var(--panel);
}

.affiliate-good-card--link:focus-visible {
  outline: 3px solid var(--accent);
  outline-offset: 3px;
}

.affiliate-good-card__image {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 132px;
  border-bottom: 1px solid var(--border);
  background: var(--panel);
  color: var(--muted);
  font-size: 0.88rem;
  text-align: center;
}

.affiliate-good-card__image img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
  padding: 8px;
}

.affiliate-good-card__name {
  min-height: 58px;
  padding: 10px 12px 4px;
  font-weight: 800;
  line-height: 1.45;
  word-break: break-word;
}

.affiliate-good-card__price {
  padding: 0 12px 12px;
  color: var(--muted);
  font-weight: 800;
}

.affiliate-goods-note {
  margin: 12px 0 0;
  color: var(--muted);
  font-size: 0.86rem;
  text-align: right;
}


/* NV0.0.2b: corner-only frame treatment and foreground update overlay */
.map-frame--wide,
.update-date-card,
.update-detail-popover,
.update-place-card,
.plan-card,
.message-card,
.affiliate-good-card {
  position: relative;
  border: 0;
  border-radius: 0;
  background: color-mix(in srgb, var(--glass-soft) 74%, transparent);
}

.map-frame--wide::before,
.update-date-card::before,
.update-detail-popover::before,
.update-place-card::before,
.plan-card::before,
.message-card::before,
.affiliate-good-card::before,
.map-frame--wide::after,
.update-date-card::after,
.update-detail-popover::after,
.update-place-card::after,
.plan-card::after,
.message-card::after,
.affiliate-good-card::after {
  content: "";
  position: absolute;
  width: 34px;
  height: 34px;
  pointer-events: none;
  z-index: 2;
}

.map-frame--wide::before,
.update-date-card::before,
.update-detail-popover::before,
.update-place-card::before,
.plan-card::before,
.message-card::before,
.affiliate-good-card::before {
  top: 0;
  left: 0;
  border-top: 4px solid var(--corner-line);
  border-left: 4px solid var(--corner-line);
}

.map-frame--wide::after,
.update-date-card::after,
.update-detail-popover::after,
.update-place-card::after,
.plan-card::after,
.message-card::after,
.affiliate-good-card::after {
  right: 0;
  bottom: 0;
  border-right: 4px solid var(--corner-line);
  border-bottom: 4px solid var(--corner-line);
}

.update-date-grid.is-showing-popover {
  z-index: 160;
}

.update-detail-popover {
  min-height: 100%;
}

.update-detail-popover__head,
.update-place-list {
  position: relative;
  z-index: 3;
}

.update-place-list {
  max-height: none;
  overflow: visible;
}

.update-place-card {
  box-shadow: none;
}

.update-date-card:hover,
.update-date-card:focus-visible,
.update-date-card[aria-expanded="true"],
.update-place-card:hover,
.update-place-card:focus-visible,
.affiliate-good-card--link:hover {
  background: color-mix(in srgb, var(--glass-soft) 58%, var(--button-hover));
}

.home-section {
  position: relative;
}

.updates-section {
  z-index: 12;
}

.visit-plan-section,
.admin-message-section,
.affiliate-goods-panel {
  z-index: 1;
}

@media (max-width: 860px) {
  .affiliate-goods-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 520px) {
  .affiliate-goods-grid {
    grid-template-columns: 1fr;
  }
  .affiliate-goods-note {
    text-align: left;
  }
}

/* NV0.0.2: logo-first transparent top page redesign */
:root {
  --glass: rgba(21, 24, 33, 0.54);
  --glass-soft: rgba(29, 34, 48, 0.42);
  --glass-border: rgba(197, 181, 155, 0.34);
  --corner-line: rgba(218, 201, 170, 0.74);
}

:root[data-theme="light"] {
  --glass: rgba(255, 250, 240, 0.58);
  --glass-soft: rgba(244, 234, 220, 0.46);
  --glass-border: rgba(122, 96, 72, 0.28);
  --corner-line: rgba(92, 68, 48, 0.62);
}

.site-main {
  max-width: 1180px;
  padding-top: 22px;
}

.top-logo-section {
  margin: 0 auto 24px;
  text-align: center;
}

.top-logo-image {
  display: block;
  width: min(100%, 1120px);
  height: auto;
  max-height: 520px;
  object-fit: contain;
  margin: 0 auto;
  filter: drop-shadow(0 18px 40px rgba(0, 0, 0, .32));
}

.mobile-top-search-links {
  display: none;
}

.home-section {
  margin: 0 0 28px;
  padding: 0;
  background: transparent;
  border: 0;
  box-shadow: none;
}

.section-head {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 12px;
}

.section-head h1,
.section-head h2 {
  margin: 0;
  color: var(--text);
  font-size: clamp(1.25rem, 2.2vw, 1.85rem);
  letter-spacing: .04em;
  white-space: normal;
}

.section-note {
  margin: 0;
  color: var(--muted);
  font-size: .9rem;
}

.last-updated-pill,
.update-chip,
.plan-expedition-tag {
  border: 1px solid var(--glass-border);
  background: var(--glass-soft);
  color: var(--text);
  border-radius: 999px;
  padding: 5px 11px;
  line-height: 1.2;
  backdrop-filter: blur(8px);
}

.last-updated-pill {
  color: var(--muted);
  font-size: .86rem;
  white-space: nowrap;
}

.map-frame--wide {
  height: min(54vw, 520px);
  min-height: 360px;
  border: 1px solid var(--glass-border);
  border-radius: 18px;
  background: var(--glass-soft);
  box-shadow: var(--shadow);
}

.update-date-grid {
  position: relative;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
  isolation: isolate;
}

.update-date-card {
  min-height: 112px;
  border: 1px solid var(--glass-border);
  border-radius: 18px;
  background: var(--glass);
  color: var(--text);
  box-shadow: var(--shadow);
  padding: 18px;
  cursor: pointer;
  font: inherit;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  text-align: left;
  backdrop-filter: blur(8px);
  transition: transform .16s ease, background .16s ease, border-color .16s ease;
}

.update-date-card:hover,
.update-date-card:focus-visible,
.update-date-card[aria-expanded="true"] {
  transform: translateY(-2px);
  background: color-mix(in srgb, var(--glass) 72%, var(--button-hover));
  border-color: color-mix(in srgb, var(--accent) 46%, var(--glass-border));
}

.update-date-card:focus-visible {
  outline: 3px solid var(--muted);
  outline-offset: 3px;
}

.update-date-card span {
  font-weight: 800;
  font-size: clamp(1rem, 1.8vw, 1.25rem);
}

.update-date-card strong {
  font-size: 1.6rem;
  color: var(--muted);
  white-space: nowrap;
}

.update-detail-popover {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  z-index: 120;
  border: 0;
  border-radius: 0;
  background: color-mix(in srgb, var(--bg) 72%, transparent);
  box-shadow: 0 24px 80px rgba(0,0,0,.54);
  padding: 22px;
  backdrop-filter: blur(14px);
  overflow: visible;
  max-height: none;
}

.update-detail-popover[hidden] { display: none; }

.update-detail-popover__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
}

.update-detail-popover__head h3 {
  margin: 0;
  font-size: 1.12rem;
}

.popover-close {
  width: 34px;
  height: 34px;
  border: 1px solid var(--glass-border);
  border-radius: 999px;
  background: var(--glass-soft);
  color: var(--text);
  cursor: pointer;
  font-size: 1.1rem;
  line-height: 1;
}

.popover-close:hover,
.popover-close:focus-visible { background: var(--button-hover); }

.update-place-list {
  display: grid;
  gap: 10px;
}

.update-place-card {
  position: relative;
  display: grid;
  grid-template-columns: minmax(160px, 1fr) auto auto minmax(66px, auto);
  align-items: center;
  gap: 8px;
  min-height: 54px;
  padding: 10px 14px 12px;
  border: 1px solid var(--glass-border);
  border-radius: 14px;
  background: var(--glass-soft);
  color: var(--text);
  text-decoration: none;
}

.update-place-card:hover,
.update-place-card:focus-visible {
  background: var(--button-hover);
}

.update-place-name {
  font-weight: 800;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.update-chip {
  font-size: .84rem;
  padding: 4px 9px;
  white-space: nowrap;
}

.update-visit-label {
  justify-self: end;
  align-self: end;
  font-size: .82rem;
  color: var(--muted);
  white-space: nowrap;
}

.glass-card,
.plan-card,
.message-card,
.affiliate-good-card {
  background: var(--glass-soft);
  border: 1px solid var(--glass-border);
  box-shadow: none;
  backdrop-filter: blur(8px);
}

.plan-list--wide {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.admin-message-section .message-viewer {
  position: relative;
}

.message-viewer--wide .message-viewport {
  overflow: hidden;
  scroll-snap-type: x mandatory;
}

.message-viewer--wide .message-track {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: 100%;
  gap: 14px;
}

.message-viewer--wide .message-card {
  scroll-snap-align: start;
  margin: 0;
}

.message-nav {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin: 0 0 10px;
}

.affiliate-goods-panel {
  background: transparent;
  border: 0;
  box-shadow: none;
  padding: 0;
}

.affiliate-good-card__image {
  background: color-mix(in srgb, var(--glass-soft) 72%, transparent);
}


/* NV0.0.2b: corner-only frame treatment and foreground update overlay */
.map-frame--wide,
.update-date-card,
.update-detail-popover,
.update-place-card,
.plan-card,
.message-card,
.affiliate-good-card {
  position: relative;
  border: 0;
  border-radius: 0;
  background: color-mix(in srgb, var(--glass-soft) 74%, transparent);
}

.map-frame--wide::before,
.update-date-card::before,
.update-detail-popover::before,
.update-place-card::before,
.plan-card::before,
.message-card::before,
.affiliate-good-card::before,
.map-frame--wide::after,
.update-date-card::after,
.update-detail-popover::after,
.update-place-card::after,
.plan-card::after,
.message-card::after,
.affiliate-good-card::after {
  content: "";
  position: absolute;
  width: 34px;
  height: 34px;
  pointer-events: none;
  z-index: 2;
}

.map-frame--wide::before,
.update-date-card::before,
.update-detail-popover::before,
.update-place-card::before,
.plan-card::before,
.message-card::before,
.affiliate-good-card::before {
  top: 0;
  left: 0;
  border-top: 4px solid var(--corner-line);
  border-left: 4px solid var(--corner-line);
}

.map-frame--wide::after,
.update-date-card::after,
.update-detail-popover::after,
.update-place-card::after,
.plan-card::after,
.message-card::after,
.affiliate-good-card::after {
  right: 0;
  bottom: 0;
  border-right: 4px solid var(--corner-line);
  border-bottom: 4px solid var(--corner-line);
}

.update-date-grid.is-showing-popover {
  z-index: 160;
}

.update-detail-popover {
  min-height: 100%;
}

.update-detail-popover__head,
.update-place-list {
  position: relative;
  z-index: 3;
}

.update-place-list {
  max-height: none;
  overflow: visible;
}

.update-place-card {
  box-shadow: none;
}

.update-date-card:hover,
.update-date-card:focus-visible,
.update-date-card[aria-expanded="true"],
.update-place-card:hover,
.update-place-card:focus-visible,
.affiliate-good-card--link:hover {
  background: color-mix(in srgb, var(--glass-soft) 58%, var(--button-hover));
}

.home-section {
  position: relative;
}

.updates-section {
  z-index: 12;
}

.visit-plan-section,
.admin-message-section,
.affiliate-goods-panel {
  z-index: 1;
}

@media (max-width: 860px) {
  .top-logo-image { max-height: 340px; }
  .section-head { align-items: start; flex-direction: column; }
  .update-date-grid,
  .plan-list--wide { grid-template-columns: 1fr; }
  .update-place-card {
    grid-template-columns: 1fr auto;
  }
  .update-chip--pref,
  .update-chip--type { justify-self: start; }
  .update-visit-label { grid-column: 2; grid-row: 2; }
}

@media (max-width: 520px) {
  .top-logo-section { margin-bottom: 16px; }
  .top-logo-image { max-height: 230px; }
  .map-frame--wide { min-height: 300px; height: 70vw; }
  .update-detail-popover { top: 0; left: 0; right: 0; padding: 14px; }
  .update-date-card { min-height: 96px; }
}

/* NV0.0.2 cleanup overrides for transparent cards */
.message-nav {
  position: static;
  top: auto;
  right: auto;
}

.plan-card__date,
.plan-spot-row,
.message-card__body,
.affiliate-good-card__image {
  border-color: var(--glass-border);
  background: var(--glass-soft);
}

.plan-expedition-tag {
  border-color: var(--glass-border);
  background: var(--glass-soft);
}

/* NV0.2.0: plain background and administrator recommendations */
:root {
  --bg: #000;
}

body {
  background: var(--bg);
}

.recommended-section {
  z-index: 2;
}

.recommended-carousel {
  position: relative;
  padding-bottom: 30px;
}

.recommended-viewport {
  overflow: hidden;
}

.recommended-track {
  display: flex;
  width: 100%;
  transition: transform .42s ease;
  will-change: transform;
}

.recommended-slide {
  flex: 0 0 100%;
  min-width: 0;
}

.recommended-card {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 45%) minmax(0, 55%);
  min-height: 330px;
  overflow: hidden;
  color: var(--text);
  background: color-mix(in srgb, var(--panel) 86%, transparent);
  border: 1px solid var(--border);
  transition: background .18s ease, border-color .18s ease;
}

.recommended-card:hover {
  background: color-mix(in srgb, var(--panel) 76%, var(--button-hover));
  border-color: color-mix(in srgb, var(--accent) 60%, var(--border));
}

.recommended-card:focus-within {
  outline: 3px solid var(--muted);
  outline-offset: 3px;
}

.recommended-card__image {
  min-height: 330px;
  display: grid;
  place-items: center;
  overflow: hidden;
  background: #090909;
  color: var(--muted);
  border-right: 1px solid var(--border);
  text-decoration: none;
}

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

.recommended-card__body {
  display: flex;
  min-width: 0;
  padding: clamp(22px, 4vw, 42px);
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  gap: 18px;
}

.recommended-card__name {
  display: block;
  width: 100%;
  max-width: 100%;
  padding: 0 0 10px;
  border: 0;
  border-bottom: 2px solid color-mix(in srgb, var(--accent) 72%, var(--border));
  background: transparent;
  color: var(--text);
  font-weight: 900;
  font-size: clamp(1.12rem, 2vw, 1.5rem);
  line-height: 1.35;
  text-decoration: none;
}

.recommended-card__name:hover,
.recommended-card__name:focus-visible {
  color: color-mix(in srgb, var(--accent) 75%, #fff);
  border-bottom-color: var(--accent);
}

.recommended-card__rating {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 12px;
}

.recommended-card__rating > span:first-child {
  color: var(--muted);
  font-size: .92rem;
  font-weight: 700;
}

.recommended-card__rating strong {
  font-size: 1rem;
}

.recommended-card__tags {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 7px;
  width: 100%;
}

.recommended-card__tags .spot-auto-tag {
  font-size: .78rem;
  padding: 5px 9px;
}

.recommended-card__overview h3 {
  margin: 0 0 7px;
  color: var(--muted);
  font-size: .9rem;
  letter-spacing: .08em;
}

.recommended-card__overview p {
  margin: 0;
  display: -webkit-box;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 5;
  line-clamp: 5;
}

/* NV0.2.2: spot index cards match the recommended-article layout without overview text. */
.spot-index-card-list {
  display: grid;
  gap: 20px;
}

.spot-index-card {
  display: grid;
  grid-template-columns: minmax(220px, 34%) minmax(0, 66%);
  min-height: 230px;
  overflow: hidden;
  color: var(--text);
  background: color-mix(in srgb, var(--panel) 86%, transparent);
  border: 1px solid var(--border);
  transition: background .18s ease, border-color .18s ease;
}

.spot-index-card:hover {
  background: color-mix(in srgb, var(--panel) 76%, var(--button-hover));
  border-color: color-mix(in srgb, var(--accent) 60%, var(--border));
}

.spot-index-card:focus-within {
  outline: 3px solid var(--muted);
  outline-offset: 3px;
}

.spot-index-card__image {
  min-height: 230px;
  display: grid;
  place-items: center;
  overflow: hidden;
  background: #090909;
  color: var(--muted);
  border-right: 1px solid var(--border);
  text-decoration: none;
}

.spot-index-card__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.spot-index-card__body {
  display: flex;
  min-width: 0;
  padding: clamp(20px, 3vw, 34px);
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  gap: 16px;
}

.spot-index-card__name {
  display: block;
  width: 100%;
  padding: 0 0 10px;
  border-bottom: 2px solid color-mix(in srgb, var(--accent) 72%, var(--border));
  color: var(--text);
  font-weight: 900;
  font-size: clamp(1.12rem, 2vw, 1.42rem);
  line-height: 1.35;
  text-decoration: none;
}

.spot-index-card__name:hover,
.spot-index-card__name:focus-visible {
  color: color-mix(in srgb, var(--accent) 75%, #fff);
  border-bottom-color: var(--accent);
}

.spot-index-card__rating {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 12px;
}

.spot-index-card__rating > span:first-child {
  color: var(--muted);
  font-size: .92rem;
  font-weight: 700;
}

.spot-index-card__rating strong {
  font-size: 1rem;
}

.spot-index-card__tags {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 7px;
  width: 100%;
}

.spot-index-card__tags .spot-auto-tag {
  font-size: .78rem;
  padding: 5px 9px;
}

@media (max-width: 720px) {
  .spot-index-card {
    grid-template-columns: 1fr;
  }

  .spot-index-card__image {
    min-height: 190px;
    max-height: 250px;
    border-right: 0;
    border-bottom: 1px solid var(--border);
  }

  .spot-index-card__body {
    padding: 20px;
  }
}

.recommended-arrow {
  position: absolute;
  z-index: 4;
  top: calc(50% - 30px);
  width: 46px;
  height: 58px;
  border: 1px solid var(--border);
  background: rgba(0, 0, 0, .72);
  color: #fff;
  cursor: pointer;
  font: inherit;
  font-size: 2rem;
  line-height: 1;
}

.recommended-arrow:hover,
.recommended-arrow:focus-visible {
  background: color-mix(in srgb, var(--accent) 48%, #000);
}

.recommended-arrow--prev { left: 12px; }
.recommended-arrow--next { right: 12px; }

.recommended-dots {
  position: absolute;
  left: 50%;
  bottom: 7px;
  display: flex;
  gap: 8px;
  transform: translateX(-50%);
}

.recommended-dot {
  width: 9px;
  height: 9px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: #5b5b5b;
  cursor: pointer;
}

.recommended-dot.is-active {
  background: var(--accent);
  transform: scale(1.25);
}

@media (prefers-reduced-motion: reduce) {
  .recommended-track { transition: none; }
}

@media (max-width: 720px) {
  .recommended-card {
    grid-template-columns: 1fr;
    min-height: 0;
  }

  .recommended-card__image {
    min-height: 0;
    height: min(58vw, 330px);
    border-right: 0;
    border-bottom: 1px solid var(--border);
  }

  .recommended-card__body {
    padding: 22px 20px 26px;
    gap: 15px;
  }

  .recommended-arrow {
    top: min(23vw, 135px);
    transform: translateY(-50%);
  }
}

.plan-spot-row { backdrop-filter: blur(8px); }

/* NV0.0.2b final overrides */
:root {
  --corner-line: rgba(218, 201, 170, 0.76);
}

:root[data-theme="light"] {
  --corner-line: rgba(92, 68, 48, 0.62);
}

.map-frame--wide,
.update-date-card,
.update-detail-popover,
.update-place-card,
.plan-card,
.message-card,
.affiliate-good-card {
  position: relative;
  border: 0 !important;
  border-radius: 0 !important;
  background: color-mix(in srgb, var(--glass-soft) 74%, transparent) !important;
}

.map-frame--wide::before,
.update-date-card::before,
.update-detail-popover::before,
.update-place-card::before,
.plan-card::before,
.message-card::before,
.affiliate-good-card::before,
.map-frame--wide::after,
.update-date-card::after,
.update-detail-popover::after,
.update-place-card::after,
.plan-card::after,
.message-card::after,
.affiliate-good-card::after {
  content: "";
  position: absolute;
  width: 34px;
  height: 34px;
  pointer-events: none;
  z-index: 3;
}

.map-frame--wide::before,
.update-date-card::before,
.update-detail-popover::before,
.update-place-card::before,
.plan-card::before,
.message-card::before,
.affiliate-good-card::before {
  top: 0;
  left: 0;
  border-top: 4px solid var(--corner-line);
  border-left: 4px solid var(--corner-line);
}

.map-frame--wide::after,
.update-date-card::after,
.update-detail-popover::after,
.update-place-card::after,
.plan-card::after,
.message-card::after,
.affiliate-good-card::after {
  right: 0;
  bottom: 0;
  border-right: 4px solid var(--corner-line);
  border-bottom: 4px solid var(--corner-line);
}

.update-date-grid {
  position: relative;
}

.update-date-grid.is-showing-popover,
.updates-section:has(.update-date-grid.is-showing-popover) {
  z-index: 300;
}

.update-detail-popover {
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  bottom: auto !important;
  inset: auto 0 auto 0 !important;
  min-height: 100% !important;
  height: auto !important;
  max-height: none !important;
  overflow: visible !important;
  z-index: 320 !important;
  padding: 22px !important;
  box-shadow: 0 28px 90px rgba(0, 0, 0, .58) !important;
  backdrop-filter: blur(14px);
}

.update-place-list {
  max-height: none !important;
  overflow: visible !important;
}

.update-detail-popover__head,
.update-place-list,
.update-place-card > * {
  position: relative;
  z-index: 4;
}

.update-date-card:hover,
.update-date-card:focus-visible,
.update-date-card[aria-expanded="true"],
.update-place-card:hover,
.update-place-card:focus-visible,
.affiliate-good-card--link:hover {
  background: color-mix(in srgb, var(--glass-soft) 58%, var(--button-hover)) !important;
}


/* NV0.0.2c: make top-page cards fully transparent for future background image */
:root {
  --card-transparent-bg: transparent;
}

.home-section,
.glass-card,
.map-frame--wide,
.update-date-card,
.update-detail-popover,
.update-place-card,
.plan-card,
.message-card,
.affiliate-good-card,
.plan-card__date,
.plan-spot-row,
.message-card__body,
.affiliate-good-card__image {
  background: transparent !important;
  box-shadow: none !important;
}

.last-updated-pill,
.update-chip,
.plan-expedition-tag {
  background: transparent !important;
}

.update-date-card:hover,
.update-date-card:focus-visible,
.update-date-card[aria-expanded="true"],
.update-place-card:hover,
.update-place-card:focus-visible,
.affiliate-good-card--link:hover {
  background: transparent !important;
}

.update-detail-popover {
  background: transparent !important;
  box-shadow: none !important;
}


/* NV0.0.2d: add an extra lower guide line so transparent cards remain readable */
.map-frame--wide,
.update-date-card,
.update-detail-popover,
.update-place-card,
.plan-card,
.message-card,
.affiliate-good-card {
  border-bottom: 1px solid color-mix(in srgb, var(--corner-line) 58%, transparent) !important;
  background-image: linear-gradient(to right, transparent 0, color-mix(in srgb, var(--corner-line) 42%, transparent) 12%, color-mix(in srgb, var(--corner-line) 42%, transparent) 88%, transparent 100%) !important;
  background-repeat: no-repeat !important;
  background-size: 100% 1px !important;
  background-position: left calc(100% - 8px) !important;
}

.update-place-card,
.plan-spot-row,
.message-card__body {
  border-bottom: 1px solid color-mix(in srgb, var(--corner-line) 36%, transparent) !important;
}


/* NV0.0.2f: menu bar logo + purple underline navigation */
.site-header {
  /* keep the existing menu bar background behavior */
  background: color-mix(in srgb, var(--bg) 86%, transparent);
}

.site-header__inner {
  max-width: 1220px;
  min-height: 58px;
}

.site-logo--image {
  display: inline-flex;
  align-items: center;
  width: min(280px, 28vw);
  height: 42px;
  overflow: hidden;
  text-decoration: none;
}

.site-logo--image img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: left center;
  filter: drop-shadow(0 6px 14px rgba(0, 0, 0, .34));
}

.site-nav {
  gap: 18px;
}

.site-nav .nav-button {
  position: relative;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--button-text);
  padding: 8px 2px 10px;
  min-height: 34px;
  font-weight: 800;
  letter-spacing: .03em;
  box-shadow: none;
}

.site-nav .nav-button::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 2px;
  height: 3px;
  background: #8f5bff;
  transform: scaleX(0);
  transform-origin: center;
  transition: transform .18s ease, opacity .18s ease;
  opacity: .95;
}

.site-nav .nav-button:hover,
.site-nav .nav-button:focus-visible,
.site-nav .has-dropdown:hover > .nav-button,
.site-nav .has-dropdown:focus-within > .nav-button {
  background: transparent;
  color: var(--button-text);
}

.site-nav .nav-button:hover::after,
.site-nav .nav-button:focus-visible::after,
.site-nav .has-dropdown:hover > .nav-button::after,
.site-nav .has-dropdown:focus-within > .nav-button::after {
  transform: scaleX(1);
}

.site-nav .nav-button:focus-visible {
  outline: 2px solid rgba(143, 91, 255, .72);
  outline-offset: 4px;
}

.site-nav .dropdown-menu {
  border: 1px solid rgba(143, 91, 255, .38);
  border-radius: 0;
  background: color-mix(in srgb, var(--bg) 92%, transparent);
  backdrop-filter: blur(12px);
  padding: 10px 14px;
  box-shadow: 0 18px 44px rgba(0, 0, 0, .42);
}

.site-nav .dropdown-menu a {
  position: relative;
  border-radius: 0;
  background: transparent;
  color: var(--button-text);
  padding: 8px 2px 10px;
  font-weight: 800;
  letter-spacing: .03em;
}

.site-nav .dropdown-menu a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 2px;
  height: 2px;
  background: #8f5bff;
  transform: scaleX(0);
  transform-origin: center;
  transition: transform .18s ease;
}

.site-nav .dropdown-menu a:hover,
.site-nav .dropdown-menu a:focus-visible {
  background: transparent;
  color: var(--button-text);
}

.site-nav .dropdown-menu a:hover::after,
.site-nav .dropdown-menu a:focus-visible::after {
  transform: scaleX(1);
}

@media (max-width: 860px) {
  .site-header__inner {
    grid-template-columns: 1fr;
    gap: 10px;
  }
  .site-logo--image {
    width: min(240px, 72vw);
    height: 38px;
  }
  .site-nav {
    justify-content: flex-start;
    gap: 14px;
  }
}

/* NV0.0.2g: keep update details out of normal layout and overlay them above later cards */
.updates-section {
  position: relative !important;
  overflow: visible !important;
}

.updates-section:has(.update-date-grid.is-showing-popover),
.update-date-grid.is-showing-popover {
  position: relative !important;
  z-index: 900 !important;
  overflow: visible !important;
}

.update-date-grid {
  position: relative !important;
  isolation: isolate;
  overflow: visible !important;
}

.update-detail-popover {
  position: absolute !important;
  display: block;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  bottom: auto !important;
  width: auto !important;
  min-height: 0 !important;
  height: auto !important;
  max-height: none !important;
  overflow: visible !important;
  z-index: 950 !important;
  margin: 0 !important;
  transform: none !important;
  pointer-events: auto;
}

.update-detail-popover[hidden] {
  display: none !important;
}

.update-detail-popover .update-place-list {
  max-height: none !important;
  overflow: visible !important;
}

.visit-plan-section,
.admin-message-section,
.affiliate-goods-section {
  position: relative;
  z-index: 1;
}

/* NV0.0.3: prefecture search map */
.section-block {
  width: min(1180px, calc(100% - 40px));
  margin: 56px auto;
  position: relative;
  z-index: 2;
}

.section-title-row {
  margin-bottom: 22px;
}

.section-title-row h1 {
  margin: 0 0 8px;
  font-size: clamp(1.8rem, 3vw, 2.6rem);
  letter-spacing: 0.05em;
}

.section-lead {
  margin: 0;
  color: var(--muted);
}

.japan-map-wrap {
  position: relative;
  width: 100%;
  overflow-x: auto;
  overflow-y: hidden;
  padding: 22px 0 28px;
}

.japan-map {
  display: block;
  width: min(100%, 1120px);
  min-width: 800px;
  height: auto;
  margin: 0 auto;
  filter: drop-shadow(0 18px 32px rgba(0, 0, 0, 0.34));
}

.map-pref-link {
  text-decoration: none;
  outline: none;
}

.map-pref-shape {
  fill: var(--region-fill, rgba(117, 72, 155, 0.78));
  stroke: rgba(245, 238, 255, 0.78);
  stroke-width: 2.2;
  transition: fill 0.18s ease, stroke 0.18s ease, transform 0.18s ease;
}

.map-pref-link.no-spots .map-pref-shape {
  fill: var(--region-fill-muted, rgba(92, 72, 110, 0.72));
  stroke: rgba(224, 212, 236, 0.48);
}

.map-pref-link.has-spots .map-pref-shape {
  fill: var(--region-fill, rgba(117, 72, 155, 0.9));
  stroke: rgba(255, 248, 255, 0.92);
}

.region-hokkaido-tohoku { --region-fill: rgba(86, 123, 180, 0.92); --region-fill-muted: rgba(70, 86, 118, 0.72); --region-button: rgba(86, 123, 180, 0.92); }
.region-kanto { --region-fill: rgba(132, 83, 170, 0.92); --region-fill-muted: rgba(92, 67, 116, 0.72); --region-button: rgba(132, 83, 170, 0.92); }
.region-chubu { --region-fill: rgba(172, 120, 76, 0.92); --region-fill-muted: rgba(108, 84, 64, 0.72); --region-button: rgba(172, 120, 76, 0.92); }
.region-hokuriku { --region-fill: rgba(91, 145, 115, 0.92); --region-fill-muted: rgba(66, 96, 82, 0.72); --region-button: rgba(91, 145, 115, 0.92); }
.region-kinki { --region-fill: rgba(160, 76, 114, 0.92); --region-fill-muted: rgba(108, 62, 86, 0.72); --region-button: rgba(160, 76, 114, 0.92); }
.region-chugoku-shikoku { --region-fill: rgba(96, 134, 160, 0.92); --region-fill-muted: rgba(68, 88, 104, 0.72); --region-button: rgba(96, 134, 160, 0.92); }
.region-kyushu { --region-fill: rgba(154, 86, 77, 0.92); --region-fill-muted: rgba(102, 64, 60, 0.72); --region-button: rgba(154, 86, 77, 0.92); }
.region-overseas { --region-fill: rgba(116, 116, 130, 0.92); --region-fill-muted: rgba(82, 82, 94, 0.72); --region-button: rgba(116, 116, 130, 0.92); }

.map-pref-name {
  fill: var(--text);
  font-size: 13px;
  font-weight: 800;
  pointer-events: none;
}

.map-pref-count {
  fill: var(--muted);
  font-size: 11px;
  font-weight: 700;
  pointer-events: none;
}

.map-pref-link:hover .map-pref-shape,
.map-pref-link:focus-visible .map-pref-shape {
  fill: rgba(204, 176, 230, 0.96);
  stroke: rgba(255, 255, 255, 1);
  stroke-width: 4;
}

.prefecture-region-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 20px;
  margin-top: 28px;
}

.region-block {
  padding: 20px;
}

.region-block h2 {
  margin: 0 0 12px;
  font-size: 1.15rem;
}

.prefectures-page .section-title-row,
.prefectures-page .region-block,
.prefectures-page .empty-box,
.prefectures-page .spot-list-card {
  background: rgba(18, 14, 25, 0.88);
  box-shadow: 0 18px 34px rgba(0, 0, 0, 0.22);
}

[data-theme="light"] .prefectures-page .section-title-row,
[data-theme="light"] .prefectures-page .region-block,
[data-theme="light"] .prefectures-page .empty-box,
[data-theme="light"] .prefectures-page .spot-list-card {
  background: rgba(246, 242, 250, 0.92);
}

.prefectures-page .tag-link {
  background: var(--region-button, rgba(132, 83, 170, 0.92));
  border-color: rgba(255, 248, 255, 0.72);
  color: #fff;
}

.prefectures-page .tag-link small {
  color: rgba(255, 255, 255, 0.82);
}

.prefectures-page .tag-link.no-spots {
  opacity: 0.82;
  filter: grayscale(0.2);
}

.prefectures-page .tag-link:hover,
.prefectures-page .tag-link:focus-visible {
  background: rgba(204, 176, 230, 0.96);
  color: #17111f;
  border-color: rgba(255, 255, 255, 0.96);
}

.prefectures-page .tag-link:hover small,
.prefectures-page .tag-link:focus-visible small {
  color: rgba(23, 17, 31, 0.7);
}

.prefecture-button-list {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.tag-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 34px;
  padding: 7px 12px;
  border: 1px solid rgba(188, 147, 218, 0.54);
  color: var(--button-text);
  text-decoration: none;
  background: transparent;
  font-weight: 700;
}

.tag-link small {
  color: var(--muted);
  font-weight: 800;
}

.tag-link:hover,
.tag-link:focus-visible {
  border-color: rgba(222, 192, 245, 1);
  background: rgba(138, 81, 186, 0.18);
}

.tag-link.no-spots {
  opacity: 0.62;
}

.tag-link--static,
.tag-link--static:hover {
  pointer-events: none;
  background: transparent;
}

.spot-card-list {
  display: grid;
  gap: 16px;
}

.spot-list-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 18px 20px;
}

.spot-list-card h2 {
  margin: 0 0 8px;
  font-size: 1.25rem;
}

.spot-list-card h2 a {
  text-decoration: none;
}

.spot-list-card h2 a:hover,
.spot-list-card h2 a:focus-visible {
  text-decoration: underline;
}

.spot-list-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 14px;
  color: var(--muted);
}

.read-more-link {
  flex: 0 0 auto;
  color: var(--button-text);
  font-weight: 800;
  text-decoration: none;
  border-bottom: 2px solid rgba(188, 147, 218, 0.72);
}

.read-more-link:hover,
.read-more-link:focus-visible {
  border-bottom-color: rgba(222, 192, 245, 1);
}

.empty-box {
  padding: 22px;
  color: var(--muted);
}

.back-link-row {
  margin-top: 22px;
}

@media (max-width: 820px) {
  .section-block {
    width: min(100% - 24px, 1180px);
    margin: 36px auto;
  }

  .prefecture-region-list {
    grid-template-columns: 1fr;
  }

  .spot-list-card {
    align-items: flex-start;
    flex-direction: column;
  }
}

/* NV0.0.4: prefecture detail page */
.prefecture-detail-page .prefecture-detail-title {
  position: relative;
  padding: 26px 28px 22px;
  background: transparent;
}

.prefecture-detail-page .prefecture-detail-title h1 {
  margin-top: 18px;
}

.back-to-prefectures {
  display: inline-flex;
  align-items: center;
  min-height: 32px;
  padding: 6px 12px;
  border: 0;
  border-bottom: 3px solid rgba(167, 100, 214, 0.96);
  color: var(--button-text);
  text-decoration: none;
  font-weight: 900;
  letter-spacing: 0.04em;
  background: rgba(26, 18, 34, 0.68);
}

[data-theme="light"] .back-to-prefectures {
  background: rgba(246, 242, 250, 0.9);
}

.back-to-prefectures:hover,
.back-to-prefectures:focus-visible {
  border-bottom-color: rgba(222, 192, 245, 1);
  transform: translateY(-1px);
}

.back-to-prefectures--top {
  position: absolute;
  left: 18px;
  top: 14px;
}

.sort-control-row {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin: 16px 0 24px;
}

.sort-button {
  appearance: none;
  min-height: 38px;
  padding: 8px 18px;
  border: 0;
  border-bottom: 3px solid rgba(167, 100, 214, 0.82);
  color: var(--button-text);
  background: rgba(26, 18, 34, 0.72);
  font-weight: 900;
  letter-spacing: 0.05em;
  cursor: pointer;
}

[data-theme="light"] .sort-button {
  background: rgba(246, 242, 250, 0.92);
}

.sort-button:hover,
.sort-button:focus-visible,
.sort-button.is-active {
  border-bottom-color: rgba(230, 204, 248, 1);
  background: rgba(104, 55, 143, 0.72);
}

[data-theme="light"] .sort-button:hover,
[data-theme="light"] .sort-button:focus-visible,
[data-theme="light"] .sort-button.is-active {
  color: #fff;
  background: rgba(104, 55, 143, 0.86);
}

.prefecture-spot-card-list {
  display: grid;
  gap: 18px;
}

.prefecture-spot-card {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(170px, 30%);
  min-height: 178px;
  overflow: hidden;
  padding: 22px 24px;
  color: var(--text);
  text-decoration: none;
  background: transparent;
  isolation: isolate;
}

.prefecture-spot-card:hover,
.prefecture-spot-card:focus-visible {
  transform: translateY(-2px);
}

.prefecture-spot-card__body {
  position: relative;
  z-index: 2;
  display: flex;
  min-width: 0;
  flex-direction: column;
  gap: 10px;
  padding-right: 18px;
}

.prefecture-spot-card h2 {
  margin: 0;
  font-size: clamp(1.55rem, 3vw, 2.25rem);
  line-height: 1.16;
  letter-spacing: 0.05em;
}

.prefecture-spot-card__type {
  align-self: flex-start;
  min-width: min(280px, 100%);
  padding: 6px 14px;
  border: 1px solid rgba(188, 147, 218, 0.72);
  border-bottom: 3px solid rgba(167, 100, 214, 0.96);
  font-weight: 900;
  color: var(--button-text);
  background: rgba(26, 18, 34, 0.62);
}

[data-theme="light"] .prefecture-spot-card__type {
  background: rgba(246, 242, 250, 0.86);
}

.prefecture-spot-card__fear {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 12px;
}

.prefecture-spot-card__label {
  color: var(--muted);
  font-size: 0.86rem;
  font-weight: 900;
}

.prefecture-spot-card__stars {
  color: rgba(234, 212, 124, 0.96);
  font-size: 1.12rem;
  font-weight: 900;
  letter-spacing: 0.06em;
  text-shadow: 0 1px 8px rgba(0, 0, 0, 0.34);
}

.prefecture-spot-card__sub {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 16px;
  color: var(--muted);
  font-size: 0.88rem;
  font-weight: 800;
}

.prefecture-spot-card__visual {
  position: absolute;
  inset: 0 0 0 auto;
  z-index: 1;
  width: min(390px, 42%);
  overflow: hidden;
  opacity: 0.94;
}

.prefecture-spot-card__visual::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  background: linear-gradient(90deg, var(--bg) 0%, rgba(10, 8, 14, 0.66) 26%, rgba(10, 8, 14, 0.08) 100%);
}

[data-theme="light"] .prefecture-spot-card__visual::before {
  background: linear-gradient(90deg, var(--bg) 0%, rgba(246, 242, 250, 0.72) 30%, rgba(246, 242, 250, 0.1) 100%);
}

.prefecture-spot-card__visual img,
.prefecture-spot-card__no-image {
  width: 100%;
  height: 100%;
}

.prefecture-spot-card__visual img {
  object-fit: cover;
}

.prefecture-spot-card__no-image {
  display: grid;
  place-items: center;
  color: rgba(255, 255, 255, 0.54);
  background: linear-gradient(135deg, rgba(78, 45, 104, 0.72), rgba(14, 10, 20, 0.18));
  font-weight: 900;
  letter-spacing: 0.12em;
}

[data-theme="light"] .prefecture-spot-card__no-image {
  color: rgba(42, 34, 50, 0.62);
  background: linear-gradient(135deg, rgba(188, 147, 218, 0.46), rgba(246, 242, 250, 0.18));
}

.prefecture-detail-page .back-link-row--bottom {
  margin: 28px 0 0;
  text-align: center;
}

.prefecture-detail-page .back-link-row--bottom .tag-link {
  background: rgba(26, 18, 34, 0.72);
  border-bottom: 3px solid rgba(167, 100, 214, 0.96);
  font-weight: 900;
}

[data-theme="light"] .prefecture-detail-page .back-link-row--bottom .tag-link {
  background: rgba(246, 242, 250, 0.92);
}

@media (max-width: 760px) {
  .prefecture-detail-page .prefecture-detail-title {
    padding: 62px 18px 18px;
  }

  .back-to-prefectures--top {
    left: 14px;
    top: 14px;
  }

  .prefecture-spot-card {
    grid-template-columns: 1fr;
    min-height: 220px;
    padding: 20px 18px;
  }

  .prefecture-spot-card__visual {
    width: 100%;
    opacity: 0.36;
  }

  .prefecture-spot-card__visual::before {
    background: linear-gradient(0deg, var(--bg) 0%, rgba(10, 8, 14, 0.68) 44%, rgba(10, 8, 14, 0.12) 100%);
  }

  .prefecture-spot-card__type {
    min-width: 0;
  }
}

/* NV0.0.10: 心霊スポット番付 */
.banzuke-page { max-width: 1020px; margin: 0 auto; }
.banzuke-page .panel-heading { text-align: center; }
.banzuke-page .panel-heading p { color: var(--muted); }
.banzuke-table { margin-top: 24px; border: 2px solid color-mix(in srgb, var(--accent) 55%, var(--border)); background: color-mix(in srgb, var(--panel-soft) 88%, transparent); }
.banzuke-head, .banzuke-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(120px, .28fr) minmax(0, 1fr); }
.banzuke-head { background: #251116; color: #f5e7d0; font-family: "Yu Mincho", "Hiragino Mincho ProN", serif; font-size: 1.25rem; font-weight: 900; text-align: center; }
.banzuke-head span { padding: 11px; border-right: 1px solid rgba(245,231,208,.28); }
.banzuke-head span:last-child { border-right: 0; }
.banzuke-division { margin: 0; padding: 8px; border-top: 2px solid var(--accent); border-bottom: 1px solid var(--border); background: color-mix(in srgb, var(--accent) 20%, var(--panel)); text-align: center; font-family: "Yu Mincho", "Hiragino Mincho ProN", serif; letter-spacing: .25em; }
.banzuke-row > div { min-width: 0; border-bottom: 1px solid var(--border); }
.banzuke-row > div + div { border-left: 1px solid var(--border); }
.banzuke-rank { display: grid; place-items: center; padding: 10px 6px; text-align: center; font-family: "Yu Mincho", "Hiragino Mincho ProN", serif; font-size: 1.02rem; font-weight: 900; }
.banzuke-spot { display: flex; min-height: 70px; padding: 9px 14px; flex-direction: column; justify-content: center; text-decoration: none; }
.banzuke-spot--east { align-items: flex-end; text-align: right; }
.banzuke-spot--west { align-items: flex-start; text-align: left; }
.banzuke-name-line { display: inline-flex; max-width: 100%; align-items: center; gap: 5px; }
.banzuke-spot strong { font-family: "Yu Mincho", "Hiragino Mincho ProN", serif; font-size: 1.08rem; overflow-wrap: anywhere; }
.banzuke-entry-mark { display: inline-grid; min-width: 1.55em; height: 1.55em; padding: 0 .22em; flex: 0 0 auto; place-items: center; border: 1px solid #b40000; background: #fff; color: #c00000; font-family: "Yu Gothic", "Hiragino Kaku Gothic ProN", sans-serif; font-size: .76rem; line-height: 1; }
.banzuke-entry-mark--new { font-weight: 900; }
.banzuke-entry-mark--return { font-weight: 500; }
.banzuke-movement { flex: 0 0 auto; color: #d32632; font-family: "Yu Gothic", "Hiragino Kaku Gothic ProN", sans-serif; font-size: 1.18rem; font-weight: 900; line-height: 1; }
.banzuke-spot small { color: var(--muted); font-size: .8rem; }
.banzuke-spot:not(.banzuke-spot--empty):hover { background: var(--accent-soft); }
.banzuke-spot--empty { align-items: center; color: var(--muted); text-align: center; }

@media (max-width: 640px) {
  .banzuke-head, .banzuke-row { grid-template-columns: minmax(0, 1fr) 72px minmax(0, 1fr); }
  .banzuke-head { font-size: 1.05rem; }
  .banzuke-rank { padding: 7px 3px; font-size: .8rem; }
  .banzuke-spot { min-height: 74px; padding: 7px; }
  .banzuke-spot strong { font-size: .9rem; }
  .banzuke-name-line { gap: 3px; }
  .banzuke-entry-mark { min-width: 1.4em; height: 1.4em; font-size: .68rem; }
  .banzuke-movement { font-size: 1rem; }
  .banzuke-spot small { font-size: .7rem; }
}

/* NV0.2.7: the site is dark-mode only; admin messages are changed by horizontal scrolling on mobile. */
@media (max-width: 760px) {
  .message-viewer--wide .message-viewport {
    overflow-x: auto;
    overflow-y: hidden;
    scroll-snap-type: x mandatory;
    overscroll-behavior-x: contain;
    touch-action: pan-x pan-y;
    scrollbar-width: thin;
    scrollbar-color: var(--accent) transparent;
  }

  .message-viewer--wide .message-card {
    scroll-snap-align: start;
    scroll-snap-stop: always;
  }
}


/* NV0.0.4a: prefecture spot cards use red corner + underline style */
.prefecture-detail-page {
  --prefecture-accent-red: rgba(184, 35, 42, 0.94);
  --prefecture-accent-red-soft: rgba(184, 35, 42, 0.44);
  --prefecture-accent-red-faint: rgba(184, 35, 42, 0.22);
  --corner-line: var(--prefecture-accent-red);
}

.prefecture-detail-page .prefecture-detail-title {
  padding-top: 70px;
}

.prefecture-detail-page .prefecture-detail-title h1 {
  margin-top: 0;
}

.back-to-prefectures--top {
  left: 28px;
  top: 20px;
}

.prefecture-detail-page .back-to-prefectures,
.prefecture-detail-page .sort-button,
.prefecture-detail-page .back-link-row--bottom .tag-link {
  border-bottom-color: var(--prefecture-accent-red) !important;
}

.prefecture-detail-page .sort-button:hover,
.prefecture-detail-page .sort-button:focus-visible,
.prefecture-detail-page .sort-button.is-active {
  background: rgba(140, 28, 34, 0.78) !important;
  border-bottom-color: rgba(236, 98, 106, 0.98) !important;
}

.prefecture-spot-card {
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  border-bottom: 1px solid color-mix(in srgb, var(--prefecture-accent-red) 62%, transparent) !important;
  background-image: linear-gradient(to right, transparent 0, color-mix(in srgb, var(--prefecture-accent-red) 52%, transparent) 10%, color-mix(in srgb, var(--prefecture-accent-red) 52%, transparent) 88%, transparent 100%) !important;
  background-repeat: no-repeat !important;
  background-size: 100% 1px !important;
  background-position: left calc(100% - 8px) !important;
}

.prefecture-spot-card::before,
.prefecture-spot-card::after {
  content: "";
  position: absolute;
  width: 38px;
  height: 38px;
  pointer-events: none;
  z-index: 4;
}

.prefecture-spot-card::before {
  top: 0;
  left: 0;
  border-top: 4px solid var(--prefecture-accent-red);
  border-left: 4px solid var(--prefecture-accent-red);
}

.prefecture-spot-card::after {
  right: 0;
  bottom: 0;
  border-right: 4px solid var(--prefecture-accent-red);
  border-bottom: 4px solid var(--prefecture-accent-red);
}

.prefecture-spot-card:hover,
.prefecture-spot-card:focus-visible {
  background-color: var(--prefecture-accent-red-faint) !important;
}

.prefecture-spot-card__type {
  border-color: var(--prefecture-accent-red-soft) !important;
  border-bottom-color: var(--prefecture-accent-red) !important;
}

@media (max-width: 760px) {
  .prefecture-detail-page .prefecture-detail-title {
    padding: 68px 18px 18px;
  }

  .back-to-prefectures--top {
    left: 18px;
    top: 16px;
  }
}


/* NV0.0.4b: top page order + animated update carousel */
.update-date-carousel {
  display: block !important;
  position: relative !important;
  min-height: 138px;
  overflow: visible !important;
  isolation: isolate;
  perspective: 900px;
}

.update-date-carousel .update-date-card {
  position: absolute !important;
  top: 0;
  left: 50%;
  width: min(31.5%, 360px);
  min-width: 220px;
  min-height: 124px;
  opacity: 0;
  pointer-events: none;
  transform: translateX(-50%) scale(.82);
  transition:
    transform .62s cubic-bezier(.2, .8, .2, 1),
    opacity .42s ease,
    filter .42s ease,
    border-color .18s ease;
  will-change: transform, opacity;
}

.update-date-carousel .update-date-card.is-active {
  opacity: 1;
  pointer-events: auto;
  z-index: 4;
  transform: translateX(-50%) scale(1.06);
  filter: none;
}

.update-date-carousel .update-date-card.is-prev {
  opacity: .72;
  pointer-events: auto;
  z-index: 3;
  transform: translateX(calc(-50% - min(34vw, 390px))) scale(.9);
  filter: saturate(.82) brightness(.82);
}

.update-date-carousel .update-date-card.is-next {
  opacity: .72;
  pointer-events: auto;
  z-index: 3;
  transform: translateX(calc(-50% + min(34vw, 390px))) scale(.9);
  filter: saturate(.82) brightness(.82);
}

.update-date-carousel .update-date-card.is-hidden {
  opacity: 0;
  pointer-events: none;
  z-index: 1;
  transform: translateX(-50%) scale(.78);
}

.update-date-carousel.is-showing-popover {
  min-height: 138px;
}

.update-date-carousel .update-detail-popover {
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  z-index: 980 !important;
}

.update-date-carousel .update-date-card.is-active span {
  font-size: clamp(1.08rem, 1.8vw, 1.34rem);
}

@media (max-width: 900px) {
  .update-date-carousel {
    min-height: 128px;
  }
  .update-date-carousel .update-date-card {
    width: min(58%, 360px);
    min-width: 0;
  }
  .update-date-carousel .update-date-card.is-prev {
    transform: translateX(calc(-50% - 52vw)) scale(.82);
  }
  .update-date-carousel .update-date-card.is-next {
    transform: translateX(calc(-50% + 52vw)) scale(.82);
  }
}

@media (max-width: 620px) {
  .update-date-carousel {
    min-height: 126px;
  }
  .update-date-carousel .update-date-card {
    width: min(78%, 340px);
    padding: 16px;
  }
  .update-date-carousel .update-date-card.is-prev,
  .update-date-carousel .update-date-card.is-next {
    opacity: .36;
  }
}

@media (prefers-reduced-motion: reduce) {
  .update-date-carousel .update-date-card {
    transition: opacity .2s ease;
  }
}


/* NV0.0.4c: update carousel timing/pause and two-card duplicate support */
.update-date-carousel .update-date-card.is-carousel-clone {
  pointer-events: auto;
}

.update-date-carousel:hover .update-date-card.is-prev,
.update-date-carousel:hover .update-date-card.is-active,
.update-date-carousel:hover .update-date-card.is-next {
  pointer-events: auto;
}

/* NV0.0.5: category search pages */
.categories-page,
.category-detail-page {
  --category-accent-red: rgba(184, 35, 42, 0.94);
  --category-accent-red-soft: rgba(184, 35, 42, 0.44);
  --category-accent-red-faint: rgba(184, 35, 42, 0.22);
  --corner-line: var(--category-accent-red);
}

.category-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
  margin-top: 24px;
}

.category-search-card {
  position: relative;
  display: flex;
  min-height: 128px;
  flex-direction: column;
  justify-content: space-between;
  gap: 18px;
  padding: 24px 24px 18px;
  color: var(--text);
  text-decoration: none;
  border: 0 !important;
  border-radius: 0 !important;
  background: rgba(18, 12, 24, 0.72) !important;
  box-shadow: none !important;
  border-bottom: 1px solid color-mix(in srgb, var(--category-accent-red) 62%, transparent) !important;
  background-image: linear-gradient(to right, transparent 0, color-mix(in srgb, var(--category-accent-red) 52%, transparent) 10%, color-mix(in srgb, var(--category-accent-red) 52%, transparent) 88%, transparent 100%) !important;
  background-repeat: no-repeat !important;
  background-size: 100% 1px !important;
  background-position: left calc(100% - 8px) !important;
}

[data-theme="light"] .category-search-card {
  background: rgba(248, 244, 250, 0.92) !important;
}

.category-search-card::before,
.category-search-card::after {
  content: "";
  position: absolute;
  width: 38px;
  height: 38px;
  pointer-events: none;
  z-index: 4;
}

.category-search-card::before {
  top: 0;
  left: 0;
  border-top: 4px solid var(--category-accent-red);
  border-left: 4px solid var(--category-accent-red);
}

.category-search-card::after {
  right: 0;
  bottom: 0;
  border-right: 4px solid var(--category-accent-red);
  border-bottom: 4px solid var(--category-accent-red);
}

.category-search-card:hover,
.category-search-card:focus-visible {
  transform: translateY(-2px);
  background-color: var(--category-accent-red-faint) !important;
}

.category-search-card.no-spots {
  opacity: 0.68;
}

.category-search-card__name {
  font-size: clamp(1.35rem, 2.4vw, 1.95rem);
  font-weight: 900;
  letter-spacing: 0.08em;
}

.category-search-card__count {
  align-self: flex-end;
  padding: 4px 12px;
  border: 1px solid var(--category-accent-red-soft);
  border-bottom: 3px solid var(--category-accent-red);
  font-weight: 900;
  color: var(--button-text);
  background: rgb(31, 23, 40);
}

[data-theme="light"] .category-search-card__count {
  background: rgba(246, 242, 250, 0.92);
}

.category-detail-page .back-to-prefectures,
.category-detail-page .sort-button,
.category-detail-page .back-link-row--bottom .tag-link {
  border-bottom-color: var(--category-accent-red) !important;
}

.category-detail-page .sort-button:hover,
.category-detail-page .sort-button:focus-visible,
.category-detail-page .sort-button.is-active {
  background: rgba(140, 28, 34, 0.78) !important;
  border-bottom-color: rgba(236, 98, 106, 0.98) !important;
}

.category-spot-card .prefecture-spot-card__type {
  border-color: var(--category-accent-red-soft) !important;
  border-bottom-color: var(--category-accent-red) !important;
}

@media (max-width: 820px) {
  .category-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 560px) {
  .category-grid {
    grid-template-columns: 1fr;
  }
}


/* NV0.0.5a: トップページ更新情報サムネイル対応 */
.update-date-card {
  overflow: hidden;
  isolation: isolate;
}

.update-date-card.has-thumbnail {
  min-height: 154px;
  padding: 18px 20px 18px;
  justify-content: flex-end;
  align-items: flex-start;
  text-align: left;
}

.update-date-card__thumbnail {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
}

.update-date-card__thumbnail img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0.72;
  filter: saturate(0.88) contrast(1.06) brightness(0.82);
  transform: scale(1.02);
}

.update-date-card.has-thumbnail::before,
.update-date-card.has-thumbnail::after {
  z-index: 3;
}

.update-date-card.has-thumbnail::before {
  background: none;
}

.update-date-card.has-thumbnail .update-date-card__thumbnail::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(180deg, rgba(4, 2, 8, 0.18), rgba(4, 2, 8, 0.72)),
    linear-gradient(90deg, rgba(4, 2, 8, 0.62), rgba(4, 2, 8, 0.18));
}

.update-date-card__label,
.update-date-card__count {
  position: relative;
  z-index: 2;
}

.update-date-card .update-date-card__label,
.update-date-card span:not(.update-date-card__thumbnail) {
  display: block;
  margin-top: auto;
  line-height: 1.1;
  text-shadow: 0 2px 10px rgba(0, 0, 0, 0.72);
}

.update-date-card .update-date-card__count,
.update-date-card strong {
  align-self: flex-start;
  margin-top: 10px;
  font-size: 0.92rem;
  line-height: 1;
  text-shadow: 0 2px 10px rgba(0, 0, 0, 0.72);
}

.update-date-card.has-thumbnail .update-date-card__label {
  margin-left: 2px;
  margin-bottom: 0;
}

.update-date-card.has-thumbnail .update-date-card__count {
  position: absolute;
  left: 20px;
  bottom: 17px;
  margin: 0;
  padding: 5px 11px;
  border: 1px solid rgba(226, 76, 86, 0.7);
  border-bottom: 3px solid rgba(226, 76, 86, 0.98);
  background: rgba(13, 8, 18, 0.62);
  backdrop-filter: blur(4px);
}

.update-date-card.is-active.has-thumbnail {
  min-height: 180px;
}

.update-date-card.is-prev.has-thumbnail,
.update-date-card.is-next.has-thumbnail {
  min-height: 142px;
}

[data-theme="light"] .update-date-card.has-thumbnail .update-date-card__thumbnail img {
  opacity: 0.66;
  filter: saturate(0.82) contrast(1.02) brightness(0.94);
}

[data-theme="light"] .update-date-card.has-thumbnail .update-date-card__thumbnail::after {
  background:
    linear-gradient(180deg, rgba(246, 242, 250, 0.04), rgba(25, 12, 32, 0.48)),
    linear-gradient(90deg, rgba(25, 12, 32, 0.40), rgba(25, 12, 32, 0.08));
}

@media (max-width: 640px) {
  .update-date-card.has-thumbnail {
    min-height: 132px;
    padding: 14px 16px 14px;
  }

  .update-date-card.has-thumbnail .update-date-card__count {
    left: 16px;
    bottom: 14px;
  }
}


/* NV0.0.5b: 更新情報カード内の位置調整 */
.update-date-card.has-thumbnail {
  align-items: flex-start !important;
  justify-content: center !important;
  padding: 18px 20px 18px !important;
}

.update-date-card.has-thumbnail .update-date-card__label {
  position: absolute !important;
  left: 20px !important;
  top: 42% !important;
  transform: translateY(-50%) !important;
  margin: 0 !important;
  max-width: calc(100% - 40px);
  text-align: left !important;
  line-height: 1.12;
}

.update-date-card.has-thumbnail .update-date-card__count {
  position: absolute !important;
  left: 20px !important;
  bottom: 17px !important;
  top: auto !important;
  right: auto !important;
  margin: 0 !important;
}

.update-date-card:not(.has-thumbnail) .update-date-card__label {
  text-align: left;
}

@media (max-width: 640px) {
  .update-date-card.has-thumbnail .update-date-card__label {
    left: 16px !important;
    max-width: calc(100% - 32px);
  }

  .update-date-card.has-thumbnail .update-date-card__count {
    left: 16px !important;
    bottom: 14px !important;
  }
}

/* NV0.0.5c: 更新情報カードの位置指定をサムネイル有無に関係なく固定
   原因: NV0.0.5bの位置指定が .has-thumbnail 限定だったため、
   サムネイルが取得できないカードでは旧flex配置が残り、件数が右上、日付が下寄りになっていた。 */
.update-date-carousel .update-date-card,
.update-date-card {
  position: relative !important;
  display: block !important;
  padding: 18px 20px !important;
  text-align: left !important;
}

.update-date-card .update-date-card__label {
  position: absolute !important;
  left: 20px !important;
  top: 46% !important;
  right: auto !important;
  bottom: auto !important;
  transform: translateY(-50%) !important;
  display: block !important;
  margin: 0 !important;
  max-width: calc(100% - 40px) !important;
  text-align: left !important;
  line-height: 1.12 !important;
  z-index: 5 !important;
}

.update-date-card .update-date-card__count {
  position: absolute !important;
  left: 20px !important;
  bottom: 17px !important;
  top: auto !important;
  right: auto !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  align-self: auto !important;
  margin: 0 !important;
  z-index: 5 !important;
}

.update-date-carousel .update-date-card.is-active .update-date-card__label {
  font-size: clamp(1.08rem, 1.8vw, 1.34rem) !important;
}

.update-date-carousel .update-date-card.is-prev .update-date-card__label,
.update-date-carousel .update-date-card.is-next .update-date-card__label {
  font-size: clamp(0.98rem, 1.4vw, 1.14rem) !important;
}

@media (max-width: 640px) {
  .update-date-card .update-date-card__label {
    left: 16px !important;
    max-width: calc(100% - 32px) !important;
  }

  .update-date-card .update-date-card__count {
    left: 16px !important;
    bottom: 14px !important;
  }
}

/* NV0.0.5d: 更新情報カルーセルの縦位置固定
   原因: 中央カードと左右カードで scale と min-height が異なり、transform-origin が中央基準だったため、
   拡大縮小時にカード上端・下端がずれて列がバラバラに見えていた。 */
.update-date-carousel {
  min-height: 176px !important;
}

.update-date-carousel .update-date-card {
  top: 0 !important;
  min-height: 150px !important;
  height: 150px !important;
  transform-origin: center top !important;
}

.update-date-carousel .update-date-card.is-active {
  transform: translateX(-50%) scale(1.02) !important;
}

.update-date-carousel .update-date-card.is-prev {
  transform: translateX(calc(-50% - min(34vw, 390px))) scale(.92) !important;
}

.update-date-carousel .update-date-card.is-next {
  transform: translateX(calc(-50% + min(34vw, 390px))) scale(.92) !important;
}

.update-date-card.is-active.has-thumbnail,
.update-date-card.is-prev.has-thumbnail,
.update-date-card.is-next.has-thumbnail {
  min-height: 150px !important;
  height: 150px !important;
}

@media (max-width: 900px) {
  .update-date-carousel {
    min-height: 164px !important;
  }
  .update-date-carousel .update-date-card,
  .update-date-card.is-active.has-thumbnail,
  .update-date-card.is-prev.has-thumbnail,
  .update-date-card.is-next.has-thumbnail {
    min-height: 140px !important;
    height: 140px !important;
  }
  .update-date-carousel .update-date-card.is-prev {
    transform: translateX(calc(-50% - 52vw)) scale(.86) !important;
  }
  .update-date-carousel .update-date-card.is-next {
    transform: translateX(calc(-50% + 52vw)) scale(.86) !important;
  }
}

@media (max-width: 620px) {
  .update-date-carousel {
    min-height: 154px !important;
  }
  .update-date-carousel .update-date-card,
  .update-date-card.is-active.has-thumbnail,
  .update-date-card.is-prev.has-thumbnail,
  .update-date-card.is-next.has-thumbnail {
    min-height: 132px !important;
    height: 132px !important;
  }
}


/* NV0.0.5e: 更新情報カード配置の根本修正
   3枚を同じCSS Gridレール上に固定し、縦位置をアニメーションさせない。
   以前のabsolute配置とtranslate/scaleの継ぎ足しをここで無効化する。 */
.update-date-carousel {
  display: grid !important;
  grid-template-columns: minmax(220px, 1fr) minmax(260px, 1.08fr) minmax(220px, 1fr) !important;
  grid-auto-rows: 150px !important;
  align-items: start !important;
  gap: clamp(18px, 3vw, 34px) !important;
  min-height: 166px !important;
  overflow: visible !important;
  isolation: isolate !important;
  perspective: none !important;
}

.update-date-carousel .update-date-card {
  position: relative !important;
  inset: auto !important;
  top: auto !important;
  left: auto !important;
  right: auto !important;
  bottom: auto !important;
  grid-row: 1 !important;
  width: 100% !important;
  min-width: 0 !important;
  height: 150px !important;
  min-height: 150px !important;
  max-height: 150px !important;
  margin: 0 !important;
  display: block !important;
  opacity: 0 !important;
  pointer-events: none !important;
  transform: none !important;
  transform-origin: center top !important;
  transition: transform .62s cubic-bezier(.2, .8, .2, 1), opacity .42s ease, filter .42s ease, border-color .18s ease !important;
}

.update-date-carousel .update-date-card.is-hidden {
  display: none !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

.update-date-carousel .update-date-card.is-prev,
.update-date-carousel .update-date-card.is-active,
.update-date-carousel .update-date-card.is-next {
  display: block !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  top: auto !important;
  align-self: start !important;
}

.update-date-carousel .update-date-card.is-prev {
  grid-column: 1 !important;
  z-index: 3 !important;
  transform: scale(.92) !important;
  filter: saturate(.82) brightness(.82) !important;
}

.update-date-carousel .update-date-card.is-active {
  grid-column: 2 !important;
  z-index: 5 !important;
  transform: scale(1.02) !important;
  filter: none !important;
}

.update-date-carousel .update-date-card.is-next {
  grid-column: 3 !important;
  z-index: 3 !important;
  transform: scale(.92) !important;
  filter: saturate(.82) brightness(.82) !important;
}

.update-date-carousel:hover .update-date-card.is-prev,
.update-date-carousel:hover .update-date-card.is-active,
.update-date-carousel:hover .update-date-card.is-next,
.update-date-carousel .update-date-card.is-prev:focus-visible,
.update-date-carousel .update-date-card.is-active:focus-visible,
.update-date-carousel .update-date-card.is-next:focus-visible {
  pointer-events: auto !important;
}

.update-date-carousel .update-date-card:hover,
.update-date-carousel .update-date-card:focus-visible,
.update-date-carousel .update-date-card[aria-expanded="true"] {
  /* hover時のtranslateYを禁止。縦位置は絶対に動かさない。 */
  background: transparent !important;
}

.update-date-carousel .update-date-card.is-prev:hover,
.update-date-carousel .update-date-card.is-prev:focus-visible {
  transform: scale(.92) !important;
}

.update-date-carousel .update-date-card.is-active:hover,
.update-date-carousel .update-date-card.is-active:focus-visible,
.update-date-carousel .update-date-card.is-active[aria-expanded="true"] {
  transform: scale(1.02) !important;
}

.update-date-carousel .update-date-card.is-next:hover,
.update-date-carousel .update-date-card.is-next:focus-visible {
  transform: scale(.92) !important;
}

.update-date-carousel .update-date-card,
.update-date-card.is-active.has-thumbnail,
.update-date-card.is-prev.has-thumbnail,
.update-date-card.is-next.has-thumbnail {
  height: 150px !important;
  min-height: 150px !important;
  max-height: 150px !important;
}

.update-date-carousel .update-date-card .update-date-card__label {
  position: absolute !important;
  left: 20px !important;
  top: 44% !important;
  right: 20px !important;
  bottom: auto !important;
  transform: translateY(-50%) !important;
  display: block !important;
  margin: 0 !important;
  max-width: calc(100% - 40px) !important;
  text-align: left !important;
  line-height: 1.12 !important;
  z-index: 5 !important;
}

.update-date-carousel .update-date-card .update-date-card__count {
  position: absolute !important;
  left: 20px !important;
  bottom: 17px !important;
  top: auto !important;
  right: auto !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  margin: 0 !important;
  z-index: 5 !important;
  font-size: .92rem !important;
  line-height: 1 !important;
}

.update-date-carousel .update-date-card.is-active .update-date-card__label {
  font-size: clamp(1.08rem, 1.8vw, 1.34rem) !important;
}

.update-date-carousel .update-date-card.is-prev .update-date-card__label,
.update-date-carousel .update-date-card.is-next .update-date-card__label {
  font-size: clamp(.98rem, 1.4vw, 1.14rem) !important;
}

.update-date-carousel .update-detail-popover {
  position: absolute !important;
  display: block;
  grid-column: 1 / -1 !important;
  grid-row: 1 !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  bottom: auto !important;
  width: auto !important;
  min-height: 0 !important;
  height: auto !important;
  max-height: none !important;
  overflow: visible !important;
  z-index: 980 !important;
  margin: 0 !important;
  transform: none !important;
}

.update-date-carousel .update-detail-popover[hidden] {
  display: none !important;
}

@media (max-width: 900px) {
  .update-date-carousel {
    grid-template-columns: minmax(150px, .78fr) minmax(210px, 1fr) minmax(150px, .78fr) !important;
    grid-auto-rows: 140px !important;
    min-height: 154px !important;
    gap: 16px !important;
  }

  .update-date-carousel .update-date-card,
  .update-date-card.is-active.has-thumbnail,
  .update-date-card.is-prev.has-thumbnail,
  .update-date-card.is-next.has-thumbnail {
    height: 140px !important;
    min-height: 140px !important;
    max-height: 140px !important;
  }
}

@media (max-width: 620px) {
  .update-date-carousel {
    grid-template-columns: 1fr !important;
    grid-auto-rows: 132px !important;
    min-height: 146px !important;
  }

  .update-date-carousel .update-date-card.is-prev,
  .update-date-carousel .update-date-card.is-next {
    display: none !important;
  }

  .update-date-carousel .update-date-card.is-active {
    grid-column: 1 !important;
    transform: none !important;
  }

  .update-date-carousel .update-date-card,
  .update-date-card.is-active.has-thumbnail,
  .update-date-card.is-prev.has-thumbnail,
  .update-date-card.is-next.has-thumbnail {
    height: 132px !important;
    min-height: 132px !important;
    max-height: 132px !important;
  }

  .update-date-carousel .update-date-card .update-date-card__label {
    left: 16px !important;
    right: 16px !important;
    max-width: calc(100% - 32px) !important;
  }

  .update-date-carousel .update-date-card .update-date-card__count {
    left: 16px !important;
    bottom: 14px !important;
  }
}

/* NV0.0.5g: 更新情報カルーセルの縦ズレ根絶
   原因: 以前の transform: scale()/translate 系指定とブラウザキャッシュが残り、
   中央・左右カードのY座標が別々に計算されていた。
   対策: 更新情報3枚はflexレールに固定し、transformを完全禁止する。 */
.update-date-grid.update-date-carousel,
.update-date-carousel[data-update-grid] {
  display: flex !important;
  align-items: flex-start !important;
  justify-content: center !important;
  gap: clamp(18px, 3vw, 34px) !important;
  min-height: 164px !important;
  height: 164px !important;
  overflow: visible !important;
  position: relative !important;
  isolation: isolate !important;
  grid-template-columns: none !important;
  grid-auto-rows: auto !important;
}

.update-date-grid.update-date-carousel .update-date-card,
.update-date-carousel[data-update-grid] .update-date-card,
.update-date-grid.update-date-carousel .update-date-card.has-thumbnail,
.update-date-carousel[data-update-grid] .update-date-card.has-thumbnail {
  position: relative !important;
  inset: auto !important;
  top: auto !important;
  left: auto !important;
  right: auto !important;
  bottom: auto !important;
  display: block !important;
  flex: 0 0 30% !important;
  width: auto !important;
  min-width: 0 !important;
  height: 150px !important;
  min-height: 150px !important;
  max-height: 150px !important;
  margin: 0 !important;
  align-self: flex-start !important;
  justify-self: auto !important;
  transform: none !important;
  translate: none !important;
  transform-origin: top center !important;
  opacity: 0 !important;
  pointer-events: none !important;
  order: 10 !important;
  transition: opacity .35s ease, filter .35s ease, border-color .18s ease !important;
}

.update-date-grid.update-date-carousel .update-date-card.is-hidden,
.update-date-carousel[data-update-grid] .update-date-card.is-hidden {
  display: none !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

.update-date-grid.update-date-carousel .update-date-card.is-prev,
.update-date-grid.update-date-carousel .update-date-card.is-active,
.update-date-grid.update-date-carousel .update-date-card.is-next,
.update-date-carousel[data-update-grid] .update-date-card.is-prev,
.update-date-carousel[data-update-grid] .update-date-card.is-active,
.update-date-carousel[data-update-grid] .update-date-card.is-next {
  display: block !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  top: auto !important;
  align-self: flex-start !important;
  transform: none !important;
  translate: none !important;
}

.update-date-grid.update-date-carousel .update-date-card.is-prev,
.update-date-carousel[data-update-grid] .update-date-card.is-prev {
  order: 1 !important;
  flex-basis: 30% !important;
  z-index: 3 !important;
  filter: saturate(.82) brightness(.82) !important;
}

.update-date-grid.update-date-carousel .update-date-card.is-active,
.update-date-carousel[data-update-grid] .update-date-card.is-active {
  order: 2 !important;
  flex-basis: 34% !important;
  z-index: 5 !important;
  filter: none !important;
}

.update-date-grid.update-date-carousel .update-date-card.is-next,
.update-date-carousel[data-update-grid] .update-date-card.is-next {
  order: 3 !important;
  flex-basis: 30% !important;
  z-index: 3 !important;
  filter: saturate(.82) brightness(.82) !important;
}

.update-date-grid.update-date-carousel .update-date-card:hover,
.update-date-grid.update-date-carousel .update-date-card:focus-visible,
.update-date-grid.update-date-carousel .update-date-card[aria-expanded="true"],
.update-date-carousel[data-update-grid] .update-date-card:hover,
.update-date-carousel[data-update-grid] .update-date-card:focus-visible,
.update-date-carousel[data-update-grid] .update-date-card[aria-expanded="true"] {
  transform: none !important;
  translate: none !important;
  background: transparent !important;
}

.update-date-grid.update-date-carousel .update-date-card .update-date-card__label,
.update-date-carousel[data-update-grid] .update-date-card .update-date-card__label {
  position: absolute !important;
  left: 20px !important;
  top: 44% !important;
  right: 20px !important;
  bottom: auto !important;
  transform: translateY(-50%) !important;
  display: block !important;
  margin: 0 !important;
  max-width: calc(100% - 40px) !important;
  text-align: left !important;
  line-height: 1.12 !important;
  z-index: 5 !important;
}

.update-date-grid.update-date-carousel .update-date-card .update-date-card__count,
.update-date-carousel[data-update-grid] .update-date-card .update-date-card__count {
  position: absolute !important;
  left: 20px !important;
  bottom: 17px !important;
  top: auto !important;
  right: auto !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  margin: 0 !important;
  z-index: 5 !important;
  font-size: .92rem !important;
  line-height: 1 !important;
}

.update-date-grid.update-date-carousel .update-detail-popover,
.update-date-carousel[data-update-grid] .update-detail-popover {
  position: absolute !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  bottom: auto !important;
  width: auto !important;
  height: auto !important;
  max-height: none !important;
  margin: 0 !important;
  overflow: visible !important;
  transform: none !important;
  z-index: 980 !important;
}

@media (max-width: 900px) {
  .update-date-grid.update-date-carousel,
  .update-date-carousel[data-update-grid] {
    height: 154px !important;
    min-height: 154px !important;
    gap: 16px !important;
  }
  .update-date-grid.update-date-carousel .update-date-card,
  .update-date-carousel[data-update-grid] .update-date-card,
  .update-date-grid.update-date-carousel .update-date-card.has-thumbnail,
  .update-date-carousel[data-update-grid] .update-date-card.has-thumbnail {
    height: 140px !important;
    min-height: 140px !important;
    max-height: 140px !important;
  }
}

@media (max-width: 620px) {
  .update-date-grid.update-date-carousel,
  .update-date-carousel[data-update-grid] {
    height: 146px !important;
    min-height: 146px !important;
  }
  .update-date-grid.update-date-carousel .update-date-card.is-prev,
  .update-date-grid.update-date-carousel .update-date-card.is-next,
  .update-date-carousel[data-update-grid] .update-date-card.is-prev,
  .update-date-carousel[data-update-grid] .update-date-card.is-next {
    display: none !important;
  }
  .update-date-grid.update-date-carousel .update-date-card.is-active,
  .update-date-carousel[data-update-grid] .update-date-card.is-active {
    flex-basis: 100% !important;
  }
  .update-date-grid.update-date-carousel .update-date-card,
  .update-date-carousel[data-update-grid] .update-date-card,
  .update-date-grid.update-date-carousel .update-date-card.has-thumbnail,
  .update-date-carousel[data-update-grid] .update-date-card.has-thumbnail {
    height: 132px !important;
    min-height: 132px !important;
    max-height: 132px !important;
  }
}

/* NV0.0.5g: 更新情報カルーセルの横スライド演出を復活。
   縦位置はNV0.0.5fのflexレール固定を維持し、X方向だけをアニメーションする。 */
.update-date-grid.update-date-carousel,
.update-date-carousel[data-update-grid] {
  --update-slide-distance: calc(100% + clamp(18px, 3vw, 34px));
}

.update-date-grid.update-date-carousel .update-date-card,
.update-date-carousel[data-update-grid] .update-date-card {
  will-change: transform, opacity;
}

.update-date-grid.update-date-carousel .update-date-card.slide-next-from-active-to-prev,
.update-date-carousel[data-update-grid] .update-date-card.slide-next-from-active-to-prev,
.update-date-grid.update-date-carousel .update-date-card.slide-next-from-next-to-active,
.update-date-carousel[data-update-grid] .update-date-card.slide-next-from-next-to-active {
  animation: update-slide-from-right .56s cubic-bezier(.22, .8, .2, 1) both !important;
}

.update-date-grid.update-date-carousel .update-date-card.slide-next-from-hidden-to-next,
.update-date-carousel[data-update-grid] .update-date-card.slide-next-from-hidden-to-next {
  animation: update-slide-in-from-right .56s cubic-bezier(.22, .8, .2, 1) both !important;
}

.update-date-grid.update-date-carousel .update-date-card.slide-prev-from-active-to-next,
.update-date-carousel[data-update-grid] .update-date-card.slide-prev-from-active-to-next,
.update-date-grid.update-date-carousel .update-date-card.slide-prev-from-prev-to-active,
.update-date-carousel[data-update-grid] .update-date-card.slide-prev-from-prev-to-active {
  animation: update-slide-from-left .56s cubic-bezier(.22, .8, .2, 1) both !important;
}

.update-date-grid.update-date-carousel .update-date-card.slide-prev-from-hidden-to-prev,
.update-date-carousel[data-update-grid] .update-date-card.slide-prev-from-hidden-to-prev {
  animation: update-slide-in-from-left .56s cubic-bezier(.22, .8, .2, 1) both !important;
}

@keyframes update-slide-from-right {
  from { transform: translateX(var(--update-slide-distance)); opacity: .72; }
  to { transform: translateX(0); opacity: 1; }
}

@keyframes update-slide-from-left {
  from { transform: translateX(calc(var(--update-slide-distance) * -1)); opacity: .72; }
  to { transform: translateX(0); opacity: 1; }
}

@keyframes update-slide-in-from-right {
  from { transform: translateX(34%); opacity: 0; }
  to { transform: translateX(0); opacity: 1; }
}

@keyframes update-slide-in-from-left {
  from { transform: translateX(-34%); opacity: 0; }
  to { transform: translateX(0); opacity: 1; }
}

.update-date-grid.update-date-carousel:hover .update-date-card,
.update-date-carousel[data-update-grid]:hover .update-date-card,
.update-date-grid.update-date-carousel.is-showing-popover .update-date-card,
.update-date-carousel[data-update-grid].is-showing-popover .update-date-card {
  animation-play-state: paused !important;
}

@media (prefers-reduced-motion: reduce) {
  .update-date-grid.update-date-carousel .update-date-card,
  .update-date-carousel[data-update-grid] .update-date-card {
    animation: none !important;
  }
}


/* NV0.0.5h: 更新情報カルーセルを絶対配置レールで根本修正。
   3枚のカードはtop:0固定で同じ高さに揃え、X方向だけtransitionでスライドする。 */
.update-date-grid.update-date-carousel,
.update-date-carousel[data-update-grid] {
  display: block !important;
  position: relative !important;
  height: 172px !important;
  min-height: 172px !important;
  overflow: visible !important;
  isolation: isolate !important;
  perspective: none !important;
  --carousel-card-width: min(31.5%, 360px);
  --carousel-side-offset: min(34vw, 390px);
}

.update-date-grid.update-date-carousel .update-date-card,
.update-date-carousel[data-update-grid] .update-date-card,
.update-date-grid.update-date-carousel .update-date-card.has-thumbnail,
.update-date-carousel[data-update-grid] .update-date-card.has-thumbnail {
  position: absolute !important;
  display: block !important;
  top: 0 !important;
  left: 50% !important;
  right: auto !important;
  bottom: auto !important;
  width: var(--carousel-card-width) !important;
  min-width: 220px !important;
  max-width: 360px !important;
  height: 150px !important;
  min-height: 150px !important;
  max-height: 150px !important;
  margin: 0 !important;
  flex: none !important;
  order: 0 !important;
  align-self: auto !important;
  justify-self: auto !important;
  translate: none !important;
  transform-origin: top center !important;
  transition:
    transform .62s cubic-bezier(.22, .8, .2, 1),
    opacity .42s ease,
    filter .42s ease,
    border-color .18s ease !important;
  animation: none !important;
  will-change: transform, opacity !important;
}

.update-date-grid.update-date-carousel .update-date-card.is-active,
.update-date-carousel[data-update-grid] .update-date-card.is-active {
  transform: translateX(-50%) !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  z-index: 5 !important;
  filter: none !important;
}

.update-date-grid.update-date-carousel .update-date-card.is-prev,
.update-date-carousel[data-update-grid] .update-date-card.is-prev {
  transform: translateX(calc(-50% - var(--carousel-side-offset))) !important;
  opacity: .72 !important;
  pointer-events: auto !important;
  z-index: 4 !important;
  filter: saturate(.82) brightness(.82) !important;
}

.update-date-grid.update-date-carousel .update-date-card.is-next,
.update-date-carousel[data-update-grid] .update-date-card.is-next {
  transform: translateX(calc(-50% + var(--carousel-side-offset))) !important;
  opacity: .72 !important;
  pointer-events: auto !important;
  z-index: 4 !important;
  filter: saturate(.82) brightness(.82) !important;
}

.update-date-grid.update-date-carousel .update-date-card.is-hidden,
.update-date-carousel[data-update-grid] .update-date-card.is-hidden {
  display: block !important;
  transform: translateX(calc(-50% + var(--carousel-side-offset) * 1.8)) !important;
  opacity: 0 !important;
  pointer-events: none !important;
  z-index: 1 !important;
  filter: none !important;
}

.update-date-grid.update-date-carousel .update-date-card.slide-next-from-active-to-prev,
.update-date-grid.update-date-carousel .update-date-card.slide-next-from-next-to-active,
.update-date-grid.update-date-carousel .update-date-card.slide-next-from-hidden-to-next,
.update-date-grid.update-date-carousel .update-date-card.slide-prev-from-active-to-next,
.update-date-grid.update-date-carousel .update-date-card.slide-prev-from-prev-to-active,
.update-date-grid.update-date-carousel .update-date-card.slide-prev-from-hidden-to-prev,
.update-date-carousel[data-update-grid] .update-date-card.slide-next-from-active-to-prev,
.update-date-carousel[data-update-grid] .update-date-card.slide-next-from-next-to-active,
.update-date-carousel[data-update-grid] .update-date-card.slide-next-from-hidden-to-next,
.update-date-carousel[data-update-grid] .update-date-card.slide-prev-from-active-to-next,
.update-date-carousel[data-update-grid] .update-date-card.slide-prev-from-prev-to-active,
.update-date-carousel[data-update-grid] .update-date-card.slide-prev-from-hidden-to-prev {
  animation: none !important;
}

.update-date-grid.update-date-carousel .update-detail-popover,
.update-date-carousel[data-update-grid] .update-detail-popover {
  position: absolute !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  z-index: 980 !important;
}

@media (max-width: 900px) {
  .update-date-grid.update-date-carousel,
  .update-date-carousel[data-update-grid] {
    height: 162px !important;
    min-height: 162px !important;
    --carousel-card-width: min(58%, 360px);
    --carousel-side-offset: 52vw;
  }
  .update-date-grid.update-date-carousel .update-date-card,
  .update-date-carousel[data-update-grid] .update-date-card,
  .update-date-grid.update-date-carousel .update-date-card.has-thumbnail,
  .update-date-carousel[data-update-grid] .update-date-card.has-thumbnail {
    height: 140px !important;
    min-height: 140px !important;
    max-height: 140px !important;
    min-width: 0 !important;
  }
}

@media (max-width: 620px) {
  .update-date-grid.update-date-carousel,
  .update-date-carousel[data-update-grid] {
    height: 148px !important;
    min-height: 148px !important;
    --carousel-card-width: min(78%, 340px);
  }
  .update-date-grid.update-date-carousel .update-date-card,
  .update-date-carousel[data-update-grid] .update-date-card,
  .update-date-grid.update-date-carousel .update-date-card.has-thumbnail,
  .update-date-carousel[data-update-grid] .update-date-card.has-thumbnail {
    height: 132px !important;
    min-height: 132px !important;
    max-height: 132px !important;
  }
  .update-date-grid.update-date-carousel .update-date-card.is-prev,
  .update-date-grid.update-date-carousel .update-date-card.is-next,
  .update-date-carousel[data-update-grid] .update-date-card.is-prev,
  .update-date-carousel[data-update-grid] .update-date-card.is-next {
    opacity: .36 !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .update-date-grid.update-date-carousel .update-date-card,
  .update-date-carousel[data-update-grid] .update-date-card {
    transition: opacity .2s ease !important;
  }
}


/* NV0.0.6: spot detail page */
.spot-detail-page {
  --spot-accent-red: rgba(184, 35, 42, 0.94);
  --spot-accent-red-soft: rgba(184, 35, 42, 0.44);
  --spot-accent-red-faint: rgba(184, 35, 42, 0.18);
  --corner-line: var(--spot-accent-red);
}

.spot-detail-hero {
  position: relative;
  min-height: 210px;
  padding: 72px 28px 28px;
  overflow: hidden;
  isolation: isolate;
  background: rgb(18, 13, 25);
}

[data-theme="light"] .spot-detail-hero {
  background: rgb(248, 244, 250);
}

.spot-detail-hero__image {
  position: absolute;
  inset: 0;
  z-index: -2;
  opacity: 0.36;
}

.spot-detail-hero__image::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, var(--bg) 0%, rgba(10, 8, 14, 0.72) 46%, rgba(10, 8, 14, 0.18) 100%);
}

[data-theme="light"] .spot-detail-hero__image::after {
  background: linear-gradient(90deg, var(--bg) 0%, rgba(246, 242, 250, 0.76) 46%, rgba(246, 242, 250, 0.24) 100%);
}

.spot-detail-hero__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.spot-detail-hero__body {
  position: relative;
  z-index: 1;
}

.spot-detail-hero h1 {
  margin: 0 0 14px;
  font-size: clamp(2rem, 4.2vw, 3.6rem);
  line-height: 1.14;
  letter-spacing: 0.07em;
}

.spot-detail-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.spot-detail-pill {
  display: inline-flex;
  align-items: center;
  min-height: 34px;
  padding: 6px 14px;
  border: 1px solid var(--spot-accent-red-soft);
  border-bottom: 3px solid var(--spot-accent-red);
  color: var(--button-text);
  background: rgb(31, 23, 40);
  font-weight: 900;
  text-decoration: none;
}

[data-theme="light"] .spot-detail-pill {
  background: rgb(246, 242, 250);
}

.spot-detail-pill:hover,
.spot-detail-pill:focus-visible {
  background: var(--spot-accent-red-faint);
  border-bottom-color: rgba(236, 98, 106, 0.98);
}

.spot-detail-section {
  position: relative;
  margin-top: 24px;
  padding: 24px 26px;
  background: rgb(18, 13, 25);
}

[data-theme="light"] .spot-detail-section {
  background: rgb(248, 244, 250);
}

.spot-detail-section h2 {
  margin: 0 0 16px;
  padding-bottom: 8px;
  border-bottom: 1px solid color-mix(in srgb, var(--spot-accent-red) 58%, transparent);
  font-size: clamp(1.35rem, 2.2vw, 1.85rem);
  letter-spacing: 0.08em;
}

.spot-overview-text {
  max-width: 920px;
  margin: 0;
  font-size: 1.02rem;
}

.spot-rating-list {
  display: grid;
  gap: 10px;
}

.spot-rating-row {
  display: grid;
  grid-template-columns: minmax(120px, 0.8fr) minmax(180px, 1.4fr) auto;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
  border-left: 4px solid var(--spot-accent-red-soft);
  background: rgb(31, 23, 40);
}

[data-theme="light"] .spot-rating-row {
  background: rgb(255, 250, 255);
}

.spot-rating-row--average {
  border-left-color: var(--spot-accent-red);
  background: rgb(55, 24, 32);
  font-weight: 900;
}

.spot-rating-row__label,
.spot-rating-row__value {
  font-weight: 900;
}

.spot-rating-row__value {
  text-align: right;
  white-space: nowrap;
}

.star-rating {
  display: inline-flex;
  gap: 3px;
  color: rgba(234, 212, 124, 0.98);
  font-size: 1.32rem;
  line-height: 1;
  letter-spacing: 0.04em;
  text-shadow: 0 1px 8px rgba(0, 0, 0, 0.34);
}

.star-rating__star {
  position: relative;
  display: inline-block;
  color: rgba(234, 212, 124, 0.26);
}

.star-rating__star--full {
  color: rgba(234, 212, 124, 0.98);
}

.star-rating__star--half::before {
  content: "★";
  position: absolute;
  inset: 0 auto 0 0;
  width: 50%;
  overflow: hidden;
  color: rgba(234, 212, 124, 0.98);
}

.spot-info-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}

.spot-info-card,
.impression-card,
.visit-record-card {
  padding: 16px 18px;
  background: rgb(31, 23, 40);
  border-left: 4px solid var(--spot-accent-red-soft);
}

[data-theme="light"] .spot-info-card,
[data-theme="light"] .impression-card,
[data-theme="light"] .visit-record-card {
  background: rgb(255, 250, 255);
}

.spot-info-card h3,
.visit-record-card h3,
.impression-card h3 {
  margin: 0 0 10px;
  font-size: 1.08rem;
  letter-spacing: 0.05em;
}

.spot-info-card p,
.impression-card p,
.visit-record-body p {
  margin: 0;
}

.spot-date-list {
  margin: 0;
  padding-left: 1.2em;
}

.baketan-table-wrap {
  width: 100%;
  overflow-x: auto;
}

.baketan-table {
  width: 100%;
  min-width: 720px;
  border-collapse: collapse;
  font-size: 0.94rem;
}

.baketan-table th,
.baketan-table td {
  padding: 10px 12px;
  border-bottom: 1px solid color-mix(in srgb, var(--spot-accent-red) 42%, transparent);
  text-align: left;
  vertical-align: top;
}

.baketan-table th {
  color: var(--button-text);
  background: rgba(140, 28, 34, 0.34);
  white-space: nowrap;
}

.baketan-date-group + .baketan-date-group tr:first-child > * {
  border-top: 2px solid color-mix(in srgb, var(--spot-accent-red) 76%, transparent);
}

.baketan-visit-date {
  min-width: 11.5em;
  font-weight: 700;
  vertical-align: middle !important;
  background: color-mix(in srgb, var(--panel-soft) 82%, var(--spot-accent-red) 18%);
}

.baketan-simultaneous {
  display: inline-block;
  margin-left: 6px;
  padding: 2px 7px;
  border: 1px solid color-mix(in srgb, var(--spot-accent-red) 68%, transparent);
  border-radius: 999px;
  color: var(--button-text);
  background: rgba(140, 28, 34, 0.28);
  font-size: 0.76rem;
  font-weight: 700;
  white-space: nowrap;
}

.baketan-combined-values {
  display: grid;
  gap: 7px;
}

.baketan-combined-value {
  min-height: 1.7em;
}

.baketan-combined-value.is-simultaneous {
  position: relative;
  padding-top: 7px;
  border-top: 1px dashed color-mix(in srgb, var(--spot-accent-red) 48%, transparent);
}

.baketan-combined-value.is-simultaneous::before {
  content: "＋";
  margin-right: 5px;
  color: var(--spot-accent-red);
  font-weight: 800;
}

.visit-record-list,
.impression-list {
  display: grid;
  gap: 16px;
}

.visit-record-body {
  display: grid;
  gap: 14px;
}

.visit-record-body h4 {
  margin: 10px 0 0;
  padding-left: 12px;
  border-left: 4px solid var(--spot-accent-red);
  font-size: 1.04rem;
}

.visit-photo {
  margin: 4px 0;
}

.visit-photo img,
.visit-photo__placeholder {
  width: min(100%, 860px);
  max-height: 520px;
  object-fit: cover;
  display: block;
  border: 1px solid color-mix(in srgb, var(--spot-accent-red) 44%, transparent);
}

.visit-photo__placeholder {
  min-height: 220px;
  display: grid;
  place-items: center;
  color: var(--muted);
  background: linear-gradient(135deg, rgba(78, 45, 104, 0.44), rgba(14, 10, 20, 0.18));
  font-weight: 900;
  letter-spacing: 0.12em;
}

[data-theme="light"] .visit-photo__placeholder {
  background: linear-gradient(135deg, rgba(188, 147, 218, 0.36), rgba(246, 242, 250, 0.18));
}

.visit-photo figcaption {
  margin-top: 6px;
  color: var(--muted);
  font-size: 0.88rem;
}

.spot-detail-page .back-link-row--bottom {
  margin: 28px 0 0;
  text-align: center;
}

.spot-detail-page .back-link-row--bottom .tag-link,
.spot-detail-page .back-to-prefectures {
  border-bottom-color: var(--spot-accent-red) !important;
}

@media (max-width: 820px) {
  .spot-detail-hero {
    padding: 68px 18px 22px;
  }

  .spot-detail-section {
    padding: 20px 18px;
  }

  .spot-info-grid {
    grid-template-columns: 1fr;
  }

  .spot-rating-row {
    grid-template-columns: 1fr;
    gap: 6px;
  }

  .spot-rating-row__value {
    text-align: left;
  }
}


/* NV0.0.7c: spot detail display adjustments */
.spot-overview-section {
  overflow: hidden;
  min-height: 210px;
  isolation: isolate;
}

.spot-overview-section.has-overview-image {
  padding-right: clamp(24px, 34vw, 390px);
}

.spot-overview-content {
  position: relative;
  z-index: 1;
}

.spot-overview-thumb {
  position: absolute;
  inset: 0 0 0 auto;
  width: min(38%, 430px);
  z-index: 0;
  pointer-events: none;
}

.spot-overview-thumb::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(90deg, rgb(18, 13, 25) 0%, rgba(18, 13, 25, .82) 24%, rgba(18, 13, 25, .18) 58%, rgba(18, 13, 25, 0) 100%);
}

[data-theme="light"] .spot-overview-thumb::before {
  background: linear-gradient(90deg, rgb(248, 244, 250) 0%, rgba(248, 244, 250, .84) 24%, rgba(248, 244, 250, .22) 58%, rgba(248, 244, 250, 0) 100%);
}

.spot-overview-thumb::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  background: linear-gradient(180deg, rgba(18, 13, 25, .18), rgba(18, 13, 25, .42));
}

[data-theme="light"] .spot-overview-thumb::after {
  background: linear-gradient(180deg, rgba(248, 244, 250, .08), rgba(248, 244, 250, .34));
}

.spot-overview-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: .78;
}

.spot-info-card p + p,
.spot-info-card p + .spot-info-bullet-list,
.spot-info-card .spot-info-bullet-list + p,
.spot-info-card .spot-info-bullet-list + .spot-info-bullet-list {
  margin-top: 10px;
}

.spot-info-bullet-list {
  margin: 0;
  padding-left: 1.25em;
}

.spot-info-bullet-list li + li {
  margin-top: 6px;
}

.visit-switcher {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: -4px 0 18px;
}

.visit-switcher__button {
  min-height: 36px;
  padding: 7px 14px;
  border: 1px solid color-mix(in srgb, var(--spot-accent-red) 52%, transparent);
  border-bottom: 3px solid var(--spot-accent-red-soft);
  background: rgb(31, 23, 40);
  color: var(--text);
  font-weight: 900;
  letter-spacing: .04em;
  cursor: pointer;
}

.visit-switcher__label--mobile {
  display: none;
}

.visit-switcher__button:hover,
.visit-switcher__button:focus-visible,
.visit-switcher__button.is-active {
  border-bottom-color: var(--spot-accent-red);
  background: rgb(69, 27, 38);
}

[data-theme="light"] .visit-switcher__button {
  background: rgb(255, 250, 255);
  color: #3d1720;
}

[data-theme="light"] .visit-switcher__button:hover,
[data-theme="light"] .visit-switcher__button:focus-visible,
[data-theme="light"] .visit-switcher__button.is-active {
  background: rgb(244, 222, 232);
}

.visit-panel {
  display: none;
}

.visit-panel.is-active {
  display: block;
}

.impression-card--global {
  display: block;
}

@media (max-width: 820px) {
  .spot-overview-section.has-overview-image {
    padding-right: 18px;
    padding-bottom: 140px;
  }

  .spot-overview-thumb {
    inset: auto 0 0 0;
    width: 100%;
    height: 150px;
  }

  .spot-overview-thumb::before {
    background: linear-gradient(180deg, rgb(18, 13, 25) 0%, rgba(18, 13, 25, .82) 28%, rgba(18, 13, 25, .12) 100%);
  }

  [data-theme="light"] .spot-overview-thumb::before {
    background: linear-gradient(180deg, rgb(248, 244, 250) 0%, rgba(248, 244, 250, .86) 28%, rgba(248, 244, 250, .14) 100%);
  }
}

/* NV0.0.7: baketan reaction colors */
.baketan-color {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 2px 10px;
  border-radius: 999px;
  border: 1px solid color-mix(in srgb, var(--spot-accent-red) 42%, transparent);
  font-weight: 900;
  white-space: nowrap;
}

.baketan-color--abnormal {
  background: #3a32c3;
  color: #ff0000;
}

.baketan-color--red {
  color: #ff0000;
}

.baketan-color--blue {
  color: inherit;
}

/* NV0.0.7a: rich text colors for spot articles */
.rich-color-red {
  color: #ff0000;
}

.rich-color-abnormal {
  background: #3a32c3;
  color: #ff0000;
  padding: 0 .08em;
}

.rich-style-bold {
  font-weight: 900;
}

.rich-style-underline {
  text-decoration: underline;
  text-decoration-thickness: .08em;
  text-underline-offset: .18em;
}

.rich-style-strike {
  text-decoration: line-through;
  text-decoration-thickness: .08em;
}

.rich-style-underline.rich-style-strike,
.rich-style-strike.rich-style-underline {
  text-decoration-line: underline line-through;
}

/* NV0.0.7b: consecutive image carousel on spot detail pages */
.visit-photo-carousel {
  width: min(100%, 860px);
  position: relative;
  margin: 4px 0;
}

.visit-photo-carousel__stage {
  position: relative;
  overflow: hidden;
  width: 100%;
}

.visit-photo-carousel__slide {
  display: none;
  margin: 0;
}

.visit-photo-carousel__slide.is-active {
  display: block;
  width: 100%;
}

.visit-photo-carousel__slide img {
  width: auto;
  max-width: 100%;
  height: auto;
  max-height: min(82vh, 920px);
  object-fit: contain;
  margin: 0 auto;
}

.visit-photo-carousel__button {
  position: absolute;
  top: 50%;
  z-index: 2;
  transform: translateY(-50%);
  width: 42px;
  height: 42px;
  border-radius: 999px;
  border: 1px solid color-mix(in srgb, var(--spot-accent-red) 62%, transparent);
  background: rgba(10, 8, 13, .74);
  color: var(--text);
  font-size: 1.4rem;
  font-weight: 900;
  cursor: pointer;
}

.visit-photo-carousel__button:hover,
.visit-photo-carousel__button:focus-visible {
  border-color: var(--spot-accent-red);
  background: rgba(140, 28, 34, .62);
}

.visit-photo-carousel__button--prev {
  left: 10px;
}

.visit-photo-carousel__button--next {
  right: 10px;
}

.visit-photo-carousel__counter {
  position: absolute;
  right: 12px;
  bottom: 10px;
  z-index: 2;
  padding: 4px 9px;
  border-radius: 999px;
  background: rgba(0, 0, 0, .58);
  color: #fff;
  font-weight: 900;
  font-size: .86rem;
}

[data-theme="light"] .visit-photo-carousel__button {
  background: rgba(255, 255, 255, .82);
  color: #3d1720;
}

@media (max-width: 640px) {
  .visit-photo-carousel__button {
    width: 36px;
    height: 36px;
    font-size: 1.16rem;
  }
}

/* NV0.0.7d: move detail thumbnail from overview block to title block right side */
.spot-detail-hero.has-hero-image {
  min-height: 230px;
  padding-right: clamp(28px, 42vw, 560px);
}

.spot-detail-hero.has-hero-image .back-to-prefectures--top {
  z-index: 3;
}

.spot-detail-hero.has-hero-image .spot-detail-hero__image {
  inset: 0 0 0 auto;
  width: min(42%, 520px);
  z-index: 0;
  opacity: 1;
  border-left: 1px solid color-mix(in srgb, var(--spot-accent-red) 36%, transparent);
}

.spot-detail-hero.has-hero-image .spot-detail-hero__image::after {
  background: linear-gradient(90deg, rgb(18, 13, 25) 0%, rgba(18, 13, 25, .82) 16%, rgba(18, 13, 25, .30) 48%, rgba(18, 13, 25, 0) 100%);
}

[data-theme="light"] .spot-detail-hero.has-hero-image .spot-detail-hero__image::after {
  background: linear-gradient(90deg, rgb(248, 244, 250) 0%, rgba(248, 244, 250, .84) 16%, rgba(248, 244, 250, .32) 48%, rgba(248, 244, 250, 0) 100%);
}

.spot-detail-hero.has-hero-image .spot-detail-hero__image img {
  opacity: .86;
}

.spot-detail-hero.has-hero-image .spot-detail-hero__body {
  z-index: 2;
}

.spot-overview-section {
  min-height: 0;
}

.spot-overview-section.has-overview-image {
  padding-right: 24px;
}

.spot-overview-thumb {
  display: none;
}

@media (max-width: 820px) {
  .spot-detail-hero.has-hero-image {
    padding-right: 18px;
    padding-bottom: 150px;
  }

  .spot-detail-hero.has-hero-image .spot-detail-hero__image {
    inset: auto 0 0 0;
    width: 100%;
    height: 150px;
    border-left: 0;
    border-top: 1px solid color-mix(in srgb, var(--spot-accent-red) 36%, transparent);
  }

  .spot-detail-hero.has-hero-image .spot-detail-hero__image::after {
    background: linear-gradient(180deg, rgb(18, 13, 25) 0%, rgba(18, 13, 25, .74) 35%, rgba(18, 13, 25, .12) 100%);
  }

  [data-theme="light"] .spot-detail-hero.has-hero-image .spot-detail-hero__image::after {
    background: linear-gradient(180deg, rgb(248, 244, 250) 0%, rgba(248, 244, 250, .78) 35%, rgba(248, 244, 250, .14) 100%);
  }
}

/* NV0.0.7m: article body sections split by ---- */
.visit-article-frame {
  display: grid;
  gap: 12px;
  padding: 14px 16px;
  border: 1px solid color-mix(in srgb, var(--spot-accent-red) 36%, transparent);
  background: rgba(255, 255, 255, .035);
}

[data-theme="light"] .visit-article-frame {
  background: rgba(255, 255, 255, .74);
}

.visit-article-frame + .visit-article-frame {
  margin-top: 14px;
}

.visit-article-frame p {
  margin: 0;
  line-height: 1.95;
}

.visit-article-frame .visit-photo,
.visit-article-frame .visit-photo-carousel {
  margin: 0;
}

/* NV0.1.0e: show each frame's prose beside its image group on PC */
.visit-article-frame__layout {
  display: grid;
  grid-template-columns: minmax(0, 3fr) minmax(250px, 2fr);
  align-items: start;
  gap: clamp(18px, 2.4vw, 34px);
}

.visit-article-frame__media,
.visit-article-frame__text {
  min-width: 0;
}

.visit-article-frame__media {
  align-self: start;
}

.visit-article-frame__media .visit-photo,
.visit-article-frame__media .visit-photo-carousel {
  width: 100%;
  max-width: none;
}

.visit-article-frame__media .visit-photo img,
.visit-article-frame__media .visit-photo__placeholder,
.visit-article-frame__media .visit-photo-carousel__stage {
  width: 100%;
}

.visit-article-frame__media .visit-photo img {
  max-height: min(72vh, 760px);
}

.visit-article-frame__text {
  align-self: stretch;
  padding: 4px 0;
  overflow-wrap: anywhere;
}

.visit-article-frame__text p + p {
  margin-top: 1em;
}

@media (max-width: 760px) {
  .visit-article-frame__layout {
    grid-template-columns: minmax(0, 1fr);
    gap: 14px;
  }
}

/* NV0.0.7n: keep portrait photos portrait instead of forcing a landscape crop */
.visit-photo {
  display: block;
  width: 100%;
}

.visit-photo img {
  width: auto;
  max-width: 100%;
  height: auto;
  max-height: min(82vh, 920px);
  object-fit: contain;
  margin: 0 auto;
  background: rgba(0, 0, 0, .18);
}

.visit-photo-carousel__stage {
  display: grid;
  place-items: center;
}

.visit-photo-carousel__slide.is-active {
  width: 100%;
}


/* NV0.0.7o: restore image carousel navigation inside ---- article frames */
.visit-photo-carousel {
  max-width: 100%;
}

.visit-photo-carousel__stage {
  width: 100%;
}

.visit-photo-carousel__slide {
  width: 100%;
}

.visit-photo-carousel__slide:not(.is-active) {
  display: none !important;
}

.visit-photo-carousel__slide.is-active {
  display: block !important;
}

.visit-photo-carousel__button {
  pointer-events: auto;
}

/* NV0.1.0j: size mixed carousels before display and keep every photo uncropped */
.visit-photo-carousel.is-frame-pending .visit-photo-carousel__stage,
.visit-photo-carousel.is-frame-pending .visit-photo-carousel__button,
.visit-photo-carousel.is-frame-pending .visit-photo-carousel__counter {
  visibility: hidden;
}

.visit-photo-carousel.is-mixed-orientation .visit-photo-carousel__stage {
  aspect-ratio: var(--visit-carousel-aspect-ratio);
  background: rgba(0, 0, 0, .24);
}

.visit-photo-carousel.is-mixed-orientation .visit-photo-carousel__slide.is-active {
  display: grid !important;
  grid-template-rows: minmax(0, 1fr) auto;
  height: 100%;
}

.visit-photo-carousel.is-mixed-orientation .visit-photo-carousel__slide img {
  width: 100%;
  height: 100%;
  min-height: 0;
  max-height: none;
  object-fit: contain;
  object-position: center;
}

.visit-photo-carousel.is-mixed-orientation .visit-photo-carousel__slide figcaption {
  margin: 0;
  padding-top: 6px;
}

/* NV0.1.0k: preserve portrait photos completely inside the landscape frame */
.visit-photo-carousel.is-mixed-orientation .visit-photo-carousel__stage {
  position: relative;
  width: 100%;
  height: auto;
  min-height: 0;
}

.visit-photo-carousel.is-mixed-orientation .visit-photo-carousel__slide {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  margin: 0;
}

.visit-photo-carousel.is-mixed-orientation .visit-photo-carousel__slide.is-active {
  display: flex !important;
  flex-direction: column;
  align-items: stretch;
  justify-content: center;
}

.visit-photo-carousel.is-mixed-orientation .visit-photo-carousel__slide img {
  display: block;
  flex: 1 1 0;
  align-self: center;
  width: auto !important;
  height: auto !important;
  min-width: 0;
  min-height: 0;
  max-width: 100% !important;
  max-height: 100% !important;
  object-fit: contain !important;
  object-position: center center;
}

.visit-photo-carousel.is-mixed-orientation .visit-photo-carousel__slide img[data-photo-orientation="portrait"],
.visit-photo-carousel.is-mixed-orientation .visit-photo-carousel__slide img[data-photo-orientation="square"] {
  width: auto !important;
  height: 100% !important;
  max-width: 100% !important;
}

.visit-photo-carousel.is-mixed-orientation .visit-photo-carousel__slide figcaption {
  flex: 0 0 auto;
}

/* NV0.1.0l: use the portrait height and letterbox landscape photos vertically */
.visit-photo-carousel.is-mixed-orientation .visit-photo-carousel__slide img,
.visit-photo-carousel.is-mixed-orientation .visit-photo-carousel__slide img[data-photo-orientation="portrait"],
.visit-photo-carousel.is-mixed-orientation .visit-photo-carousel__slide img[data-photo-orientation="landscape"],
.visit-photo-carousel.is-mixed-orientation .visit-photo-carousel__slide img[data-photo-orientation="square"] {
  display: block;
  flex: 1 1 0;
  align-self: stretch;
  width: 100% !important;
  height: 100% !important;
  min-width: 0;
  min-height: 0;
  max-width: 100% !important;
  max-height: 100% !important;
  object-fit: contain !important;
  object-position: center center;
}

/* NV0.0.8: detail page display additions */
.spot-detail-page {
  background: rgb(18, 13, 25);
  padding: 0 0 28px;
}

[data-theme="light"] .spot-detail-page {
  background: rgb(248, 244, 250);
}

.spot-detail-page .section-title-row.spot-detail-hero {
  margin-bottom: 0;
}

.spot-detail-page .spot-detail-section {
  margin-top: 0;
  border-top: 1px solid color-mix(in srgb, var(--spot-accent-red) 26%, transparent);
}

.spot-detail-page .spot-detail-section + .spot-detail-section {
  margin-top: 0;
}

.nearby-spots-note {
  margin: -4px 0 18px;
  color: var(--muted);
  font-size: .92rem;
  line-height: 1.7;
}

.nearby-spot-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 14px;
}

.nearby-spot-card {
  display: grid;
  grid-template-columns: 92px minmax(0, 1fr);
  gap: 12px;
  align-items: stretch;
  min-height: 98px;
  padding: 10px;
  border: 1px solid color-mix(in srgb, var(--spot-accent-red) 34%, transparent);
  border-bottom: 3px solid var(--spot-accent-red);
  background: rgb(28, 20, 38);
  color: var(--text);
  text-decoration: none;
  transition: background .16s ease, transform .16s ease, border-color .16s ease;
}

[data-theme="light"] .nearby-spot-card {
  background: rgb(255, 252, 255);
}

.nearby-spot-card:hover,
.nearby-spot-card:focus-visible {
  background: color-mix(in srgb, var(--spot-accent-red-faint) 72%, rgb(28, 20, 38));
  border-color: color-mix(in srgb, var(--spot-accent-red) 58%, transparent);
  transform: translateY(-1px);
}

[data-theme="light"] .nearby-spot-card:hover,
[data-theme="light"] .nearby-spot-card:focus-visible {
  background: color-mix(in srgb, var(--spot-accent-red-faint) 42%, rgb(255, 252, 255));
}

.nearby-spot-card--map-only {
  opacity: .92;
}

.nearby-spot-card__image {
  min-width: 0;
  overflow: hidden;
  background: rgba(0, 0, 0, .24);
  border: 1px solid color-mix(in srgb, var(--spot-accent-red) 22%, transparent);
}

.nearby-spot-card__image img,
.nearby-spot-card__placeholder {
  width: 100%;
  height: 100%;
  min-height: 76px;
  display: grid;
  place-items: center;
}

.nearby-spot-card__image img {
  object-fit: cover;
}

.nearby-spot-card__placeholder {
  padding: 8px;
  color: var(--muted);
  font-size: .78rem;
  font-weight: 900;
  text-align: center;
  letter-spacing: .08em;
}

.nearby-spot-card__body {
  min-width: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 10px;
}

.nearby-spot-card__name {
  color: var(--button-text);
  font-size: 1.02rem;
  font-weight: 900;
  line-height: 1.45;
}

.nearby-spot-card__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  color: var(--muted);
  font-size: .82rem;
}

.nearby-spot-card__meta span {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 3px 7px;
  border: 1px solid color-mix(in srgb, var(--spot-accent-red) 24%, transparent);
  background: rgba(255, 255, 255, .04);
}

@media (max-width: 640px) {
  .nearby-spot-card {
    grid-template-columns: 76px minmax(0, 1fr);
  }
}
/* NV0.0.9: 昼探！の4項目表示と ---- 中枠 */
.day-explore-page .spot-detail-section { margin-top: 28px; }
.day-explore-page .visit-record-body { display: grid; gap: 18px; }
.day-explore-inner-frame p { white-space: normal; }
.day-explore-photo { margin: 18px auto; text-align: center; }
.day-explore-photo img { display: block; max-width: 100%; max-height: 720px; margin: 0 auto; border-radius: 8px; object-fit: contain; }
.day-explore-photo figcaption { margin-top: 8px; color: var(--muted-text, #bdb7c8); font-size: .9rem; }

/* NV0.0.9b: 昼探！県別導線と心霊スポット内部リンク */
.spot-internal-link {
  color: #f08b9a;
  font-weight: 800;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: .18em;
}

.spot-internal-link:hover,
.spot-internal-link:focus-visible {
  color: #ffd2d9;
}

[data-theme="light"] .spot-internal-link { color: #9d2135; }
[data-theme="light"] .spot-internal-link:hover,
[data-theme="light"] .spot-internal-link:focus-visible { color: #681323; }

.day-explore-public-list {
  display: grid;
  gap: 14px;
  margin-top: 22px;
}

.day-explore-public-card {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 18px;
  min-height: 92px;
  padding: 18px 20px;
  border: 1px solid var(--border);
  background: var(--panel);
  color: var(--text);
  text-decoration: none;
  transition: transform .18s ease, border-color .18s ease, background .18s ease;
}

.day-explore-public-card:hover,
.day-explore-public-card:focus-visible {
  transform: translateY(-2px);
  border-color: var(--accent);
}

.day-explore-public-card strong {
  display: block;
  color: var(--button-text);
  font-size: 1.18rem;
}

.day-explore-public-card p {
  margin: 8px 0 0;
  color: var(--muted);
  line-height: 1.7;
}

.day-explore-public-card > span {
  flex: 0 0 auto;
  color: var(--accent);
  font-weight: 900;
}

.day-explore-unclassified { margin-top: 28px; }

@media (max-width: 640px) {
  .day-explore-public-card { align-items: flex-start; flex-direction: column; }
}

/* NV0.0.9c: 心霊飯 */
.ghost-food-prefectures {
  display: grid;
  gap: 16px;
  margin-top: 22px;
}

.ghost-food-prefecture {
  border: 1px solid color-mix(in srgb, var(--accent) 35%, var(--border));
  background: color-mix(in srgb, var(--panel) 92%, transparent);
}

.ghost-food-prefecture > summary {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  padding: 16px 20px;
  cursor: pointer;
  color: var(--button-text);
  font-size: 1.15rem;
  font-weight: 900;
  list-style: none;
}

.ghost-food-prefecture > summary::-webkit-details-marker { display: none; }
.ghost-food-prefecture > summary::after { content: '＋'; color: var(--accent); font-size: 1.35rem; }
.ghost-food-prefecture[open] > summary::after { content: '－'; }
.ghost-food-prefecture > summary small { margin-left: auto; color: var(--muted); font-size: .86rem; }

.ghost-food-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
  padding: 0 18px 18px;
}

.ghost-food-card {
  min-width: 0;
  overflow: hidden;
  border: 1px solid var(--border);
  border-bottom: 3px solid color-mix(in srgb, var(--accent) 75%, #781522);
  background: var(--panel);
}

.ghost-food-carousel,
.ghost-food-card__no-photo {
  position: relative;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: rgba(0, 0, 0, .28);
}

.ghost-food-carousel__slides,
.ghost-food-carousel__slide,
.ghost-food-carousel__slide img {
  width: 100%;
  height: 100%;
}

.ghost-food-carousel__slide { display: none; margin: 0; }
.ghost-food-carousel__slide.is-active { display: block; }
.ghost-food-carousel__slide img { display: block; object-fit: contain; }

.ghost-food-carousel__arrow {
  position: absolute;
  top: 50%;
  z-index: 2;
  width: 42px;
  height: 42px;
  padding: 0;
  border: 1px solid rgba(255,255,255,.38);
  border-radius: 50%;
  background: rgba(9, 8, 12, .72);
  color: #fff;
  font-size: 1.25rem;
  transform: translateY(-50%);
  cursor: pointer;
}

.ghost-food-carousel__arrow--prev { left: 10px; }
.ghost-food-carousel__arrow--next { right: 10px; }
.ghost-food-carousel__arrow:hover,
.ghost-food-carousel__arrow:focus-visible { background: rgba(184, 50, 69, .9); }

.ghost-food-carousel__counter {
  position: absolute;
  right: 10px;
  bottom: 10px;
  padding: 3px 9px;
  border-radius: 999px;
  background: rgba(9, 8, 12, .76);
  color: #fff;
  font-size: .8rem;
  font-weight: 800;
}

.ghost-food-card__no-photo {
  display: grid;
  place-items: center;
  color: var(--muted);
  font-weight: 900;
  letter-spacing: .14em;
}

.ghost-food-card__body { padding: 16px 18px 20px; }
.ghost-food-card__body h2 { margin: 0 0 12px; color: var(--button-text); font-size: 1.22rem; }
.ghost-food-card__body h2 a { color: inherit; text-decoration-color: var(--accent); text-underline-offset: .2em; }
.ghost-food-card__body p { margin: 0; line-height: 1.85; overflow-wrap: anywhere; }

@media (max-width: 760px) {
  .ghost-food-grid { grid-template-columns: 1fr; padding: 0 12px 12px; }
  .ghost-food-prefecture > summary { padding: 14px 15px; }
}

/* NV0.2.1: automatically generated spot tags + tag result list */
.spot-auto-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 9px;
  margin: 14px 0 20px;
  padding: 0 2px;
}

.spot-auto-tag {
  display: inline-flex;
  align-items: center;
  min-height: 31px;
  padding: 4px 11px;
  border: 1px solid rgba(255, 255, 255, .26);
  border-radius: 999px;
  background: rgba(255, 255, 255, .07);
  color: inherit;
  font-size: .84rem;
  font-weight: 800;
  line-height: 1.25;
  text-decoration: none;
}

.spot-auto-tag:hover,
.spot-auto-tag:focus-visible {
  border-color: rgba(255, 255, 255, .6);
  background: rgba(255, 255, 255, .13);
}

.spot-auto-tag--red {
  border-color: rgba(255, 0, 0, .64);
  color: #ff0000;
}

.spot-auto-tag--abnormal {
  border-color: #5850e8;
  background: #3a32c3;
  color: #ff0000;
}

.spot-auto-tag--abnormal:hover,
.spot-auto-tag--abnormal:focus-visible {
  background: #4840d2;
}

.tag-result-list {
  display: grid;
  gap: 16px;
}

/* NV0.2.6c: keep the tag-list back link above the title instead of overlaying it. */
.tag-results-back-row {
  margin: 0 0 10px;
}

.tag-results-back-row .back-to-prefectures {
  position: static;
}

.tag-result-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 220px;
  min-height: 160px;
  overflow: hidden;
  color: inherit;
  text-decoration: none;
  background: var(--panel);
}

.tag-result-card:hover,
.tag-result-card:focus-visible {
  background: color-mix(in srgb, var(--panel) 84%, rgba(184, 35, 42, .3));
}

.tag-result-card__body {
  min-width: 0;
  padding: 20px 22px;
}

.tag-result-card__body h2 {
  margin: 0 0 10px;
  color: var(--button-text);
}

.tag-result-card__body p {
  margin: 12px 0 0;
  line-height: 1.75;
}

.tag-result-card__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}

.tag-result-card__meta span {
  padding: 3px 8px;
  border: 1px solid rgba(255, 255, 255, .18);
  border-radius: 999px;
  font-size: .8rem;
  font-weight: 800;
}

.tag-result-card__visual {
  min-height: 160px;
  background: rgba(0, 0, 0, .3);
}

.tag-result-card__visual img,
.tag-result-card__no-image {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 160px;
}

.tag-result-card__visual img { object-fit: cover; }
.tag-result-card__no-image { display: grid; place-items: center; color: var(--muted); font-weight: 900; }

@media (max-width: 760px) {
  .tag-result-card { grid-template-columns: 1fr; }
  .tag-result-card__visual { order: -1; min-height: 180px; }
  .tag-result-card__visual img,
  .tag-result-card__no-image { min-height: 180px; max-height: 240px; }

  /* NV0.2.6c: sorting stays available on PC, but is omitted on phones. */
  .prefecture-detail-page .sort-control-row,
  .category-detail-page .sort-control-row {
    display: none;
  }
}

/* NV0.2.4: comments / requests */
.community-page { max-width: 900px; margin-inline: auto; }
.community-form { display: grid; gap: 16px; padding: 22px; background: var(--panel); }
.community-form label { display: grid; gap: 7px; font-weight: 800; }
.community-form input, .community-form textarea {
  width: 100%; border: 1px solid var(--border); border-radius: 10px; padding: 10px 12px;
  background: var(--bg-soft); color: var(--text); font: inherit;
}
.community-form textarea { min-height: 130px; resize: vertical; }
.community-form--compact { padding: 0; background: transparent; }
.community-required { color: #ff8f98; font-size: .8rem; }
.community-optional, .community-form__note { color: var(--muted); font-size: .82rem; font-weight: 500; }
.community-form__note { margin: 0; }
.community-submit { justify-self: start; border: 1px solid var(--accent); border-radius: 999px; padding: 9px 18px; background: var(--accent); color: #fff; font: inherit; font-weight: 800; cursor: pointer; }
.community-honeypot { position: absolute !important; left: -10000px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }
.community-notice { margin: 14px 0; padding: 10px 12px; border-radius: 10px; }
.community-notice.is-success { border: 1px solid #4d8148; background: rgba(77,129,72,.18); }
.community-notice.is-error { border: 1px solid #b83b48; background: rgba(184,59,72,.18); }
.comment-list { display: grid; gap: 12px; }
.comment-card { padding: 15px 17px; border: 1px solid var(--border); border-radius: 12px; background: var(--bg-soft); }
.comment-card__head { display: flex; gap: 12px; justify-content: space-between; align-items: baseline; }
.comment-card__head time { color: var(--muted); font-size: .82rem; white-space: nowrap; }
.comment-card > p, .comment-reply p { margin: 8px 0 0; overflow-wrap: anywhere; }
.comment-reply { margin: 13px 0 0 28px; padding: 12px 14px; border-left: 3px solid var(--accent); background: var(--panel); }
.comment-form-wrap { margin-top: 24px; padding-top: 20px; border-top: 1px solid var(--border); }

@media (max-width: 620px) {
  .comment-card__head { align-items: flex-start; flex-direction: column; gap: 2px; }
  .comment-reply { margin-left: 10px; }
}

/* NV0.2.6: smartphone layout */
.mobile-view-switch,
.mobile-prefecture-lead {
  display: none;
}

.mobile-menu-toggle {
  display: none;
}

.visit-article-frame__media img {
  cursor: zoom-in;
}

.visit-photo-lightbox[hidden] {
  display: none;
}

.visit-photo-lightbox {
  position: fixed;
  inset: 0;
  z-index: 5000;
  display: grid;
  place-items: center;
  padding: 54px 16px 20px;
  background: rgba(0, 0, 0, .92);
}

.visit-photo-lightbox img {
  display: block;
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: calc(100dvh - 78px);
  object-fit: contain;
}

.visit-photo-lightbox__close {
  position: fixed;
  top: 10px;
  right: 12px;
  z-index: 5001;
  width: 42px;
  height: 42px;
  border: 1px solid rgba(255,255,255,.55);
  border-radius: 50%;
  background: rgba(20,20,20,.78);
  color: #fff;
  font-size: 1.55rem;
  line-height: 1;
  cursor: pointer;
}

body.is-visit-photo-lightbox-open {
  overflow: hidden;
}

@media (max-width: 760px) {
  /* NV0.2.6a: keep the smartphone canvas exactly within the viewport. */
  html,
  body {
    max-width: 100%;
    overflow-x: clip;
  }

  /* Mobile header: keep the logo visible and place the full navigation in a hamburger menu. */
  .site-header__inner {
    position: relative;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 10px;
    padding: 10px 12px;
  }

  .site-logo--image {
    width: min(240px, calc(100vw - 76px));
  }

  .mobile-menu-toggle {
    display: inline-grid;
    width: 44px;
    height: 44px;
    padding: 10px;
    place-content: center;
    gap: 5px;
    border: 1px solid rgba(143, 91, 255, .46);
    background: color-mix(in srgb, var(--bg) 88%, transparent);
    color: var(--button-text);
    cursor: pointer;
  }

  .mobile-menu-toggle__bar {
    display: block;
    width: 22px;
    height: 2px;
    background: currentColor;
    transition: transform .18s ease, opacity .18s ease;
  }

  .mobile-menu-toggle[aria-expanded="true"] .mobile-menu-toggle__bar:nth-child(1) {
    transform: translateY(7px) rotate(45deg);
  }

  .mobile-menu-toggle[aria-expanded="true"] .mobile-menu-toggle__bar:nth-child(2) {
    opacity: 0;
  }

  .mobile-menu-toggle[aria-expanded="true"] .mobile-menu-toggle__bar:nth-child(3) {
    transform: translateY(-7px) rotate(-45deg);
  }

  .site-nav {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    display: none;
    max-height: calc(100dvh - 64px);
    padding: 10px 12px 14px;
    overflow-y: auto;
    flex-direction: column;
    align-items: stretch;
    gap: 2px;
    border-bottom: 1px solid var(--border);
    background: color-mix(in srgb, var(--bg) 96%, transparent);
    backdrop-filter: blur(14px);
    box-shadow: 0 16px 30px rgba(0, 0, 0, .34);
  }

  .site-nav.is-mobile-open {
    display: flex;
  }

  .mobile-top-search-links {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    margin: 0 0 22px;
  }

  .mobile-top-search-links a {
    display: flex;
    min-height: 46px;
    align-items: center;
    justify-content: center;
    padding: 9px 10px;
    border: 1px solid var(--border);
    border-radius: 999px;
    background: var(--button-bg);
    color: var(--button-text);
    font-weight: 700;
    line-height: 1.25;
    text-align: center;
    text-decoration: none;
  }

  .mobile-top-search-links a:active,
  .mobile-top-search-links a:focus-visible {
    background: var(--button-hover);
  }

  .site-nav > .nav-button,
  .site-nav > .nav-item > .nav-button,
  .site-nav > .theme-toggle {
    width: 100%;
    justify-content: flex-start;
    padding: 10px 4px 11px;
  }

  .site-nav .nav-item {
    width: 100%;
  }

  .site-nav .dropdown-menu {
    position: static;
    display: grid;
    min-width: 0;
    margin: 0 0 4px 12px;
    padding: 0 0 0 12px;
    transform: none !important;
    border: 0;
    border-left: 1px solid rgba(143, 91, 255, .4);
    box-shadow: none;
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
  }

  .site-nav .dropdown-menu a {
    white-space: normal;
  }

  /* Top page */
  .updates-section,
  .update-date-grid {
    overflow: hidden !important;
  }

  .update-date-grid.update-date-carousel,
  .update-date-carousel[data-update-grid] {
    --carousel-card-width: 100%;
    --carousel-side-offset: 110vw;
  }

  .update-date-grid.update-date-carousel .update-date-card.is-prev,
  .update-date-grid.update-date-carousel .update-date-card.is-next,
  .update-date-carousel[data-update-grid] .update-date-card.is-prev,
  .update-date-carousel[data-update-grid] .update-date-card.is-next {
    opacity: 0 !important;
    pointer-events: none !important;
  }

  .update-date-grid.update-date-carousel .update-date-card.is-active,
  .update-date-carousel[data-update-grid] .update-date-card.is-active {
    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
  }

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

  .recommended-card__image {
    order: -1;
  }

  .recommended-viewport,
  .recommended-track {
    touch-action: pan-y;
  }

  .update-date-grid.update-date-carousel,
  .update-date-carousel[data-update-grid],
  .visit-photo-carousel {
    touch-action: pan-y;
  }

  .plan-list--wide {
    grid-template-columns: 1fr;
  }

  /* Prefecture/category selectors */
  .japan-map-wrap,
  .desktop-prefecture-lead {
    display: none;
  }

  .mobile-prefecture-lead {
    display: inline;
  }

  .prefecture-region-list,
  .category-grid {
    grid-template-columns: 1fr;
  }

  .prefecture-region-list {
    gap: 14px;
    margin-top: 20px;
  }

  .region-block,
  .category-search-card {
    min-height: 0;
    padding: 16px;
  }

  /* Prefecture/category result view switch */
  .mobile-view-switch {
    display: flex;
    align-items: center;
    gap: 7px;
    margin: 12px 0 14px;
    padding: 7px;
    border: 1px solid var(--border);
    background: color-mix(in srgb, var(--panel) 90%, transparent);
  }

  .mobile-view-switch > span {
    margin: 0 auto 0 4px;
    color: var(--muted);
    font-size: .8rem;
    font-weight: 800;
  }

  .mobile-view-button {
    min-height: 34px;
    padding: 5px 11px;
    border: 1px solid var(--border);
    background: transparent;
    color: var(--text);
    font: inherit;
    font-size: .82rem;
    font-weight: 900;
    cursor: pointer;
  }

  .mobile-view-button.is-active {
    border-color: var(--accent);
    background: var(--accent);
    color: #fff;
  }

  .mobile-switchable-spot-list.is-detail-view {
    display: flex;
    gap: 12px;
    overflow-x: auto;
    overflow-y: hidden;
    padding: 0 0 10px;
    scroll-snap-type: x mandatory;
    overscroll-behavior-inline: contain;
    scrollbar-width: thin;
  }

  .mobile-switchable-spot-list.is-detail-view .prefecture-spot-card {
    flex: 0 0 100%;
    display: flex;
    min-width: 0;
    min-height: 0;
    flex-direction: column;
    padding: 0;
    scroll-snap-align: start;
    scroll-snap-stop: always;
  }

  .mobile-switchable-spot-list.is-detail-view .prefecture-spot-card__visual {
    position: relative;
    inset: auto;
    order: -1;
    width: 100%;
    height: clamp(190px, 56vw, 280px);
    opacity: 1;
  }

  .mobile-switchable-spot-list.is-detail-view .prefecture-spot-card__visual::before {
    display: none;
  }

  .mobile-switchable-spot-list.is-detail-view .prefecture-spot-card__body {
    padding: 16px 17px 18px;
  }

  .mobile-switchable-spot-list.is-detail-view .prefecture-spot-card h2 {
    font-size: clamp(1.25rem, 5.4vw, 1.65rem);
  }

  .mobile-switchable-spot-list.is-list-view {
    display: grid;
    gap: 8px;
    overflow: visible;
  }

  .mobile-switchable-spot-list.is-list-view .prefecture-spot-card {
    display: block;
    min-height: 0;
    padding: 11px 12px;
  }

  .mobile-switchable-spot-list.is-list-view .prefecture-spot-card__visual,
  .mobile-switchable-spot-list.is-list-view .prefecture-spot-card__type {
    display: none;
  }

  .mobile-switchable-spot-list.is-list-view .prefecture-spot-card__body {
    gap: 5px;
    padding: 0;
  }

  .mobile-switchable-spot-list.is-list-view .prefecture-spot-card h2 {
    font-size: 1.02rem;
    line-height: 1.35;
  }

  .mobile-switchable-spot-list.is-list-view .prefecture-spot-card__fear {
    gap: 6px;
  }

  .mobile-switchable-spot-list.is-list-view .prefecture-spot-card__stars {
    font-size: .92rem;
  }

  .mobile-switchable-spot-list.is-list-view .prefecture-spot-card__sub {
    gap: 3px 12px;
    font-size: .78rem;
  }

  /* Spot detail */
  .spot-detail-section {
    padding: 14px 13px;
  }

  .spot-detail-section h2 {
    margin-bottom: 11px;
    padding-bottom: 6px;
    font-size: 1.2rem;
  }

  .spot-overview-text {
    max-width: none;
    font-size: .91rem;
    line-height: 1.72;
  }

  .spot-rating-list {
    gap: 6px;
  }

  .spot-rating-row {
    grid-template-columns: minmax(72px, auto) minmax(0, 1fr) auto;
    gap: 6px;
    padding: 7px 8px;
    border-left-width: 3px;
    font-size: .8rem;
  }

  .spot-rating-row__stars .star-rating,
  .spot-rating-row .star-rating {
    gap: 1px;
    font-size: .92rem;
  }

  .spot-rating-row__value {
    text-align: right;
  }

  .spot-info-grid {
    grid-template-columns: 1fr;
    gap: 8px;
  }

  .spot-info-card {
    padding: 11px 12px;
  }

  .baketan-table {
    min-width: 560px;
    font-size: .76rem;
  }

  .baketan-table th,
  .baketan-table td {
    padding: 6px 7px;
  }

  .baketan-visit-date {
    min-width: 8.5em;
  }

  .baketan-color {
    min-height: 22px;
    padding: 1px 6px;
  }

  .visit-record-card,
  .impression-card {
    padding: 11px 12px;
  }

  .visit-switcher {
    width: 100%;
    margin: -4px 0 14px;
    padding: 0 0 7px;
    flex-wrap: nowrap;
    gap: 7px;
    overflow-x: auto;
    overflow-y: hidden;
    overscroll-behavior-inline: contain;
    scrollbar-width: thin;
  }

  .visit-switcher__button {
    min-height: 34px;
    padding: 6px 12px;
    flex: 0 0 auto;
    white-space: nowrap;
    font-size: .82rem;
  }

  .visit-switcher__label--desktop {
    display: none;
  }

  .visit-switcher__label--mobile {
    display: inline;
  }

  .visit-article-frame {
    padding: 10px;
  }

  .visit-article-frame__layout {
    grid-template-columns: 1fr;
    gap: 10px;
  }

  .visit-article-frame__media {
    order: -1;
  }

  .visit-article-frame__media img {
    max-height: 76dvh;
  }

  .visit-article-frame__text,
  .impression-card p {
    font-size: .9rem;
    line-height: 1.75;
  }

  /* Exploration record prose only: a subtle step down from NV0.2.6. */
  .visit-article-frame__text {
    font-size: .86rem;
  }

  /* NV0.2.6b: keep Day Explore and the banzuke inside narrow phone viewports. */
  .day-explore-prefectures-page,
  .day-explore-list-page,
  .day-explore-page,
  .banzuke-page {
    width: 100%;
    min-width: 0;
    max-width: 100%;
  }

  .day-explore-prefectures-page .section-title-row,
  .day-explore-list-page .section-title-row,
  .day-explore-page .section-title-row,
  .day-explore-page .spot-detail-section {
    min-width: 0;
  }

  .day-explore-public-card {
    min-width: 0;
    padding: 14px 15px;
    gap: 8px;
  }

  .day-explore-public-card strong,
  .day-explore-inner-frame,
  .day-explore-copy {
    overflow-wrap: anywhere;
  }

  .day-explore-page .spot-detail-section {
    margin-top: 18px;
  }

  .banzuke-page {
    padding: 12px 7px;
  }

  .banzuke-page .panel-heading h1 {
    font-size: 1.45rem;
  }

  .banzuke-page .panel-heading p {
    font-size: .82rem;
  }

  .banzuke-table {
    width: 100%;
    min-width: 0;
    margin-top: 14px;
  }

  .banzuke-head,
  .banzuke-row {
    grid-template-columns: minmax(0, 1fr) 48px minmax(0, 1fr);
  }

  .banzuke-head {
    font-size: .92rem;
  }

  .banzuke-head span {
    padding: 7px 3px;
  }

  .banzuke-rank {
    padding: 6px 2px;
    font-size: .68rem;
    line-height: 1.3;
  }

  .banzuke-spot {
    min-height: 64px;
    padding: 6px 4px;
  }

  .banzuke-spot strong {
    font-size: .8rem;
    line-height: 1.35;
  }

  .banzuke-spot small {
    font-size: .62rem;
    line-height: 1.3;
  }
}

/* NV0.2.6d: show source images without gradient/filter processing in every theme. */
.prefecture-spot-card__visual::before,
.update-date-card.has-thumbnail .update-date-card__thumbnail::after,
.spot-detail-hero__image::after,
.spot-overview-thumb::before,
.spot-overview-thumb::after {
  content: none !important;
  display: none !important;
  background: none !important;
}

.prefecture-spot-card__visual,
.spot-detail-hero__image {
  opacity: 1 !important;
}

.prefecture-spot-card__visual img,
.update-date-card__thumbnail img,
.spot-detail-hero__image img,
.spot-overview-thumb img {
  opacity: 1 !important;
  filter: none !important;
  transform: none !important;
}

/* NV0.2.6d: keep the banzuke title and its explanatory line on one row each. */
@media (max-width: 640px) {
  .banzuke-page .panel-heading h1 {
    margin-bottom: 6px;
    white-space: nowrap;
    font-size: clamp(1.1rem, 5.7vw, 1.45rem);
    letter-spacing: 0;
  }

  .banzuke-page .panel-heading p {
    margin: 0;
    white-space: nowrap;
    font-size: clamp(.54rem, 2.35vw, .82rem);
    letter-spacing: -.02em;
  }
}

/* NV0.2.8: other-content hub and public information pages. */
.other-hub-heading {
  margin-bottom: 22px;
}

.other-hub-heading p {
  margin: 8px 0 0;
  color: var(--muted);
}

.other-hub-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}

.other-hub-card {
  position: relative;
  min-height: 260px;
  padding: 24px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  border: 1px solid var(--border);
  border-radius: 18px;
  background:
    radial-gradient(circle at 100% 0, rgba(184, 50, 69, .22), transparent 45%),
    var(--panel-soft);
  color: var(--text);
  text-decoration: none;
  transition: transform .18s ease, border-color .18s ease, background-color .18s ease;
}

.other-hub-card--ranking {
  background:
    radial-gradient(circle at 100% 0, rgba(154, 109, 39, .25), transparent 45%),
    var(--panel-soft);
}

.other-hub-card--day {
  background:
    radial-gradient(circle at 100% 0, rgba(54, 105, 104, .25), transparent 45%),
    var(--panel-soft);
}

.other-hub-card:hover,
.other-hub-card:focus-visible {
  transform: translateY(-3px);
  border-color: color-mix(in srgb, var(--accent) 75%, var(--border));
}

.other-hub-card:focus-visible {
  outline: 2px solid var(--text);
  outline-offset: 3px;
}

.other-hub-card__label {
  color: var(--muted);
  font-size: .78rem;
  letter-spacing: .08em;
}

.other-hub-card > strong {
  margin-top: 14px;
  font-size: clamp(1.35rem, 2.5vw, 1.8rem);
  line-height: 1.3;
}

.other-hub-card p {
  margin: 12px 0 22px;
  color: var(--muted);
  line-height: 1.75;
}

.other-hub-card__action {
  margin-top: auto;
  color: #fff;
  font-weight: 800;
}

.other-guide {
  margin-top: 28px;
  padding-top: 24px;
  border-top: 1px solid var(--border);
}

.other-guide h2 {
  margin: 0 0 14px;
  font-size: 1.2rem;
}

.other-guide-links {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 12px;
}

.other-guide-links a {
  display: grid;
  gap: 4px;
  padding: 16px;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: var(--bg-soft);
  color: var(--text);
  text-decoration: none;
}

.other-guide-links a:hover,
.other-guide-links a:focus-visible { background: var(--button-hover); }

.other-guide-links span {
  color: var(--muted);
  font-size: .82rem;
  line-height: 1.55;
}

.policy-page { line-height: 1.85; }

.policy-page .panel-heading {
  padding-bottom: 16px;
  border-bottom: 1px solid var(--border);
}

.policy-page__eyebrow {
  margin: 0 0 5px;
  color: var(--accent);
  font-size: .72rem;
  font-weight: 800;
  letter-spacing: .14em;
}

.policy-page section {
  margin-top: 26px;
}

.policy-page h2 {
  margin: 0 0 8px;
  font-size: 1.16rem;
}

.policy-page p { margin: 10px 0 0; }

.policy-page ul,
.policy-page ol {
  margin: 10px 0 0;
  padding-left: 1.4em;
}

.policy-page li + li { margin-top: 5px; }

.policy-page__notice {
  padding: 18px;
  border-left: 3px solid var(--accent);
  background: var(--accent-soft);
}

.policy-page__links {
  margin-top: 30px;
  padding-top: 18px;
  border-top: 1px solid var(--border);
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.policy-page__links a {
  padding: 7px 13px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--button-bg);
  color: var(--button-text);
  text-decoration: none;
}

.policy-page__links a:hover,
.policy-page__links a:focus-visible { background: var(--button-hover); }

.policy-page__updated {
  margin-top: 30px !important;
  color: var(--muted);
  text-align: right;
  font-size: .86rem;
}

@media (max-width: 780px) {
  .other-hub-grid,
  .other-guide-links { grid-template-columns: 1fr; }

  .other-hub-card {
    min-height: 0;
    padding: 20px;
  }

  .other-hub-card p { margin-bottom: 18px; }

  .site-footer {
    align-items: flex-start;
    flex-direction: column;
    gap: 10px;
  }

  .site-footer__links {
    justify-content: flex-start;
    font-size: .78rem;
  }
}

/* NV1.1.2a: independent overview and Google Map panels */
.spot-overview-map-pair {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: start;
  gap: clamp(20px, 3vw, 30px);
}

.spot-overview-map-pair > .spot-detail-section,
.spot-overview-content,
.spot-map-section {
  min-width: 0;
}

.spot-map-section h2 {
  font-size: clamp(1.15rem, 1.8vw, 1.55rem);
}

.spot-google-map {
  width: 100%;
  max-width: none;
  height: auto;
  aspect-ratio: 1 / 1;
  min-width: 0;
  overflow: hidden;
  border: 1px solid color-mix(in srgb, var(--spot-accent-red) 42%, var(--border));
  border-radius: 14px;
  background: rgba(0, 0, 0, .2);
}

.spot-google-map iframe {
  display: block;
  width: 100%;
  max-width: 100%;
  height: 100%;
  border: 0;
}

@media (max-width: 820px) {
  .spot-overview-map-pair {
    display: block;
  }

  .spot-google-map {
    width: 100%;
    max-width: none;
    height: auto;
    aspect-ratio: 1 / 1;
    margin-top: 0;
  }

  .spot-map-section h2 {
    font-size: 1.08rem;
  }
}

/* NV1.4.0: unvisited status and native visit-plan links. */
.spot-unvisited-badge{position:absolute;right:18px;top:14px;z-index:4;display:inline-flex;align-items:center;justify-content:center;min-width:64px;min-height:34px;padding:4px 16px;border:1px solid #d3a7b6;border-radius:50%;background:#38222e;color:#fff0f4;font-size:1rem;line-height:1.4;letter-spacing:.1em}
.spot-detail-hero.is-unvisited .back-to-prefectures--top{max-width:calc(100% - 130px)}
.spot-rating-pending{font-size:1.1rem;color:var(--muted)}
a.plan-card--linked{display:block;color:inherit;text-decoration:none;cursor:pointer}
a.plan-card--linked:hover,a.plan-card--linked:focus-visible{outline:2px solid #b87c92;outline-offset:3px}
.plan-card__spot{overflow-wrap:anywhere;min-width:0}
.plan-name-options{font-size:.85em}
.plan-card__spot a{text-decoration:underline;text-underline-offset:.18em}
