.places-shell { max-width: 1120px; padding-top: clamp(16px, 3vw, 36px); }
.places-shell .article-hero { margin-bottom: 1rem; }
.places-shell .article-hero h1 { font-size: clamp(1.75rem, 3.8vw, 3rem); }
.places-shell .article-hero .lead { margin-top: 0.75rem; }
.places-shell .article-hero > p:last-child { margin: 0.75rem 0 0; }
.places-shell a { text-underline-offset: 0.18em; }
.places-shell :is(a, summary):focus-visible, .places-skip:focus-visible { outline: 3px solid #0f5f66; outline-offset: 4px; }
.places-skip { position: absolute; top: -100px; left: 1rem; padding: 0.8rem; background: #fff; z-index: 20; }
.places-skip:focus { top: 1rem; }
.places-index, .places-group { margin: 1.25rem 0; scroll-margin-top: 1rem; }
.places-group > h2 { margin-bottom: 1rem; }
.places-index h2 { font-size: 1.1rem; }
.places-index ul { display: flex; flex-wrap: wrap; gap: 0.5rem; margin: 0.5rem 0 0; padding: 8px; list-style: none; scroll-padding-inline: 8px; scroll-behavior: auto; }
.places-index a { display: flex; gap: 0.8rem; align-items: center; padding: 0.5rem 0.75rem; border: 1px solid #b8d3d1; border-radius: 10px; text-decoration: none; background: #f2f8f6; color: #164f53; }
.places-index span { font-size: 0.85rem; }
.places-related { display: flex; gap: 1.25rem; flex-wrap: wrap; }
.places-group-note { padding: 1rem 1.2rem; border-left: 4px solid #cf8441; background: #fff5e8; }
.places-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem; align-items: start; }
.place-card { border: 1px solid #c8d9d6; border-radius: 18px; padding: clamp(1rem, 3vw, 1.5rem); background: #fff; min-width: 0; overflow-wrap: anywhere; scroll-margin-top: 1rem; }
.place-card h3 { margin: 0 0 1.25rem; font-size: 1.25rem; color: #174f54; }
.place-card dl { margin: 0; }
.place-card dl > div + div { margin-top: 1rem; }
.place-card dt { font-weight: 700; font-size: 0.92rem; color: #385856; }
.place-card dd { font-weight: 400; margin: 0.35rem 0 0; line-height: 1.8; }
.place-refs { display: inline-flex; gap: 0.35rem; margin-left: 0.35rem; font-size: 0.85rem; }
.place-card footer { border-top: 1px solid #e0e9e5; margin-top: 1.2rem; padding-top: 0.7rem; font-size: 0.8rem; color: #526360; }
.place-card footer p { margin: 0 0 0.6rem; }
.place-card summary { cursor: pointer; padding: 0.4rem 0; }
.place-card ol { padding-left: 1.3rem; }
#group-kappabashi > .places-group-note { margin: 0 0 0.25rem; padding: 0 0.5rem; line-height: 1.4; }
.places-comparison { display: none; width: 100%; table-layout: fixed; border-collapse: collapse; margin: 0; }
.places-comparison caption { caption-side: bottom; padding: 0.8rem 0; text-align: left; font-size: 0.8rem; color: #526360; }
.places-comparison caption > * { display: block; }
.places-comparison-dates { margin: 0.3rem 0; }
.places-comparison th, .places-comparison td { border: 1px solid #c8d9d6; padding: 0.9rem; vertical-align: top; text-align: left; overflow-wrap: anywhere; }
.places-comparison thead { background: #eaf3f0; color: #174f54; }
.places-comparison th:first-child { width: 20%; }
.places-comparison th:last-child { width: 30%; }
.places-comparison tbody th, .places-comparison td { background: #fff; font-weight: 400; }
.places-comparison-name { font-weight: 700; color: #174f54; }
.places-comparison p { margin: 0; }
.places-comparison p + p { margin-top: 0.8rem; }
.places-comparison details { margin-top: 0.6rem; font-size: 0.8rem; color: #526360; }
.places-comparison summary { cursor: pointer; padding: 0.4rem 0; }
.places-comparison ol { padding-left: 1.3rem; }
@media (min-width: 960px) {
  .places-comparison { display: table; }
  #group-kappabashi > .places-grid { display: none; }
}
@media (max-width: 680px) {
  #group-kappabashi > h2 { font-size: 1.3rem; }
  .places-shell .article-hero .lead { font-size: 1rem; line-height: 1.5; }
  .places-shell .article-hero > p:last-child { font-size: 0.92rem; line-height: 1.5; }
  .places-shell .breadcrumb { margin-bottom: 0.35rem; }
  .places-shell .eyebrow { margin-bottom: 0.4rem; }
  .places-index, .places-group { margin: 1rem 0; }
  .places-index ul { flex-wrap: nowrap; overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; }
  .places-index li { flex: 0 0 auto; }
  .places-index li:focus-within { scroll-snap-align: center; }
  .places-index a { white-space: nowrap; scroll-margin-inline: 8px; }
  .places-grid { grid-template-columns: minmax(0, 1fr); }
}
